TrackballControls改变事件

时间:2015-02-26 15:26:48

标签: three.js

我有一个没有动画循环的静态场景,我正在尝试使用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是否有意义?

1 个答案:

答案 0 :(得分:4)

编写

TrackballControls是为了要求调用controls.update()的动画循环。

另一方面,

OrbitControls可用于静态场景,只有在移动鼠标时才会渲染场景,如下所示:

controls.addEventListener( 'change', render );

在任何一种情况下,控件都是示例的一部分 - 而不是库 - 因此您可以自由地根据自己的喜好进行操作。

如果您的场景是静态的并且不需要阻尼,那么您提出的建议很好。

编辑:更正为three.js r.73