2013-11-04 35 views
0

我已經用盡了所有與此問題相關的帖子,並且花了整個週末改變了我所能想到的在動畫函數中旋轉obj mtl的所有內容。什麼都沒有如何在動畫中旋轉obj mtl對象

代碼是在threejs中,我添加了所有的庫等,並全局聲明objmtl對象。我在代碼中旋轉對象:

loader1 = new THREE.OBJMTLLoader(); 
       loader1.load('head_no_eyes.obj', 'head_no_eyes.mtl', 
       function (object1) { 
       object1.position.y = - 10; 
       object1.rotation.x = Math.PI/15.; 
       scene.add(object1); 
       animate(); 
       }); 

,但不是在動畫例程:

function animate() { 
      requestAnimationFrame(animate); 
      camera.position.x += (mouseX - camera.position.x) * 0.5; 
      camera.position.y += (- mouseY - camera.position.y) * .05; 
     // object1.rotation.y += 0.07; // this line makes it fail 
      camera.lookAt(scene.position); 
      renderer.render(scene, camera); } 

我無法想象爲什麼不。有沒有人知道爲什麼這不起作用?

謝謝。

回答

0

您對JavaScript範圍有一個簡單的問題。

function (object1) { 
    object1.position.y = - 10; 
    object1.rotation.x = Math.PI/15.; 
    scene.add(object1); 
    animate(); 
}); 

該代碼object1只能在該特定回調中訪問。 animate()無法訪問它。這意味着您正在嘗試修改未定義對象的rotation屬性。

嘗試使用此代碼,而不是:

function (object) { 
    object1 = object; 
    object1.position.y = - 10; 
    object1.rotation.x = Math.PI/15.; 
    scene.add(object1); 
    animate(); 
}); 
+0

丹克杜布。 Sie sind ein guter Mensch。 – user2949409