轨迹球控件更改事件
TrackballControls change events
我有一个没有动画循环的静态场景,我正在尝试使用 TrackballControls 的更改事件来触发渲染功能,遵循此 thread 中的模式,即:
var controls = new THREE.TrackballControls( camera, renderer.domElement );
controls.addEventListener( 'change', render );
function render() {
renderer.render( scene, camera );
}
这适用于 OrbitControls,但当我替换 TrackballControls 时,更改事件不会触发。但是,如果我添加以下行:
_this.update();
在 TrackballControls.js 中的 mousewheel()、mousemove() 和 touchmove() 函数的末尾,我可以让更改事件正确触发(无论如何在我的例子中)。我不确定这是否是触发更改事件的最佳方式。分叉 TrackballControls 的本地副本是否是这种情况下的最佳解决方案,我是否忽略了某些内容,或者更改 TrackballControls.js 是否有意义?
TrackballControls
被编写为需要调用 controls.update()
的动画循环。
OrbitControls
,另一方面,可以用在只有当鼠标移动时才渲染场景的静态场景中,像这样:
controls.addEventListener( 'change', render );
在任何一种情况下,控件都是示例的一部分,而不是库的一部分,因此您可以根据自己的喜好自由修改它们。
如果您的场景是静态的并且不需要阻尼,那么您的建议很好。
编辑:更正 three.js r.73
我有一个没有动画循环的静态场景,我正在尝试使用 TrackballControls 的更改事件来触发渲染功能,遵循此 thread 中的模式,即:
var controls = new THREE.TrackballControls( camera, renderer.domElement );
controls.addEventListener( 'change', render );
function render() {
renderer.render( scene, camera );
}
这适用于 OrbitControls,但当我替换 TrackballControls 时,更改事件不会触发。但是,如果我添加以下行:
_this.update();
在 TrackballControls.js 中的 mousewheel()、mousemove() 和 touchmove() 函数的末尾,我可以让更改事件正确触发(无论如何在我的例子中)。我不确定这是否是触发更改事件的最佳方式。分叉 TrackballControls 的本地副本是否是这种情况下的最佳解决方案,我是否忽略了某些内容,或者更改 TrackballControls.js 是否有意义?
TrackballControls
被编写为需要调用 controls.update()
的动画循环。
OrbitControls
,另一方面,可以用在只有当鼠标移动时才渲染场景的静态场景中,像这样:
controls.addEventListener( 'change', render );
在任何一种情况下,控件都是示例的一部分,而不是库的一部分,因此您可以根据自己的喜好自由修改它们。
如果您的场景是静态的并且不需要阻尼,那么您的建议很好。
编辑:更正 three.js r.73