在 Three.js 中编写盒盒射线碰撞检测的最佳方法是什么?

发布于 2024-12-06 14:14:05 字数 165 浏览 2 评论 0原文

此实验中的对象随机移动: http://deeplogic.info/project/webGL/

使用 Three.js 库为此编写盒盒射线碰撞检测的最佳方法是什么?

The objects in this experiment are moving around randomly: http://deeplogic.info/project/webGL/

What is the best way of writing a box-box ray collision detection for this using the three.js library?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤单情人 2024-12-13 14:14:05

如果您使用光线追踪:

对于两个盒子,检查它的 12 条边与另一个盒子的 6 个面。如果它们都不相交,则可以确定不存在碰撞。

要对照另一个盒子的表面检查一个盒子的边缘:
定义一条直接沿着边缘传播的无限光线。
定义一个位于另一个盒子面上的无限平面。
使用射线平面交集来找到无限平面和无限射线的交点。
检查交点是否:a) 位于您的盒子的边缘,b) 位于另一个盒子的面内。如果是这样,你们就有了交集!

至于一旦知道交叉点发生了该如何处理,那是一个全新的话题。

If you're using raytracing:

For both boxes, check it's 12 edges against the other box's 6 faces. If none of them intersect, you can be sure that there is no collision.

To check one box's edge against another box's face:
Define an infinite ray that goes directly along the edge.
Define an infinite plane that lies on the other box's face.
Use ray-plane intersection to find the intersection point of the infinite plane and the infinite ray.
Check that the intersection point: a) lies on the edge of your box, and b) lies within the other box's face. If so, you have an intersection!

As for what to do with that intersection once you know it's happened, that's a whole new topic.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文