如何在Three.js中进行平移操作后更新模型的中心?

时间:2015-01-20 02:50:39

标签: javascript camera rotation three.js

我是一名经验丰富的Javascript程序员,但却是一名Three.js菜鸟。我已经基于Three.js回购中的Molecule示例启动了一个项目:

http://threejs.org/examples/#css3d_molecules

pan操作的代码如下所示:

this.panCamera = (function(){

    var mouseChange = new THREE.Vector2(),
        objectUp = new THREE.Vector3(),
        pan = new THREE.Vector3();

    return function () {

        mouseChange.copy( _panEnd ).sub( _panStart );

        if ( mouseChange.lengthSq() ) {

            mouseChange.multiplyScalar( _eye.length() * _this.panSpeed );

            pan.copy( _eye ).cross( _this.object.up ).setLength( mouseChange.x );
            pan.add( objectUp.copy( _this.object.up ).setLength( mouseChange.y ) );

            _this.object.position.add( pan );
            // _this.target.add( pan );
            _this.target.position.add(pan);

            if ( _this.staticMoving ) {

                _panStart.copy( _panEnd );

            } else {

                _panStart.add( mouseChange.subVectors( _panEnd, _panStart ).multiplyScalar( _this.dynamicDampingFactor ) );

            }

        }
    }

由于代码当前是结构化的,因此在平移操作后模型的中心不会更新。所以最初,当你向任何方向旋转模型时,它会很好地旋转它的中心就像一个旋转到位的球体。然而,在平移操作之后,不是围绕其中心点旋转*,而是在平移操作*之前围绕中心点旋转。这使得该模型看起来像是围绕旧中心点旋转的卫星,而不是围绕其中心旋转。 (想想在一根绳子的末端,一个球在你周围摆动。)

_this.object是一个ThreeJS PerspectiveCamera对象 _this.target是一个我认为是模型的3D矢量,但我不太确定。

我找到了这个SO帖子,但没有答案:

three.js: Rotate around origin after panning camera

在平移操作后,我需要更改以更新模型的中心?

0 个答案:

没有答案