2016-04-03 31 views
0

在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); 
} 

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

+0

作为一个快速黑客,只是注释掉'requestAnimationFrame(动画);'或参见[这个答案](HTTP ://stackoverflow.com/questions/14465495/how-do-i-stop-requestanimationframe/14466255#14466255)。 – WestLangley

+0

当您注释掉requestAnimationFrame时,窗口不会刷新。 – Dov

+0

其实,现在看起来像ti的工作。刷新问题 – Dov

回答

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