0

这个问题是关于three.js的。我想将一个网格放置在另一个网格中,然后能够移动放置在另一个网格中的网格。网格是使用 JSONLoader 加载的。一个是世界,另一个是代表用户的模型本身。我该怎么做呢?我可以毫无困难地加载两个网格,但我无法将用户模型放置在世界模型中。然后我需要执行碰撞检测以确保用户不会穿过世界墙和物体。有人建议使用 jiblibjs 作为其中的一部分,但该库已超过 1 年没有更新。还建议使用 ammo.js 进行碰撞检测。但是,这仍然不能解决将一个网格放置在另一个网格中然后移动它的问题。

4

1 回答 1

0

我认为用户模型本身和世界都处于相同的规模。您可以使用Object3D的 add() 函数嵌套对象,但请注意您导出的层次结构。例如,世界对象可能包含空对象(没有几何图形)等等。添加不会是具有挑战性的部分,碰撞检测会。

如果您的世界有点平坦(地板是平坦的,并且您需要检查与墙壁的碰撞,您应该查看碰撞贴图。基本上,您将使用呈现为单色图像的正交俯视图,其中一种颜色将代表要检查碰撞的区域,另一个将代表不可碰撞的区域。

如果世界有更复杂的外观,您可能需要查看碰撞网格:您将拥有世界的简化/非常低多边形副本,您不会渲染,但用于检查碰撞,这应该更快而不是比检查复杂网格的每个多边形的碰撞。

当然,你也有像 jiglib/ammo/etc 这样的刚体库。但即使是那些你应该考虑使用非渲染低多边形网格进行碰撞。

高温高压

于 2012-11-16T10:17:18.463 回答