如何在动画中旋转obj mtl对象

时间:2013-11-04 22:33:48

标签: javascript rotation three.js

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

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

感谢。

1 个答案:

答案 0 :(得分: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();
} );