我如何计算一个网格体的体积与另一个网格体相交的量

问题描述 投票:0回答:1

所以,我正在 Godot 中制作一个游戏,不幸的是它缺乏任何自行执行此操作的方法,甚至无法使用碰撞网格对此进行粗略估计,所以由于我必须手动执行此操作,所以我要至少从中获得一些乐趣!

我这样做是为了浮力计算,因为我希望对此进行尽可能准确的模拟。网格体/对撞机需要能够旋转,因此 AABB 不适用,因为我打算将其应用到能够游泳的玩家身上。

我很可能最终会使用碰撞形状而不是实际的网格,因为它是一个足够好的近似值并且更容易计算,但如果它根本没有陷入太多困境,我很乐意拥有这个尽可能准确。

我尝试过 AABB 和基于玩家质心的估计,但这两种选择都不是很好,因为缺乏准确性,并且无法判断碰撞箱是否旋转。

我完全被难住了,所以任何建议将不胜感激!

c# game-physics game-development godot4
1个回答
0
投票

我鼓励使用碰撞形状,因为:

  • 它们(通常)比实际的网格更简单。
  • 我们可以使用物理API来查询它们。

当然,第一个近似是碰撞形状是否发生碰撞。您还可以迭代其中一个对象的 AABB,并以某些固定间隔检查与另一个对象的碰撞(与点相交,或与盒子碰撞形状相交)。

参见示例:检测

AABB
CollisionShape3D

之间的交叉点
© www.soinside.com 2019 - 2024. All rights reserved.