DirectX3D碰撞检测?

liyunfengdi 2011-01-11 02:06:13
我正在学习DirectX,学习碰撞的时候两个物体间检测碰撞一个物体在世界空间里移动了一定位置后,把Mesh文件传入碰撞函数检测被检测的Mesh顶点坐标还是在坐标原点的位置,想问下那位大虾知道这个问题这么解决啊,

函数是通过传入一个Mesh然后判断一点和Mesh所有的三角面发生碰撞与否。

对Mesh进行渲染时,Mesh经过平移后便不再坐标原点了,
而传入的Mesh中的顶点没有经过世界坐标变换的!(问题)

我想另一个解决方案:把Mesh换成碰撞检测的圆球体,或是方盒进行检测,但治标不治本,还是希望有更好的解决方案。如何能获取经过变换后的Mesh坐标顶点?

...全文
169 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryfdizuo 2011-01-12
  • 打赏
  • 举报
回复
碰撞检测需要模型的视图变换矩阵的~
ri_aje 2011-01-11
  • 打赏
  • 举报
回复
我对D3D不了解,不过根据我对你帖子的理解,你的主要问题在于,检测碰撞的函数要求被检测的点和Mesh在同样的坐标系下,才能给出正确的检测结构,而你现在的Mesh经过位移以后,其本地坐标(model coordinate)已经和世界坐标(world coordinate)不同步了。如果我对你的问题理解正确,那么其解决方案应该是将被检测的点坐标变换到Mesh的本地坐标下,然后在调用检测函数就行了。
你最后给出的替代方案,是常用的加速算法,不过当外接几何体与点发生碰撞后,还是要进行更加细致的点与原Mesh的碰撞检测。

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧