メッシュXファイルとモーションXファイルにはそれぞれ以下のような事が書かれていた。(覚書程度なので未整理部分も多い)
この記事は後々書き足しをする予定。
(共通)
xof 0303txt 0032
template XSkinMeshHeader {
<3cf169ce-ff7c-44ab-93c0-f78f62d172e2>
WORD nMaxSkinWeightsPerVertex;
WORD nMaxSkinWeightsPerFace;
WORD nBones;
}
template VertexDuplicationIndices {
<b8d65549-d7c9-4995-89cf-53a9a8b031e3>
DWORD nIndices;
DWORD nOriginalVertices;
array DWORD indices[nIndices];
}
template SkinWeights {
<6f0d123b-bad2-4167-a0d0-80224f25fabb>
STRING transformNodeName;
DWORD nWeights;
array DWORD vertexIndices[nWeights];
array FLOAT weights[nWeights];
Matrix4x4 matrixOffset;
メッシュXファイルのファイル構成
Mesh(ポイント情報)
MeshNormals(ポリゴン情報)
MeshTextureCoords(おそらくUV情報?)
VertexDuplicationIndices(ポイント数、ポイント番号の定義?)
MeshMaterialList(サーフィスが変換されるもの?)
Materials
1.000000;1.000000;1.000000;1.000000;;(この辺は恐らく光沢等の設定)
51.200001;
0.100000;0.100000;0.100000;;
0.000000;0.000000;0.000000;;
TextureFilename {
"Face_C.dds";(テクスチャの指定)
XSkinMeshHeader
SkinWeights(ここ以降各ボーンごとにどのポイントがWeightに何パーセントでアサインされているかの指定)
F2_CTRL_C_Back
F3_CTRL_C_Lowerlip
F4_CTRL_C_Root
F5_CTRL_C_Upperlip
F6_CTRL_C_Waist
F7_CTRL_L_Ankle
F8_CTRL_L_Elbow
F9_CTRL_L_Finger0
F10_CTRL_L_Finger1
F11_CTRL_L_Finger2
F12_CTRL_L_Finger3
F13_CTRL_L_Finger4
F14_CTRL_L_Knee
F15_CTRL_L_Lipside
F22_CTRL_L_Thigh
F25_CTRL_L_Toe
F26_CTRL_L_Upperarm
F27_CTRL_L_Wrist
F28_CTRL_R_Ankle
F29_CTRL_R_Elbow
F30_CTRL_R_Finger0
F31_CTRL_R_Finger1
F32_CTRL_R_Finger2
F33_CTRL_R_Finger3
F34_CTRL_R_Finger4
F35_CTRL_R_Knee
F36_CTRL_R_Lipside
F43_CTRL_R_Thigh
F46_CTRL_R_Toe
F47_CTRL_R_Upperarm
F48_CTRL_R_Wrist
F51_DEST_L_Breast1
F53_DEST_R_Breast1
F55_EFCT_C_Back
F56_EFCT_C_Head0
F57_EFCT_C_Head1
F59_EFCT_C_Neck1
F60_EFCT_C_Waist
F61_EFCT_L_Ankle0
F62_EFCT_L_Ankle1
F63_EFCT_L_Ankle2
F65_EFCT_L_Crotch0
F67_EFCT_L_Crotch11
F68_EFCT_L_Elbow0
F69_EFCT_L_Elbow1
F70_EFCT_L_Elbow2
F71_EFCT_L_Finger00
F72_EFCT_L_Finger01
F73_EFCT_L_Finger10
F74_EFCT_L_Finger11
F75_EFCT_L_Finger20
F76_EFCT_L_Finger21
F77_EFCT_L_Finger30
F78_EFCT_L_Finger31
F79_EFCT_L_Finger40
F80_EFCT_L_Finger41
F81_EFCT_L_Hip0
F82_EFCT_L_Hip1
F83_EFCT_L_Hip2
F84_EFCT_L_Hip3
F85_EFCT_L_Hip4
F86_EFCT_L_Knee0
F87_EFCT_L_Knee1
F88_EFCT_L_Knee2
F89_EFCT_L_Lowerarm0
F90_EFCT_L_Lowerarm1
F91_EFCT_L_Lowerarm2
F92_EFCT_L_Lowerarm3
F93_EFCT_L_Lowerarm4
F94_EFCT_L_Shin0
F95_EFCT_L_Shin1
F96_EFCT_L_Shin2
F97_EFCT_L_Shin3
F98_EFCT_L_Shin4
F99_EFCT_L_Shoulder0
F102_EFCT_L_Shoulder20
F103_EFCT_L_Shoulder21
F104_EFCT_L_Shoulder22
F105_EFCT_L_Shoulder23
F106_EFCT_L_Shoulder30
F107_EFCT_L_Shoulder31
F108_EFCT_L_Shoulder32
F109_EFCT_L_Shoulder33
F110_EFCT_L_Thigh0
F111_EFCT_L_Thigh1
~以下略
F184_EFCT_R_Wrist1
Frame F185_ROOT(ルートの指定?)
ここ以下はボーンの階層構造と初期値
モーションXファイルのファイル構成
Mesh
MeshNormals
MeshMaterialList
XSkinMeshHeader
Frame F185_ROOT(ルートの指定?Mesh側と同じ数値)
ここ以下はボーンの階層構造(Mesh側と同じ数値)
AnimationSet AnimationSet_00R_Run(上で記述されているフレーム(F○○○で表記、ボーン)一つ一つに対して以下の書式でアニメーション値が記述されている)
Animation Animation0 {
{ F1_NULL_Layer1 }
AnimationKey {
4;
30;
0;16;1.000000,0.000000,0.000000,(以下数値は略恐らく座標値、回転値);;,
100;16;1.000000,0.000000,0.000000,(以下数値は略恐らく座標値、回転値);;,