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

Aktuelle Zeit: So Jul 06, 2025 14:57

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Collada parsing
BeitragVerfasst: Mi Mär 24, 2010 16:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Dann biete ich noch die Lösung Blender ^^, file laden und dann in dein gewünschtes Format exportieren.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Collada parsing
BeitragVerfasst: Mi Mär 31, 2010 09:05 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
So ich habe den Collada 1.4.x C# parser fertig.
Zumindest für meinen Verwendungszweck :D

Getestet wurde das Sample Cube Beispiel aus der 1.4.1 Doku,
sowie eine komplexe Scene die aus Google Sketch kommt mit tausenden von dreiecken.

Kann also aktuell folgendes:

- Library geometries auslesen
Die Meshes werden eingeschränkt ausgelesen:
Aktuell werden nur "Polygons" und "Triangles" als primitive typ unterstüzt.
In diesen typen werden "POSITION", "NORMAL", "TANGENT", "BINORMAL" und "TEXCOORD" ausgelesen mit
Indices versteht sich (Jeder typ hat sein eigenes Indice array) ;-)

- Library visual scenes auslesen
Dazu gehört auch die Scene nodes implementierung mit Transformationen

Alle anderen sachen habe ich nicht oder nur teils implementiert.

Wobei ich denke das ich sehr flexibel programmiert habe, so das sachen nachzupflegen kein
grosses Problem ist.

Besteht hier interesse an diesem Loader ?

Wenn ja, dann werd ich das Projekt als OpenSource bereitstellen.

Die Frage hierfür die noch zu klären wäre unter welcher Lizenz, da als Anhängigkeit OpenTK besteht wegen der Vector Library und das nutzt AFAIK eine eigene Lizenz.

Ich hätte gerne eine Lizenz bei dem man es Kommerziel sowie Nicht-Kommerziel verwenden darf und das
man den Original Author + Copyright + Lizenz nennen bzw. beilegen muss.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Collada parsing
BeitragVerfasst: Mi Mär 31, 2010 09:29 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
lgpl, Apache, MIT, BSD, gpl, MPL können das alle aber die feinheiten bestimmen die Lizenz.
Apache, MIT und BSD sind die lockeren Lizenzen, wärend BSD von den 3 die lockerste ist, dann MIT und dann Apache.
Im Prinzip sagen alle 3 das gleiche nur sind alle 3 aus unterschiedlichen Zeiten und entsprechend definieren sie mehr.
Wärend BSD sehr alt ist und nur wenig fest legt ist Apache 2.0 recht neu und stopft sehr viele Lücken im Gesetzt.
Das macht sich dann in der Größe der Lizenz bemerktbar, BSD/MIT unter einer Seite und Apache 2 über 4 Seiten.
Wie gesagt sind alle 3 von Ihren Bedingungen deckungsgleich.
Google z.B. zieht Apache 2.0 den anderen Lizenzen vor, da es vor Gericht weniger Probleme macht, gerade in Bezug auf Patente.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Collada parsing
BeitragVerfasst: Mi Mär 31, 2010 15:20 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Ich bin auf ein Problem gestossen :(

Das böse hat einen namen:
"<instance_node>"

Ich hatte das komplett übersehen.
Habe das natürlich schnell eingebaut und funktioniert auch.
Das laden der instance_nodes aus den Libraries geht wunderbar.

Aber, nun bin ich auf ein Problem gestossen dass ich vorher nicht bedacht habe.

Es gibt in Collada ja verschiedene Libraries.
Libraries enthalten die eigentlichen Daten wie z.b. Geometry (Mesh), Visual scenes und die dazugehörigen Nodes usw.
Nodes können aber noch Instancen von anderen Nodes enthalten die wiederrum wieder in der Node library sind.
Instanzen sind nur referenzen auf ein Objekt in der Collada Library.

Nun aber da ist das Problem,

ich baue gerade eine Scene graph implementierung welches mein geladenes Collada auf den Bildschirm bringen soll.

Blöderweise habe ich nicht daran gedacht, das Instanzen "EXTREM" benutzt werden bei Collada,
und mein aktuelles Test model "Ein japanischer tempel" (erstellt in Google Sketchup) soviel probleme deswegen macht.

Hatte versucht die Instance_Node´s nachzurekonstrurieren, also Rekursive alle nacheiner zu erstellen.
Da aber Instanzen auch wieder Instanzen haben können, kann und wird das in einer Endlosschleife enden :(

Die Frage die sich jetzt stellt für, wie implementiere ich einen Scene Graphen der mit den Instanzen zurechtkommt ?
Also der auch wirklich Instanzen unterstützt ? Möglicherweise hab ich das ganze Konzept eines Scene Graph´s nicht verstanden ??


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Collada parsing
BeitragVerfasst: Mi Mär 31, 2010 15:40 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Eigentlich hat ein SceneGraph ja Nodes, die eine Identifikation zulassen, also Zahl oder Name oder am besten beides.
Wenn du ein Neues Node erstellen willst, dann sollte da eine Prüfung laufen ob schon existent und dann diese zurück gibt.
Aller TSceneGraphNode.GetInstance("MyIDName") oder halt mit ID.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Collada parsing
BeitragVerfasst: Mi Mär 31, 2010 17:02 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
TAK2004 hat geschrieben:
Dann biete ich noch die Lösung Blender ^^, file laden und dann in dein gewünschtes Format exportieren.


Das habe ich übrigens auch grade ausprobiert und es funktioniert leider nicht :(
Habe den mitgelieferten Collada Importer probiert (Gab nen fehler beim importieren) und
einen anderen der zwar was gemacht hatte, aber mein test modell (Der tempel) nur teilweise importiert wurde.

Somit gibt es wohl aktuell keinen funktionierenden Collada 1.4.1 importer für Blender :(

Habe gerade auch mal versucht die Original Collada Datei mit Google Sketchup zu laden.
Das lief problemlos, es kam nur ein Hinweis das möglicherweise nicht alles importiert wurde.
Sah nachdem import aber alles ok aus.

Jetzt stellt sich für mich die Frage, wie ich weiter mache.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Collada parsing
BeitragVerfasst: Mi Mär 31, 2010 17:24 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Collada ist nun mal ein Format um Daten von einem Content Tool zum anderen zu transportieren, für die praktische nutztung ist es nicht gedacht und bei weitem nicht geeignet.
Wie du schon gemerkt hast ist Collada mal riesig und völlig zugestopft mit verschiedenen Lösungsmöglichkeiten für gleiches Problem.
Wenn es dein Ziel ist es zum transport von einem Tool zum anderen zu verwenden, kannst du entweder einen bestehenden importer nutzen(nvidia, blender, assimp,...) oder deinen weiter entwickeln, bis er genug unterstützt. Solltest du ein Modelformat suchen kann ich nur von abraten weiter dran zu arbeiten.
Mir ist bis dato kein Collada Importer/Exporter bekannt, der die ganzen specs beherrscht und ich sehe das mehr als wer hat den längsten Spiel, statt ein sinnvolles format.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Collada parsing
BeitragVerfasst: Mi Mär 31, 2010 17:37 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
TAK2004 hat geschrieben:
Eigentlich hat ein SceneGraph ja Nodes, die eine Identifikation zulassen, also Zahl oder Name oder am besten beides.
Wenn du ein Neues Node erstellen willst, dann sollte da eine Prüfung laufen ob schon existent und dann diese zurück gibt.
Aller TSceneGraphNode.GetInstance("MyIDName") oder halt mit ID.


Denke ich habe eine Idee wie ich das lösen kann.
Die Node Instanzen werden zur Scene Node Root hinzugefügt und markiert.

Dann muss ich nur dafür sorgen, das solche nodes nicht Doppelt vorkommen, so wie du es beschreibst mit ID überprüfung.

Dann hätte ich in einer Scene Instanz nodes die alleine keine Funktion haben,
aber als Instanz verwendet werden können.

TAK2004 hat geschrieben:
Collada ist nun mal ein Format um Daten von einem Content Tool zum anderen zu transportieren, für die praktische nutztung ist es nicht gedacht und bei weitem nicht geeignet.
Wie du schon gemerkt hast ist Collada mal riesig und völlig zugestopft mit verschiedenen Lösungsmöglichkeiten für gleiches Problem.
Wenn es dein Ziel ist es zum transport von einem Tool zum anderen zu verwenden, kannst du entweder einen bestehenden importer nutzen(nvidia, blender, assimp,...) oder deinen weiter entwickeln, bis er genug unterstützt. Solltest du ein Modelformat suchen kann ich nur von abraten weiter dran zu arbeiten.
Mir ist bis dato kein Collada Importer/Exporter bekannt, der die ganzen specs beherrscht und ich sehe das mehr als wer hat den längsten Spiel, statt ein sinnvolles format.


Mein Ziel ist es nur meinem Tempel der halt nur im Collada format zu verfügung steht in den Speicher zu packen und den mit VBO´s bzw. erstmal plain mit glBegin() glEnd() zu rendern.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Collada parsing
BeitragVerfasst: Mi Mär 31, 2010 17:45 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Da machst du dir aber ziemlich viel arbeit, nur um das zu rendern.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 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.008s | 14 Queries | GZIP : On ]