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