建立自己的3D模型文件

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

建立自己的3D模型文件的目的和意义我就不罗嗦了。有一些方法可以实现这个目的,我使用的方法思路如下:

1)将.x档用D3DX的各个函数读出,需要读出的有Frame,FrameTransformMatrix,Mesh,AnimationSet,Animation,AnimationKey;

2)转化为自己需要的文件,这里我建立了4个文件,包括.m档(存放mesh),.f档(存放Frame),.a档(存放AnimationSet)和.z档,存放上面3个文件的索引。这4个文件都可以修改部分属性,以达到共享texture、animation等目的。

3)完成读这4个文档的代码,并建立相应的列表、树什么的

4)Render读出的模型

.m档格式如下:

Mesh个数

{//循环,Mesh个数

Name

NumMaterials

{//循环,NumMaterials个数

MatD3D

TextureFilename

}

FVF

NumFaces

NumVertices

NumBytesPerVertex

true/false //指明是否有SkinInfo

{

NumBones

{//NumBones

BoneName

NumBoneInfluences

vertices

weights

BoneOffsetMatrix

}

}

VertexBufferSize

VertexBuffer

IndexBufferSize

IndexBuffer

.f档保存的是二叉树,文件格式不是很好描述

.a档格式如下:

AnimationSet数量

{//循环

Name

Length

Animation数量

{//循环

Animation名字

TranslationKeys

ScaleKeys

RotationKeys

MatrixKeys

}

}

读.x代码如下:

D3DXFileCreate

RegisterTemplates( D3DRM_XTEMPLATES, D3DRM_XTEMPLATE_BYTES )//变量在rmxfguid.h中有声明

CreateEnumObject如果使用了UINCODE,第二个参数改成D3DXF_FILELOAD_FROMWFILE

pD3DXEnum->GetChildren( &dwDatas );

for( DWORD dw = 0; dw < dwDatas; dw ++ ) {

pD3DXEnum->GetChild( dw, &pD3DXData );

ParseObject( pD3DXData );

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航