Xファイルのフォーマット(2)
Posted on Sun 25 March 2007 in DirectX
//これはコメントです。
#これもコメントです。
//この例は、正しいポリゴンでない可能性があります。
Mesh (ここにメッシュの名前をつけることもできる。){
3; //頂点の数
0.00000;271.38129;0.00000;, //頂点1の座標
0.00000;240.92551;-153.11031;, //頂点2の座標
0.00000;-128.71561;-400.09680;; //頂点3の座標
1; //面の数
3;0,1,2;; //インデックスの数;インデックスの配列
//ここまでが必須要素です。
これに付随してオプションのデータをつけることができます。
使用できるオプションのデータは、
・MeshFaceWraps (今では使われてないらしい)
・MeshTextureCoords
・MeshNormals
・MeshVertexColors
・MeshMaterialList
である。
/////////////////////////////////////////////////////////////
//MeshTextureCoordsはメッシュのテスクチャ座標を定義する。
template MeshTextureCoords {
< F6F23F40-7686-11cf-8F52-0040333594A3 >
DWORD nTextureCoords;
array coords2d textureCoords[nTextureCoords];
}
nTextureCoords-テクスチャ座標の数。
array
textureCoords-要素数nTextureCoordsのCoords2dの配列。
Coords2dは、テクスチャのUV座標を設定するためのテンプレート。
////////////////////////////////////////////////////
//MeshNormalsは、メッシュの法線を定義する。
template MeshNormals {
< F6F23F43-7686-11cf-8F52-0040333594A3 >
DWORD nNormals;
array Vector;
normals[nNormals];
DWORD nFaceNormals;
array MeshFace meshFaces[nFaceNormals];
}
nNormals-法線の数。
array
normals-要素数nNormalsのVectorテンプレートの配列、法線のベクトル。
nFaceNormals-面法線の数。
array
meshFaces-要素数nFaceNormalsのMeshFaceの配列、面法線をあらわす。
//////////////////////////////////////////////////////
//MeshVertexColorsは、面またはメッシュごとに頂点色を設定する。
template MeshVertexColors {
<1630B821-7842-11cf-8F52-0040333594A3>
DWORD nVertexColors;
array IndexColor vertexColors[nVertexColors\];
}
nVertexColors-色の数。
array
vertexColors-要素数nVertexColorsのIndexColorの配列。
IndexColorは、インデックス引数とRGBA色で構成される。
/////////////////////////////////////////////////////////
//MeshMaterialListは、どのマテリアルをどの面に適用するのかを指定する。
template MeshMaterialList {
< F6F23F42-7686-11cf-8F52-0040333594A3 >
DWORD nMaterials;
DWORD nFaceIndexes;
DWORD FaceIndexes;
[Material]
}
nMaterials-存在するマテリアルの数をしてする。
nFaceIndexes-FaceIndexesの数。
FaceIndexe-インデックス番号。
Materialテンプレートをオプションとしてつけることができる。
//////////////////////////////////////////////////////////
//Materialは、メッシュ全体またはそれぞれの面に適用できる。マテリアル色を定義す。template
Material {
< 3D82AB4D-62DA-11cf-AB39-0020AF71E433 >
ColorRGBA faceColor;
float power;
DWORD specularColor;
DWORD emissiveColor;
[TextureFilename]
}
faceColor-面の色
power-マテリアルのスペキュラ色指数
specularColor-スペキュラ色
emissiveColor-エミッション色
TextureFilenameをオプションとしてつけることもできる。
TextureFilenameは、テクスチャファイルのパスを指定する。
よって最小の構成のXファイルは、一般的に以下のような形式になる。
Mesh {
頂点の数;
頂点の座標達;
面の数;
面のを表す頂点のインデックス;
MeshMaterialList {
使用するマテリアルの数;
面の数;
それぞれの面の使用する引数;//繰り返し
使用するマテリアルへの参照;//繰り返し
TextureFilename{
"ファイルへのパス";
}
}
MeshNormals {
法線の数;
法線の座標達;
面法線インデックスの数;
インデックス達;
}
MeshTextureCoords {
頂点の数;
テクスチャ座標u;テクスチャ座標v;//繰り返し
}
}