我是 3D 游戏和 ThreeJS 的新手。如上图所示。我的网格位于浏览器的左边界,当时网格位置是-1035而不是0。 这意味着ThreeJS中的mesh.position.x不是浏览器窗口X像素,那么ThreeJS中的mesh.position.x是什么。是否有任何计算可以将浏览器内部宽度和高度转换为与 mesh.position.x 相同。如何检测与浏览器边界的碰撞。
最佳答案
Three.js 使用 3D 空间坐标系,其中 X 轴和 Z 轴为水平轴,Y 轴为垂直轴。原点 (0, 0, 0) 只是该空间中的任意点,您可以在 3D 世界中“环顾四周”,因此原点可能不在屏幕上。出于所有意图和目的,Three.js 空间中对象的坐标也是任意单位。
您可以使用 projectors 在 2D 屏幕空间和 3D 世界空间之间进行转换。 。从 3D 到 2D 已经 answered ,还有一个不错的tutorial就主题而言。
因此,要确定网格是否在屏幕上,您应该将其 3D 位置投影到 2D 屏幕空间,然后检查它是否超出窗口或 Canvas 的大小。
关于javascript - 如何在 ThreeJS 中检测立方体网格与浏览器边界的碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18271196/