我正在查看http://threejs.org站点(http://threejs.org/examples/webgl_interactive_draggablecubes.html)上的示例,并且看到它们正在沿相对于摄像机的平面移动选定的多维数据集。我了解了unprojection如何与raycaster一起工作。我没有得到的是如何进行设置,以使即使照相机倾斜,物体也始终沿地面(平面)移动。这个想法是让用户使用鼠标沿地面移动对象,即使相机倾斜并且不能完美地向下看。我是使用Three.js的新手,所以您可能想在解释我所缺少的内容时花点时间。或者,如果我不解释自己的话,也许可以问一些问题。

我的项目看起来像这样,我想用鼠标在盒子周围移动。

javascript - 使用Three.js,如何沿指定平面移动对象?-LMLPHP

最佳答案

该示例代码创建一个平面,并在摄像机角度发生变化时在MouseMove事件中对其进行更新:

plane.setFromNormalAndCoplanarPoint(camera.getWorldDirection(plane.normal), INTERSECTED.position);


而不是那样做,将飞机创建为

var plane = new THREE.Plane(new THREE.Vector3(0, 1, 0), 0);


这是原点的XZ平面。

10-07 19:21
查看更多