首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MeshGeometry3D进行碰撞检测

使用MeshGeometry3D进行碰撞检测
EN

Stack Overflow用户
提问于 2009-08-19 16:27:33
回答 4查看 3.7K关注 0票数 3

我正在创建一个类似计算机辅助设计的程序,创建modelvisual3D对象。如何使用MeshGeometry3D在对象(Modelvisual3d)之间进行碰撞检测。我必须将运动物体中的每个三角形与静止物体进行比较吗?

我做碰撞检测的最佳方法是什么?

EN

回答 4

Stack Overflow用户

发布于 2009-08-19 16:34:36

这取决于碰撞检测的精确度。

WPF的3D库中没有内置的碰撞检测。如果你需要高精度,你需要比较每个三角形。

也就是说,您可以从比较边界框和/或边界球体开始。这始终是一个很好的第一步,因为它可以快速消除大多数情况。如果您不需要精确的碰撞检测,这一点可能就足够了。

票数 0
EN

Stack Overflow用户

发布于 2009-08-19 16:41:58

补充里德的答案(基于我的answer here):

在通过边界框/球体到边界框/球体测试消除了大多数对象之后,在检查三角形/三角形碰撞之前,您应该首先针对其他对象的边界框/球体测试测试对象的三角形。这将消除更多的情况。

要排除碰撞,必须检查测试对象中的所有三角形,但要找到需要转到三角形/三角形情况的情况,只需找到与另一个对象的边界框/球体交互的第一个三角形。

票数 0
EN

Stack Overflow用户

发布于 2009-08-25 13:10:51

看看SAT定理(分离轴定理),它是最快、最简单的定理。

关于这一点的理论是,如果你能画一条线来分隔三角形,那么它们就不会发生碰撞。

如上所述,首先进行AABB早期检测,并且当两个对象发生碰撞时,针对对象B的每个多边形测试对象A的每个多边形。

从2D开始,为了测试两个多边形是否发生碰撞,您可以获得它们在可能轴(在本例中为X和Y)上的范围,如果这些范围相交,则多边形会发生碰撞。

在这个页面上,你可以找到一个关于它如何工作以及如何应用它的非常好的解释:http://www.metanetsoftware.com/technique/tutorialA.html

要将其应用于3D,只需使用每个多边形的边缘作为分隔轴。如果这些轴上的范围相交,则多边形将发生碰撞。

此外,此方法解决了移动对象的碰撞,也给出了碰撞的动量(从速度A中解析相对角速度,减去速度B,这样问题就简化为运动对象和静态对象,并将正在测试的轴上的速度添加到多边形A的范围,如果它们相交,则休息多边形的原始范围,您将获得碰撞的动量)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1301095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档