如何在动画中旋转 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); }

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

谢谢。

你遇到了一个简单的关于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();
} );

最新更新