在测试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 :(得分: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