一个简单.X文件的定义

来源:互联网 发布:海岛奇兵烟雾升级数据 编辑:程序博客网 时间:2024/05/21 11:31

xof 0302txt 0064     //xof告诉程序加载的文件是.x文件,0302表示使用的是DirectX3.2版本,txt表示数据是以文件形式存储的。
Header {             //0064定义了浮点数的倍数为64位
1;
0;
1;
}

Material RedMaterial {                                   //第一块材料
1.000000;0.000000;0.000000;1.000000;;     // R = 1.0, G = 0.0, B = 0.0,A=1.0
0.000000;                                                      //镜面反射指数
0.000000;0.000000;0.000000;;                    //镜面反射着色
0.000000;0.000000;0.000000;;                   //自发光着色
TextureFilename { "Tex1.jpg"; }                    //纹理文件名
}

Material GreenMaterial {                               //第二块材料
0.000000;1.000000;0.000000;1.000000;;     // R = 0.0, G = 1.0, B = 0.0,A=1.0
0.000000;
0.000000;0.000000;0.000000;;
0.000000;0.000000;0.000000;;
TextureFilename { "Tex2.jpg"; }                    //纹理文件名
}

Frame CubeFrame {                                    //框架
FrameTransformMatrix {                               //初始位置矩阵
1.000000, 0.000000, 0.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000,
0.000000, 0.000000, 1.000000, 0.000000,
0.001000, 0.001000, 0.001000, 1.000000;;
}
Mesh Cube {                                                 //网格
8;                                                                   //8个顶点,以下为8个顶点的坐标
1.000000;1.000000;-1.000000;,
-1.000000;1.000000;-1.000000;,
-1.000000;1.000000;1.000000;,
1.000000;1.000000;1.000000;,
1.000000;-1.000000;-1.000000;,
-1.000000;-1.000000;-1.000000;,
-1.000000;-1.000000;1.000000;,
1.000000;-1.000000;1.000000;;

12;                                                                  // 12个面, 以下为每个面三个顶点的索引
3;0,1,2;,
3;0,2,3;,
3;0,4,5;,
3;0,5,1;,
3;1,5,6;,
3;1,6,2;,
3;2,6,7;,
3;2,7,3;,
3;3,7,4;,
3;3,4,0;,
3;4,7,6;,
3;4,6,5;;

//网格材质列表
MeshMaterialList {
2;                    //使用材质的数量:2块材质
12;                   //为12顶点指定材质
0,                    //为前6个面使用第一块材质
0,
0,
0,
0,
0,
1,                    //为后面的6个面使用第二块材质
1,
1,
1,
1,
1;;
{RedMaterial}       //第一块材质,引用前面定义的RedMaterial材质
{GreenMaterial}     //第二块材质,引用前面定义的GreenMaterial材质
}

//顶点法线
MeshNormals {
8;                    //定义8个法线向量
0.333333;0.666667;-0.666667;,
-0.816497;0.408248;-0.408248;,
-0.333333;0.666667;0.666667;,
0.816497;0.408248;0.408248;,
0.666667;-0.666667;-0.333333;,
-0.408248;-0.408248;-0.816497;,
-0.666667;-0.666667;0.333333;,
0.408248;-0.408248;0.816497;;
12;                   //为12个面的每个顶点指定法线
3;0,1,2;,
3;0,2,3;,
3;0,4,5;,
3;0,5,1;,
3;1,5,6;,
3;1,6,2;,
3;2,6,7;,
3;2,7,3;,
3;3,7,4;,
3;3,4,0;,
3;4,7,6;,
3;4,6,5;;
}

//纹理坐标
MeshTextureCoords {
8;                        //定义8对纹理坐标
0.000000;1.000000;
1.000000;1.000000;
0.000000;1.000000;
1.000000;1.000000;
0.000000;0.000000;
1.000000;0.000000;
0.000000;0.000000;
1.000000;0.000000;;
}
}
}

AnimationSet AnimationSet0 { //动画集
Animation Animation0 {        //动画
{CubeFrame}                   //引用上面的立方体框架,表示下面的动画是针对立方体框架的
AnimationKey {                //动画键   沿Y轴旋转网格
0;                                    // 动画键keyType可取的值是0,1,2,4。
                                       // 0表示旋转键,在.X文件中,用一个四元数来实现模型的旋转,旋转值使用4个分量w,x,y,z来存储,
                                      //也就是说,此时变换数组的大小是4。  
                                         //1表示缩放键,变换数组的大小是3,它们分别对应x,y,z轴的缩放值。
                                        //2表示平移键,变换数组的大小是3,它们分别对应x,y,z轴的平移值。
                                        //4表示变换矩阵键。
10;                                 // 9 keys到第10帧回到第1帧
1000; 4; 0.000000, 0.15643448, 0.000000, 0.98768836;;,
2000; 4; 0.000000, 0.30901700, 0.000000, 0.95105654;;,
3000; 4; 0.000000, 0.45399046, 0.000000, 0.89100653;;,
4000; 4; 0.000000, 0.58778530, 0.000000, 0.80901694;;,
5000; 4; 0.000000, 0.70710671, 0.000000, 0.70710683;;,
6000; 4; 0.000000, 0.80901694, 0.000000, 0.58778530;;,
7000; 4; 0.000000, 0.89100653, 0.000000, 0.45399052;;,
8000; 4; 0.000000, 0.95105654, 0.000000, 0.30901697;;,
9000; 4; 0.000000, 0.98768836, 0.000000, 0.15643449;;,
10000; 4; 0.000000, 1.0000000, 0.000000, 0.00000000;;;
}
}
}

原创粉丝点击