【问题标题】:THREE.js: OrbitControls pan in z axis with PerspectiveCameraTHREE.js:OrbitControls 使用 PerspectiveCamera 在 z 轴上平移
【发布时间】:2016-04-12 08:50:36
【问题描述】:

我正在使用OrbitControls 类,我正在尝试用 panFront 替换 panUp 函数。我的目标是沿 z 轴移动相机。

我做了以下更改,但似乎不起作用:

var panFront = function() {

    var v = new THREE.Vector3();

    return function panFront( distance, objectMatrix ) {

        v.setFromMatrixColumn( objectMatrix, 2 ); // get Z column of objectMatrix
        v.multiplyScalar( distance );

        panOffset.add( v );
    };

}();

【问题讨论】:

标签: three.js


【解决方案1】:

解决办法:

已编辑

设置 v.y = 0; 以仅在 xz 轴上固定平移。

var panFront = function() {

    let v = new THREE.Vector3();

    return function panFront( distance, objectMatrix ) {

        v.setFromMatrixColumn( objectMatrix, 2 ); // get Z column of objectMatrix
        v.y = 0;

        v.multiplyScalar( -distance );

        panOffset.add( v );
    };

}();

我将 x 和 y 分量设置为 0。

【讨论】:

  • 闭包的目的是避免实例化必须被垃圾回收的新Vector3实例。您每次调用都会创建两个实例。
  • 现在,v 应该被标准化为具有单位长度,因为它是一个方向。使用我上面链接的答案中的数学以获得一致的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
  • 2022-06-29
相关资源
最近更新 更多