游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2948|回复: 7

关于 蒙皮网格动画的几个问题请教下

[复制链接]

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
发表于 2007-11-14 11:32:00 | 显示全部楼层 |阅读模式
问题1: 用IDirect3DDevice9::SetTransform设置了D3DTS_WORLD 矩阵,并不改变实际顶点区的数据,只是在Render改变Mesh的渲染位置.   如果一个模型的移动是用SetTransform设置世界矩阵来实现的,那想要实现实时的模型和射线相交检测怎么办呢?...检测的模型顶点数据没有变啊...

问题2:一个模型的FVF格式从哪里获取?比如X文件中的模型?

问题3:微软的蒙皮网格模型的例子里面并不是每个frame都有加载一个MeshContainer.那具体的Mesh到底放到哪里去了?  理论上是不是应该每个Frame都有加载一个MeshContainer呢?

14

主题

48

帖子

48

积分

注册会员

Rank: 2

积分
48
发表于 2007-11-14 13:07:00 | 显示全部楼层

Re: 关于 蒙皮网格动画的几个问题请教下

回答问题1: 没有必要检查模型上的每个三角形相交,这便是要引入包围合的作用,通常只需要检查跟包围合碰撞。

回答问题2:如果是使用D3DXMESH对象导入模型,有一个类方法可以获取FVF,参考SDK

回答问题3:首先要理解,FRAME对象事实上描述的就是骨骼结构的单个骨骼对象,一个FRAME可以代表一块骨头。因此网格对象不是包含在FRAME对象中,应该是独立于FRAME对象另外存储的,但是动画网格对象通过一个SKINWEIGHT表明网格跟骨骼之间的关系,其描述的是,好比那些顶点要受哪块骨骼的影响。

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-11-14 13:29:00 | 显示全部楼层

Re:关于 蒙皮网格动画的几个问题请教下

问题1:对射线做物体世界矩阵的逆变换,变换到局部坐标上去

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
 楼主| 发表于 2007-11-14 23:19:00 | 显示全部楼层

Re:关于 蒙皮网格动画的几个问题请教下

嗯,谢谢各位的回答.
对MESHCONTAINER的储存位置还是有些不解,
如果MESHCONTAINER应该独立于FRAME,那为什么D3DXFRAME结构里面有个MeshContainer结构指针呢?

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2007-11-16 00:45:00 | 显示全部楼层

Re: Re:关于 蒙皮网格动画的几个问题请教下

penghao_xmu: Re:关于 蒙皮网格动画的几个问题请教下

嗯,谢谢各位的回答.
对MESHCONTAINER的储存位置还是有些不解,
如果MESHCONTAINER应该独立于FRAME,那为什么...

一定是用到了才包含它,看看代码不就知道了?

14

主题

48

帖子

48

积分

注册会员

Rank: 2

积分
48
发表于 2007-11-16 01:17:00 | 显示全部楼层

Re: Re:关于 蒙皮网格动画的几个问题请教下

penghao_xmu: Re:关于 蒙皮网格动画的几个问题请教下

嗯,谢谢各位的回答.
对MESHCONTAINER的储存位置还是有些不解,
如果MESHCONTAINER应该独立于FRAME,那为什么...

这点就不大清楚了,我是没有仔细研究过DX的代码(我个人认为不可研究),可能是处理数据的方式有点不大相同吧。

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
 楼主| 发表于 2007-11-16 07:54:00 | 显示全部楼层

Re: Re: Re:关于 蒙皮网格动画的几个问题请教下

congy: Re: Re:关于 蒙皮网格动画的几个问题请教下


一定是用到了才包含它,看看代码不就知道了?


SDK的代码是继承了ID3DXAllocateHierarchy类下来,然后重载里面的CreateMeshContainer和CreateFrame函数.
具体在加载数据的时候直接用
HRESULT D3DXLoadMeshHierarchyFromX(
  LPCSTR Filename,
  DWORD MeshOptions,
  LPDIRECT3DDEVICE9 pDevice,
  LPD3DXALLOCATEHIERARCHY pAlloc,
  LPD3DXLOADUSERDATA pUserDataLoader,
  LPD3DXFRAME* ppFrameHierarchy,
  LPD3DXANIMATIONCONTROLLER* ppAnimController
);
传了一个LPD3DXALLOCATEHIERARCHY 进去了...根本看不到内部是怎么调用的...

不过有些书上有写出不用LPD3DXALLOCATEHIERARCHY加载蒙皮骨骼动画的代码...感觉和微软的不大一样...我就想知道微软是怎么写的...

54

主题

116

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2007-11-16 16:01:00 | 显示全部楼层

Re:关于 蒙皮网格动画的几个问题请教下

它是在D3DXLoadMeshHierarchyFromX函数中传递了pAlloc指针。根据这个指针自动调用它的成员函数CreateFrame建立框架结构,如果发现当前的Frame里包含了mesh信息就调用CreateMeshContainer 。我的感觉是这个过程对开发者透明了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-18 07:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表