2013-11-04 36 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