2016-04-12 6 views
0

OrbitControlsクラスを使用しています。panUp関数をpanFrontで置き換えようとしています。私の目的はz軸に沿ってカメラを動かすことです。 THREE.js:PerspectiveCameraでOrbitControlsを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); 
    }; 

}(); 
+1

http://stackoverflow.com/questions/26185074/three-js-orbitcontrols-js-pan-camera-parallel-to-ground -plane-like-google-e/26188674#26188674 – WestLangley

+0

はい、同じ問題があるようですが、私はうまくいきました。 –

答えて

0

ソリューション:のみのxz軸にパンを確保するためにv.y = 0;

編集

を設定します。

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); 
    }; 

}(); 

私は0にxおよびy成分を設定

関連
+0

クロージャの目的は、ガベージコレクションされなければならない新しい「Vector3」インスタンスのインスタンス化を避けることです。呼び出しごとに2つのインスタンスを作成しています。 – WestLangley

+0

ここで、 'v'は方向であるため、単位長を持つように正規化する必要があります。一貫した結果を得るためには、上記にリンクした答えの数学を使用してください。 – WestLangley

関連する問題