DirectX-3d中.x模型转换成three.js可用的obj文件或者js文件

时间:2021-12-02 05:04:48

过程十分的痛苦,找了好多工具。

1.首先是directx-3d里面的模型纹理格式是.x后缀的。 所以我们要转换。这里推荐一个工具assimp (点我下载)

Assimp(Open Asset Import Library)是一个支持读取多种模型资源的开源库,当前最新的版本是3.0版,支持读取以下类型的3D模型:

  • Collada ( .dae )
  • Blender 3D ( .blend )
  • 3ds Max 3DS ( .3ds )
  • 3ds Max ASE ( .ase )
  • Wavefront Object ( .obj )
  • Industry Foundation Classes (IFC/Step) ( .ifc )
  • XGL ( .xgl,.zgl )
  • Stanford Polygon Library ( .ply )
  • *AutoCAD DXF ( .dxf )
  • LightWave ( .lwo )
  • LightWave Scene ( .lws )
  • Modo ( .lxo )
  • Stereolithography ( .stl )
  • DirectX X ( .x )
  • AC3D ( .ac )
  • Milkshape 3D ( .ms3d )
  • * TrueSpace ( .cob,.scn )Biovision BVH ( .bvh )
  • * CharacterStudio Motion ( .csm )Ogre XML ( .xml )
  • Irrlicht Mesh ( .irrmesh )
  • * Irrlicht Scene ( .irr )
  • Quake I ( .mdl )
  • Quake II ( .md2 )
  • Quake III Mesh ( .md3 )
  • Quake III Map/BSP ( .pk3 )
  • * Return to Castle Wolfenstein ( .mdc )
  • Doom 3 ( .md5* )
  • *Valve Model ( .smd,.vta )
  • *Starcraft II M3 ( .m3 )
  • *Unreal ( .3d )BlitzBasic 3D ( .b3d )
  • Quick3D ( .q3d,.q3s )
  • Neutral File Format ( .nff )
  • Sense8 WorldToolKit ( .nff )
  • Object File Format ( .off )
  • PovRAY Raw ( .raw )
  • Terragen Terrain ( .ter )
  • 3D GameStudio (3DGS) ( .mdl )
  • 3D GameStudio (3DGS) Terrain ( .hmp )
  • Izware Nendo ( .ndo )

支持以下格式的导出:

  • Collada ( .dae )
  • Wavefront Object ( .obj )
  • Stereolithography ( .stl )
  • Stanford Polygon Library ( .ply )

此外还支持对导入的模型做一些常用的处理,如把四边形转换为三角形、计算切线和副法线、将大模型分割为小模型等。

Assimp的主页:http://assimp.sourceforge.net/index.html

2. 转换完之后,下面就是three.js开始啦。 但是遇到个头疼的问题,资源文件不能直接D:/ hello.obj 这样用 而是要用服务器的形式。 这里推荐一个phpstudy (点我下载)

傻瓜式一键下一步就行了,然后他会自动启动,然后在D盘www目录就是文件服务器根目录了 访问方法: http://localhost/xxx.obj 这样

3. 最后是不是要试试手呢, 我们在D:\WebGL\three.js-master\examples 里面找webgl_loader_obj.html 把这个文件拷贝到D://www下面 然后把obj文件还有资源文件也拷贝到www下面 再改改里面的代码路径。 比如 里面用到的xxx.obj 改成localhost/xxx.obj

4. 后来发现还可以obj转js, 还可以用dx自带的工具转obj sdkmesh互转 这些都是后话了