gpt4 book ai didi

collision-detection - 使用 AABB 或 OBB 进行碰撞检测的疑惑

转载 作者:行者123 更新时间:2023-12-04 18:13:50 29 4
gpt4 key购买 nike

我已经阅读了一些关于它的内容,我想用它来做一些实现。但我有几个疑问。 de AABB 的问题是对象必须是轴对齐的,否则你必须每帧重新计算 bbox,对吗?重新计算成本高吗?还有精度怎么样,能不能做个碰撞树分割bbox?它如何与 AABB 一起使用?

OBB 是面向对象旋转的,对吧?您必须在游戏初始化之前构建树。我读了它更难实现并且有点贵,但我在精度上获得了很多。但是如果对象在游戏中旋转,bbox 会不会“自动”重新计算它的旋转呢?

哪一种最常用于游戏,为什么?

先感谢您 :)

最佳答案

AABB、OBB、球体、胶囊……之间的选择取决于您正在运行的模拟类型以及您的约束(通常是实时应用程序)是什么。

您需要评估利弊并做出相应的选择。例如,使用 AABB 的测试非常快,但您需要在对象旋转时重新计算 AABB。但是,如果您正在处理非常复杂的对象并处理 BVH ,更新 AABB 树非常快,因为您只需要重新计算(“从头开始”)底部的 AABB,较高的 AABB 是从子 AABB 构建的。使用 OBB,测试成本更高,但如果您正在处理刚性对象,则无需重新计算 OBB。

如果您决定使用可变形对象,AABB 树(或球体树)绝对是一个更好的主意,因为无论如何您的树都需要更新。

问题是:更新 AABB 树或与 OBB 重叠测试产生的开销会更昂贵吗?所有这一切都取决于您的模拟:对象复杂性、每秒平均 CD 测试等……您可以找到一些基于不同方法(BVH、网格...)的不同 CD 库的基准,具有不同的形状,针对特定问题进行测试。 Here是一个您可能会觉得有趣的示例。

关于实现,由于所有这些都是多年前研究过并在许多库中实现的,因此您应该不会遇到任何麻烦。你可以看看 Christer Ericson 的实时碰撞检测,所有这些问题都得到了非常清楚的回答和解释。

您还可以使用不同形状之间的混合,例如一个用于宽相,另一个用于窄相(一旦你到达叶子),但你可能不需要这样的东西。

关于collision-detection - 使用 AABB 或 OBB 进行碰撞检测的疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7548153/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com