读书人

DirectX3D碰撞检测?该怎么处理

发布时间: 2012-02-23 22:01:36 作者: rapoo

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

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

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

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



[解决办法]
我对D3D不了解,不过根据我对你帖子的理解,你的主要问题在于,检测碰撞的函数要求被检测的点和Mesh在同样的坐标系下,才能给出正确的检测结构,而你现在的Mesh经过位移以后,其本地坐标(model coordinate)已经和世界坐标(world coordinate)不同步了。如果我对你的问题理解正确,那么其解决方案应该是将被检测的点坐标变换到Mesh的本地坐标下,然后在调用检测函数就行了。
你最后给出的替代方案,是常用的加速算法,不过当外接几何体与点发生碰撞后,还是要进行更加细致的点与原Mesh的碰撞检测。

读书人网 >C++

热点推荐