【问题标题】:Three.js move camera from a vector to anotherThree.js 将相机从一个向量移动到另一个
【发布时间】:2014-05-07 17:56:12
【问题描述】:

我做了一个简单的场景,并引用了http://www.96methods.com/2011/12/three-js-moving-the-camera/来移动相机:

var timer = new Date().getTime() * 0.0005; 
camera.position.x = Math.floor(Math.cos( timer ) * 200);
camera.position.z = Math.floor(Math.sin( timer ) * 200);

但是,它只环绕相机,我发现很难以指定的速度从一个向量移动到另一个向量。 例如,相机点是(0,0,0),我想移动到(100,0,100),相机将面向该点并移动到该点。 有什么方法可以通过代码实现它,还是我错过了任何官方功能?谢谢。

【问题讨论】:

    标签: javascript 3d three.js


    【解决方案1】:

    感谢回答,另外我发现可以通过编码解决

    camera.lookAt(new THREE.Vector3(moveVectors[currentIndex][0] * ((time - moveBaseTime+1)/100000) + camera.position.x * (1-((time - moveBaseTime+1)/100000)), moveVectors[currentIndex][1] * ((time - moveBaseTime+1)/100000) + camera.position.y * (1-((time - moveBaseTime+1)/100000)) , moveVectors[currentIndex][2] * ((time - moveBaseTime+1)/100000) + camera.position.z * (1-((time - moveBaseTime+1)/100000))));
    camera.position.x = moveVectors[currentIndex][0] * ((time - moveBaseTime)/100000) + camera.position.x * (1-((time - moveBaseTime)/100000));
    camera.position.y = moveVectors[currentIndex][1] * ((time - moveBaseTime)/100000) + camera.position.y * (1-((time - moveBaseTime)/100000));
    camera.position.z = moveVectors[currentIndex][2] * ((time - moveBaseTime)/100000) + camera.position.z * (1-((time - moveBaseTime)/100000));
    

    理论上设置定时器的地方,经过定时器的时间会达到1。所以,等式应该是: CURRENT_POSITION*(1-timer) + TARGET_POSITION*timer ;随着计时器从 0 增加到 1,当前位置*(1-计时器)将变为零,目标位置*计时器将是目标位置。

    【讨论】:

      【解决方案2】:

      我认为tween.js 在这里很有用处:

      new TWEEN.Tween( camera.position )
        .to( {
          x: position.x,
          y: position.y,
          z: position.z}, 2000 )
        .easing( TWEEN.Easing.Sinusoidal.EaseInOut)
        .start();
      

      此示例会将相机移动到由 x、y、z 定义的位置,并花费 2000 毫秒(2 秒)。包含大量过渡效果,可以让您的动画看起来非常流畅。

      【讨论】:

        猜你喜欢
        • 2011-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-13
        • 2011-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多