|
|
顺序我已经打乱了。
同时支持Morphing和Skinned "网格"(为了避免混淆,我这里叫做“Subset”)
#pragma pack(push,1)
typedef struct _MODELFILE_HEADER
{
AnimFile[XX];
BoneNum;
BoneStart;
FileSize;
ID[4]; // "INST"
Name[XX];
ShaderFile[XX];
SkinFile[XX];
SID[4]; // ".MDL"
SubsetNum;
SubsetStart;
TagNum;
TagStart;
Version;
}MODELFILE_HEADER;
typedef struct _MODELFILE_SUBSET
{
ColorNum;
HasIndex;
HasNormal;
HasUV;
IndexNum;
IndexStart;
Name[XX];
Bone;
KeyFrameNum; // morphg only
Type; // 0-Skined, 1-Morphing, other-illegal
VertexNum;
VertexStart;
VertexStartEx;
}MODELFILE_SUBSET;
typedef struct _MODELFILE_POS
{
x,y,z;
}MODELFILE_POS;
typedef struct _MODELFILE_WEIGHT
{
weight1,weight2;
bone1,bone2; // 骨骼号码是模型全局的!和SubSet无关!
}MODELFILE_WEIGHT;
typedef struct _MODELFILE_NORMAL
{
nx,ny,nz;
}MODELFILE_NORMAL;
typedef struct _MODELFILE_COLOR
{
color;
}MODELFILE_COLOR;
typedef struct _MODELSFILE_UV
{
u,v;
}MODELFILE_UV;
typedef struct _MODELSFILE_BONE
{
Next;
FirstChild;
}MODELFILE_BONE;
typedef struct _MODELSFILE_TAG
{
Name[32];
pos;
dir[2],front;
bone;
}_MODELSFILE_TAG;
#pragma pack(pop) |
|