如何关闭three.js中的动画

时间:2016-04-03 15:40:01

标签: three.js

在测试three.js中的代码时,不需要动画。我可以看到第一个渲染帧。这将耗电更少,并且当显卡加热时,停止笔记本电脑上的风扇开启。

three.js中的示例具有以下结构:

function init() {
  animate()
}

function animate() {
    requestAnimationFrame( animate );
    render();
    targetRotation = targetRotationOnMouseDown + ( mouseX - mouseXOnMouseDown ) * 0.05;
}

function render() {
    group.rotation.y += ( targetRotation - group.rotation.y ) * 0.05;
    renderer.render( scene, camera );
}

我没有看到如何关闭重复的动画调用。 有没有简单的方法来关闭动画?

1 个答案:

答案 0 :(得分:1)

你不必在three.js中有一个动画循环 - 比方说,如果你有一个静态场景。只需致电

renderer.render( scene, camera );

每当相机移动或装载机完成加载模型或加载纹理时,您都需要重新渲染。

如果您将OrbitControls与静态场景一起使用,则可以像这样实例化OrbitControls

controls = new THREE.OrbitControls( camera, renderer.domElement );
controls.addEventListener( 'change', render ); // use if there is no animation loop

其中render()调用renderer.render( scene, camera )

如果要加载模型或纹理,则three.js加载器具有您可以指定的回调函数。例如,

var loader = new THREE.TextureLoader();
var texture = loader.load( 'myTexture.jpg', render );

另外

var manager = new THREE.LoadingManager();
var loader = new THREE.OBJLoader( manager );

loader.load( 'myModel.obj', function( object ) {
    // your code...
    render();
}

three.js r.75