javascript - 如何在 ThreeJS 中检测立方体网格与浏览器边界的碰撞

标签 javascript html three.js webgl

enter image description here

enter image description here

我是 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/

相关文章:

javascript - 如何创建一个单击时向下旋转的图标

javascript - 使用 javascript 和 jquery 动态调整大小

javascript - 如何使 Backbone 模型继承 THREE.Object3D 的原型(prototype)

javascript - 如何绕过 net::ERR_FAILED 200

jquery - 区分在同一 foreach 循环中创建的多个 HTML 表

javascript - 在 Three.js 中更改 MouseOver 上的纹理颜色

javascript - Three.js css3d - 元素周期表添加球体对象

javascript - 导入值与其导出值断开连接是否仍然是只读的?

javascript - 在 Canvas 上从边的中间向两个方向绘制一个矩形

javascript - 如何用Js循环动态生成JSON?