moderiert von: Maddin
Übersicht -
Spiele Entwicklung -
Programmieren Allgemein -
3DS-Loader| 3DS-Loader | ||
|---|---|---|
| uNiQue | verfasst: 09.02.2010, 12:46 | |
1988 Erlang
registriert: Mrz. 2004
Beiträge: 135
Status: offline letzter Besuch: 14.05.10 |
hat hier schonmal jemand einen 3DS-loader geschrieben, der richtig funktioniert? ich kann mit meinem zwar theoretisch alle möglichen modelle reinladen, aber bei manchen stimmen die transforms nicht, so dass einzelne teile des modells nicht an der richtigen stelle sitzen. laut spezifikation sind ja alle vertices in globalen koordinaten angegeben, so dass man die transforms eigentlich überhaupt nicht braucht. allerdings passt das wie gesagt bei vielen modelle nicht, wenn man sich daran hält. ich habe mal in das blender-importscript reingeschaut... das hat das gleiche problem => hier wird dem benutzer aber die möglichkeit gegeben, vor dem importieren die option "Transform Fix" einzuschalten. je nach modell stimmen dann die objekt-positionen entweder mit ein- oder ausgeschalteter fix-option. das einzige, was die option bewirkt ist, dass sämtliche vertices eines objekts mit der inversen des zugehörigen transforms multipliziert werden. das würde dann heissen, dass hier die vertices nicht nur nicht-lokal gespeichert sein müssten, sondern nochmal zusätzlich mit dem objekt-transform multipliziert wurden... also: objectTransform * objectTransform * localVertex ... und das macht irgendwie keinen sinn, oder? => das ergebnis ist so allerdings für die meisten modelle korrekt. wie gesagt: für die meisten. inzwischen habe ich auch modelle gefunden, die weder mit noch ohne transform-fix richtig importiert werden. es gibt aber programme (cinema 4D, glc_player, ...), die die modelle trotzdem richtig importieren (zumindest was die objekt-positionen angeht). da stellt sich die frage: was ist deren geheimnis? ich habe inzwischen schon alles an spezifikationen gelesen, was ich finden konnte. eine theorie wäre noch, dass die keyframer-daten mit einbezogen werden müssen... allerdings habe ich da auch schon alles mögliche probiert, und nichts hat richtig funktioniert. es gibt da auch so viele möglichkeiten, was und in welcher reihenfolge man wie transformieren muss (position-/scale-/rotation-keyframes, pivot points, objekt-matrix, usw., usw.). hat da jemand eine ahnung? ________________________ -= Zwei Eier in der Pfanne. Sagt das eine : "Heiss hier!" - Sagt das andere : "Waaah !! Ein sprechendes Ei !!" =- |
|
| Maddin | verfasst: 09.02.2010, 17:18 | |
2115 Loga
registriert: Mrz. 2004
Beiträge: 1182
Status: offline letzter Besuch: 19.07.10 |
Nein die sind nicht zwingend im globalen Koordinatensystem. Im 3DS Formats gibt es chunks die Matrizen mit den entsprechenden Transformationen enthalten aber meine Erfahrung war, dass die meisten Exporter das schon falsch machen. Überprüfe mal ob du das in 3DS exportierte Modell in das gleiche Programm fehlerfrei auch wieder rein laden kannst. .. hhmm ok das hast du auch schon gesagt les ich gerade ... Also das Geheimnis könnten undokumentierte chunks sein. Ich würde mir an deiner stelle aber gar nicht mehr die Mühe mit 3DS machen. Es gibt ja noch genug andere Formate. Naja und für den Embedded bereich bietet sich sowieso an ein eigenes schlankes Format zu nehmen das die Daten schon so enthält wie man die im Speicher dann liegen haben will. Sowas hatte ich auch mal bei Siemens definiert ka ob die das jetzt wirklich verwenden. ________________________ May the schwarz be with you! |
|
| intripoon | verfasst: 09.02.2010, 17:25 | |
1999 D
registriert: Apr. 2006
Beiträge: 261
Status: offline letzter Besuch: 08.09.10 |
Zum 3ds format kann ich nix sagen, aber ich muss zur generellen problematik mal sagen, dass das alles immer voll fummelig ist. Da gibts immer so komische probleme dass 90% der modelle funktionieren und ein paar irgendwie nicht. Und irgendwelche anderen tools/programme kommen dann damit klar, und die dafür dann mit anderen modellen nicht. Dabei könnte es doch theoretisch ähnlich simple sein wie bei 2d Bilddaten. Eine Library wie freeimage für 3d modelle die einfach jeder benutzt und es einfach funktioniert wäre prima ________________________ Millenium Project Enterprises http://www.mpe-online.org |
|
| uNiQue | verfasst: 10.02.2010, 09:58 | |
1988 Erlang
registriert: Mrz. 2004
Beiträge: 135
Status: offline letzter Besuch: 14.05.10 |
das könnte man annehmen, weil in den meisten inoffiziellen specs nicht darauf eingegangen wird... tatsächlich ist es aber so, dass die koordinaten global sind, und die matrix-chunks nur vom keyframer verwendet werden, um die globalen wieder in lokale koordinaten zurückzurechnen, um dann die keyframe-transforms darauf anzuwenden. ich zitiere aus der offiziellen spezifikation: und: so, wie man sich logisch zusammenreimen könnte, dass die koordinaten global sind, und die zugehörige matrix immer angewendet werden muss, funktioniert nur deshalb in so vielen fällen, weil bei den meisten objekten das objekt-transform identity ist. wenn ich selber 3DS-objekte gebaut habe, habe ich bis jetzt auch immer darauf geachtet, NUR die vertices zu positionieren, und das objekt an sich immer im ursprung zu lassen... weil ansonsten mein loader nicht funktioniert hat. das hat sich jetzt, nachdem ich die koordinaten als global ansehe geändert. allerdings funktionieren einige wenige modelle, wie beschrieben, immer noch nicht. der loader ist nicht für embedded. habe den embedded-post unabhängig von dem hier geschrieben. ich arbeite doch gerade an diesem wohnungsplaner, und wir wollen unbedingt import-formate anbieten. 3DS sollte nach möglichkeit dabei sein, weil (immer noch) weit verbreitet. solange ich aber das mit 3DS nicht 100%ig hinbekomme, arbeite ich jetzt erstmal an einem Collada-importer. ________________________ -= Zwei Eier in der Pfanne. Sagt das eine : "Heiss hier!" - Sagt das andere : "Waaah !! Ein sprechendes Ei !!" =- |
|
| Maddin | verfasst: 10.02.2010, 17:38 | |
2115 Loga
registriert: Mrz. 2004
Beiträge: 1182
Status: offline letzter Besuch: 19.07.10 |
Ach so verstehe. Ja gut dann lohnt es vielleicht doch mehr Aufwand zu betreiben und mal diverse einfach Modelle in den verschiedensten Programmen zu generieren und dann chunk für chunk zu vergleichen etc. Viel Spaß. ________________________ May the schwarz be with you! |
|
