我有一个没有动画循环的静态场景,我正在尝试使用TrackballControls的change事件来触发此thread模式后的渲染函数,即:
var controls = new THREE.TrackballControls( camera, renderer.domElement );
controls.addEventListener( 'change', render );
function render() {
renderer.render( scene, camera );
}
这适用于OrbitControls,但是当我替换TrackballControls时,更改事件不会触发。但是,如果我添加以下行:
_this.update();
在mouseball(),mousemove()和touchmove()函数的结尾处TrackballControls.js中,我可以正确地触发更改事件(无论如何,在我的情况下)。我不确定这是否是解决更改事件的最佳方法。是否为本案提供了TrackballControls的本地副本,我是否忽视了某些内容,或者更改TrackballControls.js是否有意义?
答案 0 :(得分:4)
TrackballControls
是为了要求调用controls.update()
的动画循环。
OrbitControls
可用于静态场景,只有在移动鼠标时才会渲染场景,如下所示:
controls.addEventListener( 'change', render );
在任何一种情况下,控件都是示例的一部分 - 而不是库 - 因此您可以自由地根据自己的喜好进行操作。
如果您的场景是静态的并且不需要阻尼,那么您提出的建议很好。
编辑:更正为three.js r.73