Javascript ThreeJS动画对象3D.lookAt oddity

Javascript ThreeJS动画对象3D.lookAt oddity,javascript,three.js,Javascript,Three.js,我正在尝试设置Object3D的lookAt方法的动画,以查看目标向量3。我的Tween函数按照递增的scalarMultiplyVal(0.0-1.0)跟踪浮点,但无论我尝试什么,Object3D都已经在Tween开始之前查看目标。很奇怪 TweenMax.to( this, 5, {scalarMultiplyVal:1, onUpdate:function(){ let targetVector = new THREE.Vector3( target.positio

我正在尝试设置Object3D的lookAt方法的动画,以查看目标向量3。我的Tween函数按照递增的scalarMultiplyVal(0.0-1.0)跟踪浮点,但无论我尝试什么,Object3D都已经在Tween开始之前查看目标。很奇怪

TweenMax.to( this, 5, {scalarMultiplyVal:1, onUpdate:function(){
            let targetVector = new THREE.Vector3( target.position.x, target.position.y, target.position.z ).multiplyScalar( scalarMultiplyVal );
            console.log( targetVector ) // logs "animating" x,y,z values as expected
            displayObject.lookAt( targetVector ); // does not animate. Already fulling looking at target.position ( scalarMultiplyVal = 1.0 )
        }});

本质上,我试图让我的Object3D设置动画/旋转以定期查看一个新的矢量3,但相反,Object3D已经完全查看target.position,而忽略了矢量乘法。很奇怪。任何建议都会大有帮助

我强烈建议使用
Object3D.lookAt()
而不是执行动画。该方法基于Unity的。它在内部执行slerp,这非常适合您的用例。下面的示例演示了
四元数.rotateTowards()
的用法


three.js R104

乘以矢量只会使其变长,而不会改变其指向的角度。您需要在现有目标向量和最终目标向量之间切换,或者您需要设置目标位置本身的动画,而不是尝试在多个帧上切换目标向量。@AndyRay这是一个很好的建议,我应该已经知道了!非常感谢你的建议!