0

我已经用尽了与此问题相关的所有帖子,并且整个周末都在更改我能想到的尝试在动画功能中旋转 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); }

我无法想象为什么不。有没有人知道为什么这不起作用?

谢谢。

4

1 回答 1

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();
} );
于 2013-11-16T13:24:43.210 回答