2

我正在使用 Three.js 和 Physijs。我有一堵墙应该作为边界,但如果力量足够的话,物体(尤其是盒子)经常会穿过它。检测到碰撞,因为它们没有干净地这样做,但它们开始在某个方向旋转或反弹。有没有办法增加墙可以作用在碰撞物体上的最大力?

墙的所有四个点都在同一平面上,形成一个矩形。网格由两个大三角形面组成。我正在使用凸网格。

将两个三角形分成许多较小的三角形并不能缓解问题。

我可以确认法线没有问题,因为墙壁的阴影正确。

如何在不将墙转换为 BoxMesh 的情况下解决此问题?

我也会感谢解释为什么会发生这种情况。我猜引擎限制了碰撞可以施加的最大力。

4

1 回答 1

1

我认为是运动夹紧

https://github.com/chandlerprall/Physijs/wiki/Collisions

当一个对象具有很高的速度时,如果它在模拟步骤之间穿过并经过其他对象,则可能会错过碰撞。要解决此问题,请启用 CCD 运动钳位。对于大小为 1 的立方体,请尝试:

// 如果物体在一个模拟帧中移动超过 1 米,则启用 CCD mesh.setCcdMotionThreshold(1);

// 设置嵌入球体的半径,使其小于对象 mesh.setCcdSweptSphereRadius(0.2);

希望这行得通,我现在试试

于 2015-10-07T14:03:58.420 回答