1

所以我有轨道控制工作,但我在页面上有 3 个对象。当它控制一个人时,它就控制了所有的人。平移/缩放也完全不适用于 OrthographicCamera。

我为 OrbitControls 的每个实例分配了自己的变量,因此它不是全局的。

controlsObjOne = new THREE.OrbitControls(cameraObjOne);
controlsObjOne.addEventListener('change', renderObjOne);

我对其他模型使用 ObjTwo、Three 等。除了轨道之外,一切都以这种方式工作(相机、灯光、渲染等)。这个库是否有可能,或者是否有另一个我没有见过的可以与多个对象一起使用的库?

4

1 回答 1

3

原因是默认情况下,OrbitControls 将eventListeners鼠标/触摸输入附加到文档。domElement可以将 a作为第二个参数移交。然后 alleventListeners将绑定到该元素(例如渲染器 canvas domElement)。但这将极大地限制导航的可能性,因为mousemove只有当鼠标在画布区域时才会注册。

您想要的是mousedown渲染器画布上的 eventListeners 和mousemove文档上的事件监听器,以便在按下鼠标后自由移动鼠标。

我创建了一个带有第三个参数的修改版本来移交您的画布元素:https ://gist.github.com/mrflix/8351020

于 2014-01-10T12:23:51.800 回答