Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 07:00

Foren-Übersicht » Sonstiges » Meinungen zu den Projekten
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: @Restless
BeitragVerfasst: Fr Jul 24, 2009 20:25 
Offline
DGL Member
Benutzeravatar

Registriert: So Feb 06, 2005 17:29
Beiträge: 187
Programmiersprache: C, C++
Ich bin endlich mal dazu gekommen das Restless Fileformat auszuprobieren. Ich finde dieses Projekt sehr gut und bin Conan, MatReno und Lord Horazont sehr dankbar.
Leider gibt es bei mir Probleme den Loader unter Linux zu benutzen. Ich habe eine libRestless.so mit dem fpc kompiliert. Dazu musste ich ausser den Delphi-Mode zu aktivieren noch die Zeile
Code:
  1. {$R *.res}
auskommentieren. Zudem bekam ich folgende Warnung:
Code:
  1. ld: warning: creating a DT_TEXTREL in object

Laut Nachforschungen sollte man das -fPIC bzw. -Cg Flag verwenden. Die Warnung blieb jedoch auch dann weiterhin bestehen. Ich bin mir jetzt nicht sicher ob sich die aktuelle Version des FPC ueberhaupt zum erstellen von shared libraries unter Linux eignet.

Da die libRestless.so aber zumindestens erstellt wurde, fuhr ich fort: Das daraufhin kompilierte erste Demoprogramm gab sofort beim Start eine "unhandled exception" von sich. Interessanterweise passiert das nicht, wenn ich statt dem Kran-Modell das Kaenguruh lade. Die Seerose funktioniert auch, nur gibt es da eine "unhandled exception", sobald man die Animation startet.
Ueberzeugt, dass die Fehler von einer fehlerhaften libRestless.so stammen, habe ich die Library in eine Unit umgemodelt und per uses in das Demoprogramm eingebunden. Leider verhaelt sich das kompilierte Ergebnis genauso wie die Variante mit der Library.
Hat jemand vielleicht einen Tipp, was ich tun koennte, um den Fehler weiter einzugrenzen?


So siehts aus, wenn der Kran geladen werden soll:
Code:
  1. An unhandled exception occurred at $0809EDBB :
  2. EDivByZero : Division by zero
  3.   $0809EDBB
  4.   $08098FAC
  5.   $0809AB90
  6.   $0809A63F
  7.   $0809588C
  8.   $08048A76
  9.   $08049370

_________________
Flummi: Projektseite und Projektthread


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 24, 2009 21:05 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Könnte es sein, dass das damit zusammenhängt? Ansonsten, ich habe die Lib unter Linux getestet, und fest einkompiliert gab es eigentlich keine Probleme. Da ich aber morgen für eine Woche zum DGL-Treffen fahre, wird das nichts mehr mit Debuggen.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 06, 2009 16:02 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
So, nun bin ich wieder da und MatReno hat freundlichweise Gedächtnisserweiterung gespielt und mich an diesen Thread erinnert. Hat sich da jetzt was ergeben? lag die DivZero an dem bekannten Problem in der dglOpenGL.pas oder liegt es definitiv an Restless?

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 09, 2009 20:22 
Offline
DGL Member

Registriert: Do Jun 28, 2007 17:58
Beiträge: 193
Programmiersprache: Pascal, C
Hallo,

wie im Andorra 2D-Projektthread beschrieben, bin ich gerade dabei einen Loader für Restless zu schreiben. Dabei habe ich folgendes Problem mit dem Dateiformat:

Jede einzelne Animation wird ja in eine extra Datei ausgelagert. Mein Andorra 2D-Loader setzt allerdings voraus, dass das gesamte Mesh und alle dazugehörigen Animationen in einer Datei/Stream vorliegen. Nun könnte man ja einfach die *.rlsani Dateien an das Ende der *.rlsobj Datei kopieren. Das setzt allerdings voraus, dass es ein Tag wie "newanim [name]" gibt.

Also quasi folgende Struktur, wenn die Animation in der *.rlsobj Datei drin steht:

Zitat:
newanim [name]
as [armature_size]
k [time]
b [bone_id] [x] [y] [z] [qw] [qx] [qy] [qz]


Ich werde das auf jeden Fall so in meinen Lader implementieren und es wäre schön, wenn ihr eure Spezifikation/Implementierung entsprechend anpassen könntet (wenn euch diese Erweiterung sinnvoll erscheint).

Außerdem habe ich vor, in meinen Lader das Mischen von Animationen einbauen, wie dies zum Beispiel in Cal3D geschieht. Mein momentaner Ansatz sieht vor die einzelnen Bone-Animationen gewichtet zu addieren. Hat jemand schon mal Erfahrungen damit gehabt? Funktioniert das so überhaupt?

_________________
http://audorra.sourceforge.net//http://andorra.sourceforge.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 10, 2009 12:41 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Hey, klar kannste das FileFormat ändern und die rlsani an die rlsobj hängen.
Es war halt so gedacht, dass man mehreren objekten mit derselben bone struktur dieselben animationen zuweisen kann.
Alternativ kannste ja noch alles in ein selber definiertes Container format schreiben, falls dir das sinnvoll erscheint.

Zitat:
Außerdem habe ich vor, in meinen Lader das Mischen von Animationen einbauen, wie dies zum Beispiel in Cal3D geschieht. Mein momentaner Ansatz sieht vor die einzelnen Bone-Animationen gewichtet zu addieren. Hat jemand schon mal Erfahrungen damit gehabt? Funktioniert das so überhaupt?
Ja, dasrüber haben wir auch nachgedacht, aber es ist in Restless momentan nicht möglich.

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Restless
BeitragVerfasst: Fr Nov 13, 2009 15:27 
Offline
DGL Member

Registriert: Sa Mär 14, 2009 17:48
Beiträge: 99
Programmiersprache: D, Java, C++
Hi,

also mir sind im laufe der Zeit mehrere Fragen aufgekommen, da ich Delphi Code kaum nachvollziehen kann hilft mir eure Implementierung auchnicht sonderlich weiter ;-).

Folgendes:
1. Einem Material können 0-n Texturen zugewiesen werden, korrekt? Wenn ja wie werden die Textur Koordinaten der einzelnen Texturen angegeben? Oder sind diese grundsätzlich für jede Textur gleich?
2. Dieser block bereitet mir immer wieder Kopfschmerzen:

Zitat:
v [x] [y] [z] ([bone_id] [weight])*
o [object_name]
mtl [material_name]
uv [u] [v]
f ([vertex_id]/[uv_id])3 [s or f]
g ([vertex_id])3 [s or f]
(op [data_type] [property_name]
opval [data])*


Dieser Block kann mehrfach vorkommen, mir ist allerdings nicht ganz klar wieso der Block dann so aufgebaut ist. Folgendes:

Scheinbar wird für jedes Objekt im Model dieser Block benutzt, soweit so logisch. Aber wieso stehen die Vertizes nicht einmal gesammelt für alle Objekte in dem File? Wieso stehen über jedem Objekt Block die Vertizes für ebendieses?

So wie es jetzt ist könnte man meinen das jedes Objekt seine eigenen Vertizes hat, aber so muss es ja garnicht sein, da die Vertizes nicht für jedes Objekt neu indiziert werden, sondern einfach fortlaufend nummeriert sind.

Beispiel (ist):
Zitat:
v 1 1 1
v 2 2 2
v 3 3 3
o obj_1
g 0 1 2 f

v 4 4 4
o obj_2
g 0 3 1 // Man beachte: 0 und 1 beziehen sich auf die bei obj_1 definierten Vertizes



Es gäbe meiner Meinung nach 2 Sinnvolle Lösungen um diese Logischen inkonsistenz aufzulösen:

1. Vertizes einmal gesammelt für alle Objekte aufzählen: Sinnvoll da doppelte Vertizes vermieden werden können.
Beispiel:
Zitat:
v 1 1 1
v 2 2 2
v 3 3 3
v 4 4 4

o obj_1
g 0 1 2
g 1 2 3

obj_2
g 2 3 1
g 2 1 3


2. Vertizes weiterhin für jedes einzelne Objekt aufzählen, dann allerdings unter dem Eintrag "o ..." damit die Zugehörigkeit sichtbar wird und die Indizes für jedes Objekt wieder bei 0 beginnen lassen.
Beispiel:
Zitat:
o obj_1
v 1 1 1
v 2 2 2
v 3 3 3
g 0 1 2 f

o obj_2
v 1 1 1
v 4 4 4
v 2 2 2
g 0 1 2



Bei den UV Koordinaten bin ich mir nicht sicher wie das da läuft, wenn es intuitiv wäre würden die für jedes Objekt wieder bei 0 beginnen, da diese unter dem "o ..." Eintrag stehen.
Ist aus den Beispielen jedoch nicht nachzuvollziehen, da es kein Model mit mehreren Objekten und Texturen gibt.

Mein Vorschlag auch hier: UV Koordinaten einmal in einem Block definieren und bei den Objekten nurnoch die Faces mit Vertex- und Texturkoordinaten-ids definieren.



Allerdings kann es natürlich auch sein, dass ich einfach nur Unsinn schreib, für den Fall hätte ich gerne Erklärungen wieso der Block so aufgebaut ist wie er aufgebaut ist ;).

Grüße,
Skeptiker


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Restless
BeitragVerfasst: Fr Nov 13, 2009 15:42 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich kann mir gut vorstellen, dass das einfach Bequemlichkeit ist. So ist es doch ziehmlich einfach zu laden: Die Vertices sind garantiert in der Datei vorhanden (also schon darüber, vor der Referenz), sobald auf sie in einem Face referenziert wird. Und es kann dennoch platz gespart werden, indem doppelte nicht vorkommen (?).

Zu den UV-Koordinaten kann ich dir jetzt nichts sagen ...

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Restless
BeitragVerfasst: Fr Nov 13, 2009 15:50 
Offline
DGL Member

Registriert: Sa Mär 14, 2009 17:48
Beiträge: 99
Programmiersprache: D, Java, C++
Lord Horazont hat geschrieben:
Ich kann mir gut vorstellen, dass das einfach Bequemlichkeit ist. So ist es doch ziehmlich einfach zu laden:


Es wäre aber doch beispielsweise deutlich leichter, wenn alle Vertizes einmal am Anfang der Datei stehen, und darunter nurnoch die Objekte mit der Referenz auf die Vertizes, und nicht für jedes Objekt ein eigener Vertex Block, auf den dann doch wieder alle Objekte zugreifen können.

Lord Horazont hat geschrieben:
Die Vertices sind garantiert in der Datei vorhanden (also schon darüber, vor der Referenz), sobald auf sie in einem Face referenziert wird.


s.o. so wie es da beschrieben ist sind die Vertizes auch auf jedenfall vorhanden, sogar schön Zentral an einer Stelle, und nicht so wie jetzt quer durch die Datei verteilt ;-).

Klar funktioniert es so wies jetzt ist, aber logisch ist es irgendwie nicht, alles ist verteilt durch das Objektfile verstreut, was spräche gegen den Aufbau:

Zitat:
v 1 1 1
v 2 2 2
v 3 3 3
v 4 4 4
...
uv 0.1 0.1 0.1
uv 0.2 0.2 0.2
...

o obj_1
f 1/1 2/2 3/3 f
f 2/2 3/3 4/4 f
f 3/3 2/2 1/1 f
...

o obj_2
g 3/3 2/2 1/1 f
g 2/2 3/3 1/1 f
...


Dieser Aufbau würde das laden sogar noch weiter vereinfachen, da ich nicht immer zwischen den verschiedenen States wechseln muss: Mal Vertizes, mal Objekte, Mal UV, mal Faces, ... sondern immer alles schön am Stück hätte.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Restless
BeitragVerfasst: Fr Nov 13, 2009 16:03 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Mhm, auf der Loaderseite ist das so richtig. Aber beim Schreiben ist es ein deutlich größerer Aufwand, da man erst alle Vertices schreiben, dann wieder alle Objekte durchgehen für die UV-Koordinaten und dann nochmal alle Objekte durchgehen müsste für all die anderen Informationen.

Da denke ich, dass der eher weniger aufwendige Statewechsel [eigentlich ist es keiner, da jede Zeile für sich betrachtet werden kann, sieht man von der Zugehörigkeit von Faces und Materials zu einem Objekt ab, und die wechselt nicht dauernd] keine Zumutung ist... Allerdings würde ich langsam auch gerne mal eine Meinung von den eigentlichen Entwicklern dieses Formats lesen ...

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Restless
BeitragVerfasst: Do Jan 07, 2010 14:58 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Hallo, also erstmal: ich (wir) leben noch. Jedoch ist privates programmieren leider aus Zeitgründen stark vernachlässigt worden. Daher auch meine lange Abwesenheit im Forum hier. Hab's nur zufällig entdeckt.

Also, wenn es noch interessiert, kann ich gerne schreiben, was wir uns dabei gedacht haben, wenn ich mich noch richtig erinnere... :roll:

Lord Horazont hat geschrieben:
Ich kann mir gut vorstellen, dass das einfach Bequemlichkeit ist. So ist es doch ziehmlich einfach zu laden: Die Vertices sind garantiert in der Datei vorhanden (also schon darüber, vor der Referenz), sobald auf sie in einem Face referenziert wird. Und es kann dennoch platz gespart werden, indem doppelte nicht vorkommen (?).
Das ist tatsächlich der Hauptgrund gewesen. Es war auch im python Exporter wesentlich einfacher.
Da es absehbarer Zeit Blender 2.6 geben wird, und sich bei der Python-Blender Schnittstelle einiges ändert, muss sowieso "demnächst" ein neuer Exporter geschrieben werden.

Ich darf nochmal daran erinnern, dass Restless für uns ein Pilot-Projekt gewesen ist. Das heisst, wir haben durch Restless hauptsächlich gelernt Animationen zu implementieren. Daher ist auch das FileFormat nicht besonders ausgeklügelt. Aber es besteht die Möglichkeit UV Koordinaten pro Objekt zu minimieren, d.h. doppelte Koordinaten zu entfernen.

Natürlich wäre es auch denkbar gewesen, dass alle Vertices untereinander stehen und ebenso alle UV Koordinaten.
Damit müsste der Loader auch klar kommen, denke ich, jedoch ist es im Exporter mehr Arbeit.
Aber wie gesagt, ein Neuschreiben des Exporters ist wohl die einzige Möglichkeit um mit der neuen Blender version mitzuhalten. Dann kann man diese Trivialität mit erledigen.

Ich hoffe, dieser Beitrag ist noch von Relevanz für Skeptiker. :?

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Restless
BeitragVerfasst: Do Jan 07, 2010 15:22 
Offline
DGL Member

Registriert: Sa Mär 14, 2009 17:48
Beiträge: 99
Programmiersprache: D, Java, C++
Hi,
Wunderbar zu hören, dass es einen Exporter für Blender 2.6 geben wird :-). Ich fände es natürlich super, wenn am Dateiformat ein wenig nachgebessert wird, ihr habt euch ja mit der Versionsnummer im Header alle Freiheiten der Welt gelassen, ich hab selbst schon darüber nachgedacht ein wenig rumzubasteln, aber Python ist mir nicht ganz geheuer, und in Blender kenn ich mich auchnicht wirklich aus ;-), deswegen hab ich meinen Loader erstmal soweit implementiert, dass er mit dem jetzigen Format klarkommt, dass Laden könnte man durch optimieren der Filespezifikationen zwar noch deutlich beschleunigen (Ich Prüfe bei jedem Face ob die zugehörigen Vertizes schon existieren, wenn nein wird ein neues Vertex angelegt und mit einem Index versehen, wenn ja wird der index des bereits vorhandenen Vertex genutzt). So habe ich mit Sicherheit mein VBO maximal minimiert. Bei dem "kang.rlsobj" Model sieht das bei mir dann so aus: "Vertices: 3546, Indices: 21264".

Ich wäre außerdem Froh wenn die Frage mit den Texturen noch beantwortet werden würde:
"1. Einem Material können 0-n Texturen zugewiesen werden, korrekt? Wenn ja wie werden die Textur Koordinaten der einzelnen Texturen angegeben? Oder sind diese grundsätzlich für jede Textur gleich?"

Viele Grüße,
Skeptiker


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Restless
BeitragVerfasst: Fr Jan 08, 2010 15:03 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Soweit ich das richtig sehe, kann man einem Material mehrere Texturen zuweisen, so wie sie in Blender definiert sind. Das geht also. Nachteil: die Texturkoordinaten sind die von der ersten Textur. D.h. Alle Texturen haben die gleichen Texturkoordinaten, was ja für viele Fälle auch ausreicht (Colormap, Bumpmap, Specularmap).
Aber mit dem neuen Exporter werde ich das berücksichtigen, und es wird zu Änderungen an der FileSpec kommen.
Restless anschließend wieder upzudaten wird ne qual. :shock:

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Restless
BeitragVerfasst: Do Jan 21, 2010 17:30 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hier brauch wohl jemand euren Support: Link

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Restless
BeitragVerfasst: Sa Mär 31, 2012 10:44 
Offline
DGL Member
Benutzeravatar

Registriert: So Feb 06, 2005 17:29
Beiträge: 187
Programmiersprache: C, C++
Gibt es eigentlich noch eine Möglichkeit an den Restless Quellcode heranzukommen? Die Links hier im Forum sind tot und auf meinem Rechner finde ich leider nichts mehr.

_________________
Flummi: Projektseite und Projektthread


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: @Restless
BeitragVerfasst: Di Apr 03, 2012 16:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Hab ne alte Version rumliegen. Werde die hier nicht hochladen, aber auf anfrage per PM mit Mailadresse gerne.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Foren-Übersicht » Sonstiges » Meinungen zu den Projekten


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 15 Queries | GZIP : On ]