Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

21

19.01.2011, 14:01

exakt

22

22.01.2011, 14:29

Ich missbrauche diesen Thread nocheinmal ^^ !

Ich habe ASSIMP bei mir eingebunden und habe auch schon ein Modell import im .obj Format. Kann es sein dass das .obj Format keine Bones unterstützt ? Wenn ja was für ein Format könnte ich dann nehmen um Bones und Animationen aus Maya zu exportieren. Hat jemand eine Idee ?

Vielen Dank , Gruß´

gamer1208

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

23

22.01.2011, 15:50

Collada kann. Es gibt mit OpenCollada einen soliden Exporter für Max und Maya, und Assimp lädt die auch alle sauber. Allerdings ist Collada ein abartig komplexes Format - Überraschungen können also immer kommen.

Daneben können auch Doom3 .md5-Models und Direct3D .x Dateien mit Bones und Bone Animations umgehen. Beide werden relativ zuverlässig von Assimp geladen, aber die Exporter dafür sind von durchwachsener Qualität.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

buggypixels

Treue Seele

Beiträge: 125

Wohnort: Meerbusch

Beruf: Programmierer

  • Private Nachricht senden

24

25.01.2011, 12:47

Muss ich mir aus den einzelnen Meshes, Vertex für Vertex rausholen und diesen dann in den VertexBuffer kopieren ?

Jap (wie schon angesprochen gibt es in D3DX9 und 10 auch noch den D3DXMesh Kram aber das würd ich lassen und es gleich ordentlich machen).
Aha. Wo ist denn Dein Problem mit dem D3DXMesh? Wo kommst Du darauf, dass Du das besser machen kannst? Kennst Du den Source Code der Implemetierung?
Ich würde solchen Unfug nicht einfach verbreiten, weil gerade Anfänger dann nachher so etwas glauben und wie in Deinem Fall einfach weiterplappern.
Was ist denn dieses D3DXMesh überhaupt. Es ist ein Vertexbuffer zusammen mit einem Indexbuffer. Der wird durch Subsets in einzelne Teile unterteilt. Dadurch kann man perfekt unterschiedliche Teile eines Modells rendern. Aus Performancegründen verwendet man nämlich einen Streamsource mit ALLEN Vertices und Indices und dann werden diese separat gerendert. Jedem Subset kann man dann noch unterschiedliche Materialien und Shader etc. zuordnen. Ich finde das recht gut. Dazu kommen noch eine Menge an äußerst nützlichen Hilfsfunktionen wie das berechnen von Normalen, Tangenten und Bitangenten die für eine Beleuchtung und NormalMapping nötig sind.
Also wo ist Dein Problem? Oder besser, wie willst Du das denn besser machen???

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

25

25.01.2011, 13:39

Aha. Wo ist denn Dein Problem mit dem D3DXMesh? Wo kommst Du darauf, dass Du das besser machen kannst? Kennst Du den Source Code der Implemetierung?

Nein ich kenne den Source Code der Implementierung natürlich nicht und das ist auch komplett irrelevant.

Was ist denn dieses D3DXMesh überhaupt. Es ist ein Vertexbuffer zusammen mit einem Indexbuffer. Der wird durch Subsets in einzelne Teile unterteilt. Dadurch kann man perfekt unterschiedliche Teile eines Modells rendern. Aus Performancegründen verwendet man nämlich einen Streamsource mit ALLEN Vertices und Indices und dann werden diese separat gerendert.

Das ist alles richtig. Richtig ist aber auch dass es trivial ist sich sowas selbst zu bauen.

Dazu kommen noch eine Menge an äußerst nützlichen Hilfsfunktionen wie das berechnen von Normalen, Tangenten und Bitangenten die für eine Beleuchtung und NormalMapping nötig sind.
Also wo ist Dein Problem? Oder besser, wie willst Du das denn besser machen???

Ja das ist alles schön und gut, sehr praktisch und so, da sag ich auch gar nix dagegen. Nur bezahlt man diesen Komfort indem man sich in ein relativ starres Korsett zwingt und genau das ist warum ich davon abrate ID3DXMesh zu verwenden. Im professionellen Umfeld wird es genau darum auch überhaupt nicht eingesetzt. Mit D3D11 ist das D3DXMesh letztendlich auch komplett verschwunden. Einer der Hauptzwecke war wohl der Umgang mit .x Files welche schon seit langer Zeit deprecated sind. Ab D3D10 war D3DXMesh in meinen Augen eher nurmehr für die Verwendung in den SDK Samples gedacht, anstatt von .x wurde afaik ein eigenes Format dafür eingeführt. Abgesehen von all dem bindet man sich durch die Verwendung von D3DXMesh an die D3DX Bibliothek, was nicht immer unbedingt wünschenswert ist.

Es ist imo eine sehr sehr lehrreiche Erfahrung sich selbst eine Meshklasse zu schreiben und darum würde ich jedem Anfänger zu Herzen legen das auch zu tun anstatt mit einer fertigen BlackBox zu hantieren. Einmal gemacht hat man dann seine eigene Klasse die man beliebig erweitern kann. Jemandem dem es mehr um die Umsetzung seines Spiels als um die Technik geht würde ich gleich eine fertige Engine empfehlen.

Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von »dot« (25.01.2011, 14:04)


buggypixels

Treue Seele

Beiträge: 125

Wohnort: Meerbusch

Beruf: Programmierer

  • Private Nachricht senden

26

25.01.2011, 14:29

Mit der Erklärung wird es alles schon etwas klarer. Du hast natürlich völlig recht. Auch ich verwende meine eigene Implementierung.
Aber der Fragesteller macht jetzt nicht den Eindruck, als ob er schon soweit wäre und ihn dann mit so einer kurzen Antwort und
ohne Begründung abzuspeisen ist etwas unpassend.
Er sollte sich auf alle Fälle einmal mit der D3DXMesh auseinandersetzen, damit er zumindest weiss, was es ist und damit er weiss,
wie er dann mal prinzipiell seine eigene Implementierung angehen sollte.

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

27

25.01.2011, 14:53

Das hätte man auch weniger offensiv ansprechen können..

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

28

25.01.2011, 14:55

Aber der Fragesteller macht jetzt nicht den Eindruck, als ob er schon soweit wäre und ihn dann mit so einer kurzen Antwort und ohne Begründung abzuspeisen ist etwas unpassend.

Er hat doch danach gefragt wie er Modelldateien laden kann und das wurde im Laufe des Thread zu seiner Zufriedenheit diskutiert. Aus oben genannten Gründen sehe ich keinen Anlass warum man ID3DXMesh in diesem Zusammenhang näher erwähnen sollte. Das .x Format ist wie gesagt veraltet, wo anders als in den SDK Samples hat ID3DXMesh nie ernsthaft Verwendung gefunden und mit der letzten Version von Direct3D wurde das Schicksal von ID3DXMesh endgültig besiegelt. Abgesehen davon finde ich absolut nicht dass man ID3DXMesh als Prototypen wie eine gute Meshklasse aussehen sollte heranziehen kann, ganz im Gegenteil. Darum habe ich es lediglich im Vorbeigehen erwähnt, für den Fall dass er mal irgendwann drauf stoßen sollte, mit dem Ziel ihm zu vermitteln dass er es dann getrost ignorieren kann.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (25.01.2011, 15:04)


29

26.01.2011, 08:29

Guten Morgen zusammen,

also um nur mal kurz auf mein "in der Lage sein" einzugehen: Ich halte mich für einen recht ordentlichen Programmierer, vor allem in C# aber auch C++, mit einem guten Verständnis für OOP (Objektorientierte Programmierung). In Sachen DirectX habe ich jetzt zwar noch nicht soo viel Erfahrung aber ich würde von mir behaupten das ich so langsam die Basics verstehe ;) .

Mittlerweile habe ich es deshalb auch geschafft mir eine eigene Mesh-Klasse zu bauen und dort einen Vertex und Index Buffer anzulegen. Diese hab ich mit den passenden Modelldaten befüllt. ID3DXMesh habe ich dabei nicht benutzt. Im Nachhinein betrachtet fand ich die ganze Sache sogar relativ Trivial.


Eine andere Sache gibt es da noch. Ich habe festgestellt, dass mir immer mal wieder so ein paar kleinere Verständnis fragen auf der Seele brennen, die vermutlich mit einer einfachen Antwort geklärt werden könnten. Da ich dafür immer so ungern einen eigenen Thread eröffne, wäre mein Vorschlag ob man nicht vielleicht einen Thread auf macht für genau solche kleinen, schnell zu beantworteten Fragen. "Fragen / Antwort Thread" oder irgendwie sowas.

Ist wie gesagt nur ein Vorschlag, ich kann sonst auch jedesmal einen neuen Thread aufmachen :P


Viele Grüße

-gamer1208-

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

30

26.01.2011, 08:43

Eine andere Sache gibt es da noch. Ich habe festgestellt, dass mir immer mal wieder so ein paar kleinere Verständnis fragen auf der Seele brennen, die vermutlich mit einer einfachen Antwort geklärt werden könnten. Da ich dafür immer so ungern einen eigenen Thread eröffne, wäre mein Vorschlag ob man nicht vielleicht einen Thread auf macht für genau solche kleinen, schnell zu beantworteten Fragen.

Mach einfach einen Thread dafür auf ;)
Das Problem wenn man viele, wenn auch kurze, verschiedene unzusammenhängende Fragen in einen gemeinsamen Thread packt ist dass das ganze sehr schnell sehr unübersichtlich wird. Wenn dann mal jemand die gleiche Frage hat wird er die Antwort auf Seite 241 dort dann kaum finden...

Werbeanzeige

Ähnliche Themen