其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
建立自己的3D模型文件

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

建立自己的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 );
}


相关文章

相关软件