The formats of vertices of .3DO and .3DC are as follows:
Code:
// .3DO
typedef struct _3DO {
long tag; // 0
long cntVertices;
VerticesDO* vertices;
long cntFaces;
Faces* faces;
} File3DO;
typedef struct _Vertex3DO {
float x, y, z;
float nx, ny, nz;
float u, v;
} VerticesDO;
typedef struct _Faces {
unsigned short i1, i2, i3;
} Faces;
// .3DC
typedef struct _3DC {
long tag; // 0 for format 5, 0x000001BC for format 6
long cntBones;
BoneMatrix* bones;
long cntVertices;
VerticesDC* vertices;
long cntFaces;
Faces* faces;
} File3DC;
typedef struct _BoneMatrix {
float m[4][4];
} BoneMatrix;
typedef struct _Vertex3DC {
float x, y, z;
float w;
byte bone1, bone2;
short unk0; // 0000 (padding?)
float nx, ny, nz;
float u, v;
} VerticesDC;
typedef struct _Faces {
unsigned short i1, i2, i3;
} Faces;
the 'tag' field is actually a String that may contain a texture filename; for about 99% of the .3DO and .3DC the texture name is not present and thus only the length settled to 0x000000 is stored; for the new .3DC format used by costumes of client 6+, the "magic" value 0x000001BC is used as a flag, if you read it, there is no filename with 444-chars, instead the 3DC vertices are defined according:
Code:
typedef struct _Vertex3DC6 {
float x, y, z;
float w;
float unk1, unk2;
byte bone1, bone2;
short unk0; // 0000 (padding?)
float nx, ny, nz;
float u, v;
} VerticesDC6;
Quote:
|
Would be possible, to define a Top gear, with 2 3DC models?
|
No (not without strong modifications of client, to manage some kind of 'MON' list instead of the 'ITM' records (which always contains a single .3DC + .DDS pair)).
OOH, for a full character definition (including its top, pants, gantlet and shoes) the split between these 4 parts is fully arbitrary; the "top" can so contains some elements drawn elsewhere of the (usual) "top" part.
whatever in which part, the wings vertices are stored, the UVmap must be redefined (after merging the 2 text), and you're right, it's the paintfull step.
Edit: OOH, it is (indeed) easy to add wings to a MON model, meaning to a NPC shape, and btw this will have much more sense than adding static things to a character unable to fly. (npc and mobs also don't fly but they also are less animated than characters).