图形学 Direct3D中手动创建3D模型
2013-10-26 19:55
495 查看
手动写一个模型是非常麻烦的,这就是为什么需要美工来做3D模型,美工利用各种可视化的软件如:3DSmax,maya,Blender等等,那样方便做出各种3d模型。如果手工设置,直接编程出来的话,工作量会相当大,甚至不一定能做出我们想要的模型,但是理论上这是可能的,所以我们看看如何做。
属性表
当模型的mesh被优化,那么它会如下排序:
属性表就是一个D3DXATTRIBUTERANGE的数组:
Cloning
拷贝一个模型mesh到另外一个模型mesh中:
如下,拷贝meshSys到temp容器。
手动创建一个空的Mesh(DSDXCreateMesh)
如下:但是那么需要手动来填写相关属性,会非常麻烦;这就是为什么需要可视化工具来做3d模型。
使用范例:
然后手动填写其中相关的属性,那么理论上就可以做出各种3D模型。当然只是理论上罢了。
属性表
当模型的mesh被优化,那么它会如下排序:
属性表就是一个D3DXATTRIBUTERANGE的数组:
typedefstruct_D3DXATTRIBUTERANGE{ DWORDAttribId; DWORDFaceStart; DWORDFaceCount; DWORDVertexStart; DWORDVertexCount; }D3DXATTRIBUTERANGE;
Cloning
拷贝一个模型mesh到另外一个模型mesh中:
HRESULTID3DXMesh::CloneMesh( DWORDOptions, constD3DVERTEXELEMENT9*pDeclaration, LPDIRECT3DDEVICE9pDevice, LPD3DXMESH*ppCloneMesh );
如下,拷贝meshSys到temp容器。
D3DVERTEXELEMENT9elements[]= { {0,0,D3DDECLTYPE_FLOAT3,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_POSITION,0}, {0,12,D3DDECLTYPE_FLOAT3,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_NORMAL,0}, {0,24,D3DDECLTYPE_FLOAT2,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_TEXCOORD,0}, D3DDECL_END() }; ID3DXMesh*temp=0; HR(meshSys->CloneMesh(D3DXMESH_SYSTEMMEM, elements,gd3dDevice,&temp));
手动创建一个空的Mesh(DSDXCreateMesh)
如下:但是那么需要手动来填写相关属性,会非常麻烦;这就是为什么需要可视化工具来做3d模型。
HRESULTWINAPID3DXCreateMesh( DWORDNumFaces, DWORDNumVertices, DWORDOptions, constLPD3DVERTEXELEMENT9*pDeclaration, LPDIRECT3DDEVICE9pD3DDevice, LPD3DXMESH*ppMesh );
使用范例:
D3DVERTEXELEMENT9elements[]=
{
{0,0,D3DDECLTYPE_FLOAT3,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_POSITION,0},
{0,12,D3DDECLTYPE_FLOAT3,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_NORMAL,0},
{0,24,D3DDECLTYPE_FLOAT2,D3DDECLMETHOD_DEFAULT,D3DDECLUSAGE_TEXCOORD,0},
D3DDECL_END()
};
ID3DXMesh*mesh=0;
HR(D3DXCreateMesh(12,24,D3DXMESH_MANAGED,elements,
gd3dDevice,&mesh));//创建一个空的3D模型。
然后手动填写其中相关的属性,那么理论上就可以做出各种3D模型。当然只是理论上罢了。
相关文章推荐
- 图形学 Direct3D的3D模型处理1
- Axiom3D:手动创建ManualObject与Mesh,以及如何使用Cg着色器语言
- C#代码创建3D模型
- PythonOCC 3D图形库学习—创建立方体模型
- openGL 创建一个旋转的简单的3D模型
- Unity手动创建模型添加贴图
- ROS学习(1)使用URDF创建机器人3D仿真模型
- Imode平台下使用原生数据创建3D模型_旋转
- Direct3D学习手记十:网格一【手动创建网格】
- Chem 3D中创建立体模型有哪些方法
- ogre3D学习基础16 -- 手动创建实体(ManualObject)
- direct3d 3d模型模板
- 【Unity】3.0 第3章 创建和导入3D模型
- Java3D应用实例-创建空间几何模型
- 【Unity】3.1 利用内置的3D对象创建三维模型
- unity 3d 中如何使用3dmax创建好的模型
- ROS 学习系列 -- 使用urdf创建机器人模型在Rviz中3D观察 之一 link使用
- ROS 学习系列 -- 使用urdf创建机器人模型在Rviz中3D观察 之二 joint 使用
- 在3D世界中创建不同的相机模式——检测相机与模型,墙或地形的碰撞
- 初始Unity 3D——基本模型的创建