VMD`@߂
MMDɓ\̂ƁAقړełB(ԕǋLĂ܂)
MMD̃ff[^ɂČX967ɁAĒ{ǋL

//// t@C`(VMD) ////
// unsigned tǂ͖`FbN
struct VMD_HEADER {
char VmdHeader[30]; // "Vocaloid Motion Data 0002"
char VmdModelName[20];
} vmd_header;

struct VMD_MOTION_COUNT {
DWORD Count;
} vmd_motion_count;

struct VMD_MOTION { // 111 Bytes // [V
char BoneName[15];
DWORD FlameNo;
float Location[3];
float Rotatation[4]; // Quaternion
BYTE Interpolation[64]; // [4][4][4]
} vmd_motion;

struct VMD_SKIN_COUNT {
DWORD Count;
} vmd_skin_count;

struct VMD_SKIN { // 23 Bytes // \
char SkinName[15];
DWORD FlameNo;
float Weight;
} vmd_skin;

struct VMD_CAMERA_COUNT {
DWORD Count;
} vmd_camera_count;

struct VMD_CAMERA { // 61 Bytes // J
DWORD FlameNo;
float Length; // -()
float Location[3];
float Rotation[3]; // IC[p // X͕]Ă̂Œ
BYTE Interpolation[24]; // 炭[6][4]()
DWORD ViewingAngle;
BYTE Perspective; // 0:on 1:off
} vmd_camera;

struct VMD_LIGHT_COUNT {
DWORD Count;
} vmd_light_count;

struct VMD_LIGHT { // 28 Bytes // Ɩ
DWORD FlameNo;
float RGB[3]; // RGBel/256
float Location[3];
} vmd_light;

struct VMD_SELF_SHADOW_COUNT {
DWORD Count;
} vmd_self_shadow_count;

struct VMD_SELF_SHADOW { // 9 Bytes // ZtVh[
DWORD FlameNo;
BYTE Mode; // 00-02
float Distance; // 0.1 - (dist * 0.00001)
} vmd_self_shadow;

//// Ԃ̕⑫ ////
// ԗp̋Ȑ
// (0,0), A(ax,ay), B(bx,by), (127,127) 3(4_)xWF
// A:́{, B:É{

VMD_⑫.jpg

// [V̕ԃp[^̕я(MMD̏)
// ]4(NI[^jI)A1ɂ܂Ƃ߂Ă̂Œ
// @ X @@@ Y @@@ Z @@@ ]
// A@(Xax,Xay) (Yax,Yay) (Zax,Zay) (Rax,Ray)
// B@(Xbx,Xby) (Ybx,Yby) (Zbx,Zby) (Rbx,Rby)
// ƂƁA
// Xax,Yax,Zax,Rax,@Xay,Yay,Zay,Ray,@Xbx,Ybx,Zbx,Rbx,@Xby,Yby,Zby,Rby,
// Yax,Zax,Rax,@Xay,Yay,Zay,Ray,@Xbx,Ybx,Zbx,Rbx,@Xby,Yby,Zby,Rby,@01,
// Zax,Rax,@Xay,Yay,Zay,Ray,@Xbx,Ybx,Zbx,Rbx,@Xby,Yby,Zby,Rby,@01,00,
// Rax,@Xay,Yay,Zay,Ray,@Xbx,Ybx,Zbx,Rbx,@Xby,Yby,Zby,Rby,@01,00,00

// J̕()
// [V̕ԂƓяƂ
// @ X @@@ Y @@@ Z @@@ ]@ @@ @ @@o
// A@(Xax,Xay) (Yax,Yay) (Zax,Zay) (Rax,Ray) (Lax,Lay) (VAax,VAay)
// B@(Xbx,Xby) (Ybx,Yby) (Zbx,Zby) (Rbx,Rby) (Lbx,Lby) (VAbx,VAby)
// ̏ꍇA
// Xax,Yax,Zax,Rax,Lax,VAax, Xay,Yay,Zay,Ray,Lay,VAay,
// Xbx,Ybx,Zbx,Rbx,Lbx,VAbx, Xby,Yby,Zby,Rby,Lby,VAby

