2016-04-03 13 views
0

Üç.js'de kodu test ederken, animasyona gerek yoktur. İlk işlenmiş çerçeveyi görebiliyorum. Bu daha az güç kullanır ve grafik kartı ısındıkça dizüstü bilgisayardaki fanı durdurur.Üç.js'de animasyonu kapatma

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

ben animasyon uygulamak için tekrarlanan çağrılar nasıl kapatılacağı görmüyorum: three.js içinde

örnekler aşağıdaki yapıya sahiptir. Animasyonu kapatmak için kolay bir yol var mı?

+0

Örneğin,

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

, : //stackoverflow.com/questions/14465495/how-do-i-stop-requestanimationframe/14466255#14466255). – WestLangley

+0

requestAnimationFrame öğesini bildirdiğinizde, pencere hiçbir zaman yenilenmez. – Dov

+0

Aslında, ti şimdi çalışıyor gibi görünüyor. Yenile sorunu – Dov

cevap

1

Üç.js'de bir animasyon döngüsüne sahip olmanız gerekmez - statik bir sahneniz varsa. Sadece Sen ne zaman kamera hareketleri ya yükleyiciler Modelleri yüklemeyi veya yükleme dokuları bittiğinde yeniden işlemek gerekir

renderer.render(scene, camera); 

diyoruz. Statik sahnesi ile OrbitControls kullanıyorsanız

, bunu gibi OrbitControls örneğini:

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

nerede render() aramalar renderer.render(scene, camera).

Model veya doku yüklüyorsanız, üç.js yükleyicilerinin belirtebileceğiniz bir geri çağırma işlevi vardır. `Veya (http [bu cevabı] bakın; sadece açıklama` requestAnimationFrame (animasyon) hızlı bir hack olarak da

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

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

Three.js r.75