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