【问题标题】:three js move camera in linear direction right三个js向右线性移动相机
【发布时间】:2019-07-16 16:59:02
【问题描述】:

我需要帮助以线性运动方式移动 3D 相机。当我使用下面的代码时,它会围绕对象旋转相机,但我需要沿着对象的一侧移动相机。

我想要这个:

但我明白了:

这是我的代码:

function MovePositionRight() {
                  var X, sCurrentX;
                  var sCurrentX = viewer.camera.position.z;
               
                  X =  viewer.camera.position.z - 0.5;
                  
                 MovePositionZ(viewer.camera.position.x, viewer.camera.position.y, X);
              }
 function MovePositionZ(X,Y,Z) {
                  //viewer.camera.position.set(0, 0, 15);
                   
                  viewer.camera.position.set(X, Y, Z);
                  viewer.camera.updateProjectionMatrix();
                  viewer.render();
              }

【问题讨论】:

  • 你在其他地方打电话给camera.lookAt()吗?或者在代码中的任何位置更改camera.rotation
  • 我也试过了,这个代码但是会旋转。 viewer.camera.position.set(X, Y, Z); viewer.camera.up = new THREE.Vector3(X, Y, Z); viewer.camera.lookAt(new THREE.Vector3(X, Y, Z));

标签: javascript three.js


【解决方案1】:

要以线性方式移动相机,您只需更改其.position 属性即可。比如:

camera.position.x += 0.1;

应该可以解决问题。只要您不触摸它的.rotation, .up 或其他属性,它就应该在您声明的轴上移动而不旋转。

See it in action in this JSFiddle。我所做的只是在第 40 行更改 .position.x += 1;

【讨论】:

  • 不,它还在旋转。我没有看到 .rotation, .up
  • 它还在旋转是什么意思?我发布的 JSFiddle 中的相机始终面向前方,它永远不会转动。我想你可能会对相机的透视感到困惑:当它向右移动时,你可以看到事物的侧面,但这就是透视的工作方式。如果您不想要任何透视变形,您可以使用正交相机。
猜你喜欢
  • 1970-01-01
  • 2014-08-17
  • 2017-09-10
  • 1970-01-01
  • 2016-11-02
  • 2015-12-28
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多