社区
游戏开发
帖子详情
Direct3D中如何得到Mesh对象的节点位置、颜色、法线、纹理等信息?很急呀!!谢!
youarestupid
2005-08-25 03:49:16
用Mesh对象读了.x文件,这一步很顺利。现在可以通过mesh.NumberVertex和mesh.NumberFace得到模型节点数和面片数。
那么如何得到Mesh对象的各个节点的详细信息呢?因为每个.x文件的VertexFormats格式都不一样,Dx9_sdk中的那个从VertexBuffer读节点数据到Array的实例好像解决不了问题。
请教!!
...全文
409
5
打赏
收藏
Direct3D中如何得到Mesh对象的节点位置、颜色、法线、纹理等信息?很急呀!!谢!
用Mesh对象读了.x文件,这一步很顺利。现在可以通过mesh.NumberVertex和mesh.NumberFace得到模型节点数和面片数。 那么如何得到Mesh对象的各个节点的详细信息呢?因为每个.x文件的VertexFormats格式都不一样,Dx9_sdk中的那个从VertexBuffer读节点数据到Array的实例好像解决不了问题。 请教!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
youarestupid
2005-08-28
打赏
举报
回复
感谢!后来我也发现没有必要克隆Mesh
//定义只有位置的Array
private CustomVertex.PositionOnly [] vbData;
vbData = (CustomVertex.PositionOnly[]) mesh.LockVertexBuffer(
typeof(CustomVertex.PositionOnly) ,
LockFlags.ReadOnly , mesh.NumberVertices);
~~~~~~~~~~~~~~
还有一个问题,我如何得到Mesh模型各个三角形面片的索引的?也就是得到某个三角形是由哪些节点组成的?
我正在做的是读取模型的Mesh信息,然后根据这些信息需要(比如特殊渲染、添加毛发等)重绘另外一个模型
寻开心
2005-08-26
打赏
举报
回复
再说,如果你只是为了获得顶点的数据的话,根本不用这么麻烦啊
顶点始终在数据块的第一组的位置
vertex结构的大小是可以获得的啊
寻开心
2005-08-26
打赏
举报
回复
顶点的FVF如何指定的呢?
youarestupid
2005-08-26
打赏
举报
回复
谢谢你的提示。我用以下方法得到了节点位置信息,C#的。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//定义只有位置的Array
private CustomVertex.PositionOnly [] vbData;
//Mesh顶点格式转换
Mesh vertexMesh=mesh.Clone(mesh.Options.Value,CustomVertex.PositionOnly.Format ,device);
mesh.Dispose();
mesh=vertexMesh;
//vbData数组得到顶点位置
vbData = (CustomVertex.PositionOnly[]) mesh.LockVertexBuffer( typeof(CustomVertex.PositionOnly) , LockFlags.ReadOnly , mesh.NumberVertices);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
但我还发现一个问题,使用dx9_sdk中VertexBuffer的例子就不好使,代码如下:
//定义只有位置的Array
private CustomVertex.PositionOnly [] vbData;
//Mesh顶点格式转换
Mesh vertexMesh=mesh.Clone(mesh.Options.Value,CustomVertex.PositionOnly.Format ,device);
mesh.Dispose();
mesh=vertexMesh;
//按照帮助中的方法建立VertexBuffer
VertexBuffer vb = new VertexBuffer(typeof(CustomVertex.PositionOnly), mesh.NumberVertices, device, Usage.None, CustomVertex.PositionOnly.Format, Pool.Default );
vbData = (CustomVertex.PositionOnly[]) vb.Lock(0,LockFlags.ReadOnly);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这个就得不到节点坐标,vbData中所有元素的X、Y、Z都是0.0,这是怎么回事?
寻开心
2005-08-26
打赏
举报
回复
mesh的方法当中提供了GetFVF这样的操作,可以获取顶点的格式
但是返回的FVF是一个标志位方式的数值,更适合于判断是否是自己指定的格式,而不适合于判断具体的格式组织是什么样子的
好在mesh提供了,到用户指定的FVF格式的转换
你可以把任意的mesh格式转换成为自己想要的FVF格式,对于这种格式因为是自己指定的,所以顶点数据你比谁都清楚了
参看这两个接口函数: CloneMesh 和 CloneMeshFVF
加载.X文件的源代码 - 来自DIRECTX高级动画制作的第三单
中
的源文件
5. **处理几何数据**: 对于`
Mesh
`
节点
,你需要提取顶点
信息
,包括
位置
、
法线
、
纹理
坐标等,并将其转换为
Direct3D
兼容的数据结构,如`I
Direct3D
VertexBuffer9`和`I
Direct3D
IndexBuffer9`。 6. **处理
纹理
信息
**: `.X...
3DMax导出插件的制作
- `vector`容器:用来存储模型的各种数据,如顶点
位置
、
法线
、
颜色
、
纹理
坐标、面
信息
等。使用`vector`可以方便地管理和操作动态大小的数据集合。 6. **文件写入**:通过`WriteFile`函数,将导出的数据写入到指定...
OGRE初学者引导.pdf
- **
Mesh
**:
Mesh
代表3D几何数据,如顶点、
法线
、
纹理
坐标等。 - **Skeleton与Animation**:骨骼和动画用于制作角色的动作,OGRE支持骨骼动画和关键帧动画。 4. **光照与渲染** - **Light**:OGRE支持多种类型的...
md5骨骼动画源代码
`md5
mesh
`文件存储了模型的几何
信息
,包括顶点、
纹理
坐标、
法线
等,而`md5anim`文件则包含了骨骼的动画数据,如关节的旋转和位移
信息
。在实际应用
中
,这两个文件通常一起使用,以形成一个完整的动态模型。 在D3D9
中
...
OGRE_DragonBall
MESH
文件是一种通用的3D模型格式,包含了模型的几何
信息
、
纹理
坐标和
法线
数据,是OGRE支持的数据类型之一。 为了将这些模型导入到OGRE
中
,开发者需要使用OGRE的API来加载
MESH
资源,并创建对应的场景
节点
。这包括...
游戏开发
8,324
社区成员
23,684
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章