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

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

1

08.08.2010, 20:46

3DS Mesh Format: Problem mit Rotations Keyframe

Hallo,
Ich hoffe ein paar von euch kennen sich mit dem 3DS Datei Format aus. Ich schreibe gerade den 3DS Mesh loader komplett neu und stehe natürlich immer noch vor dem Problem, dass ich nicht weiß, wie ich die Vertex Daten in die einzelnen Surfaces aufteilen soll.
Ich habe ein 3D Pistolen Modell im 3DS Format und in Blender wird es richtig geladen. Es hat zwei Texturen und die sollen nicht übereinander liegen, also muss das Modell aus zwei Surface (oder SubMeshes) bestehen. Aber in dem Modell gibt es nur ein Mesh Chunk (ID: 0x4100). Wie kann ich ermitteln, welche Vertices zu welchem Surface gehören?
Das ist die Struktur meiner Chunk IDs:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
        enum EMesh3DSChunks
        {
            CHUNK_MAGICNUMBER       = 0x4D4D,
                CHUNK_VERSION           = 0x0002,
                
                CHUNK_EDIT              = 0x3D3D,
                    CHUNK_EDIT_SCALE        = 0x0100,
                    
                    CHUNK_EDIT_OBJECT       = 0x4000,
                        CHUNK_OBJECT_MESH       = 0x4100, // MESH CHUNK (leider nur eins in meinem Modell)
                            CHUNK_MESH_VERTICES     = 0x4110,
                            CHUNK_MESH_TRIANGLES    = 0x4120,
                            CHUNK_MESH_MATERIAL     = 0x4130,
                            CHUNK_MESH_TEXCOORDS    = 0x4140,
                            CHUNK_MESH_MATRIX       = 0x4160,
                    
                    CHUNK_EDIT_MATERIAL      = 0xAFFF,
                        CHUNK_MATERIAL_NAME          = 0xA000,
                        CHUNK_MATERIAL_DIFFUSE       = 0xA020,
                        CHUNK_MATERIAL_TEXMAP        = 0xA200,
                        CHUNK_MATERIAL_MAPFILE       = 0xA300,
                
                CHUNK_KEYFRAME          = 0xB000,
                    CHUNK_KEYFRAME_CURTIME  = 0xB009,
                    CHUNK_KEYFRAME_TRACK    = 0xB002,
                        CHUNK_TRACK_BONENAME    = 0xB010,
                        CHUNK_TRACK_PIVOTPOINT  = 0xB013,
                        CHUNK_TRACK_BOUNDBOX    = 0xB014,
                        CHUNK_TRACK_BONEPOS     = 0xB020,
                        CHUNK_TRACK_BONEROT     = 0xB021,
                        CHUNK_TRACK_BONESCL     = 0xB022,
                        CHUNK_TRACK_NODE_ID     = 0xB030,
        };

Hier ist mein 3D Modell: http://softpixelengine.sourceforge.net/tmp/w_deagle.3ds
Mit der Texture nr. 1: http://softpixelengine.sourceforge.net/tmp/w_deagle0.bmp
Und Texture nr. 2: http://softpixelengine.sourceforge.net/tmp/w_deagle1.bmp

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »LukasBanana« (10.08.2010, 20:02)


LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

2

08.08.2010, 21:17

Hat sich erledigt :D
Geht über die MaterialGroups (ChunkID: 0x4130)
Die näschte SPE wird endlich die 3DS Modelle richtig laden können

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

3

09.08.2010, 22:29

Weiß jemand ob das 3DS Format SkeletAnimationen unterstützt? Oder werden bei den Animationen nur die Objekte transformiert?
Weil ich glaub ich noch nie ne richtige Skeleta (oder Bone-) Animation bei 3DS Modellen gesehen habe.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

4

10.08.2010, 19:37

Anscheinend unterstützt das 3DS Format keine Skelet Animationen. Aber 'Per-Object-MorphTarget Animation'.

Weiß jemand wie die RotationsTrack Werte zu interpretieren sind?
Ich dachte erst das wäre ein Quaternion weil das 4 Daten sind und weil das hier wie folgt benannt ist:

C-/C++-Quelltext

1
2
float rotation_rad;
float axis_x, axis_y, axis_z;

rotation_rad lässt daraus schließen, dass es sich um ein Radian Wert handelt. Aber ist das jetzt ein Quaternion oder wie muss ich die Matrix drehen??
Ich hoffe ihr könnt mir da weiter helfen. Hab nämlich schon einige Kombinationen ausprobiert und hab auch schon über all nach 3DS Datei Format Spezifikationen gesucht und den Link, den ich angegeben habe, ist das beste was ich gefunden habe.

Werbeanzeige