2016-04-12 7 views
0

Ich verwende die OrbitControls Klasse und ich versuche, die panUp-Funktion durch panFront zu ersetzen. Mein Ziel ist es, die Kamera entlang der Z-Achse zu bewegen.THREE.js: OrbitControls schwenken in Z-Achse mit PerspectiveCamera

Ich habe folgende Änderung aber scheint, dass es nicht funktioniert:

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

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

+0

Ja, es scheint das selbe Problem, ich habe die Lösung gefunden, die mir geholfen hat, danke sowieso! –

Antwort

0

Lösung:

Edited

Set v.y = 0; die Pfanne nur in XZ-Achse zu sichern.

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

}(); 

Ich habe die x- und y-Komponenten auf 0

+0

Der Zweck der Schließung besteht darin, die Instanziierung neuer "Vector3" -Instanzen zu vermeiden, die durch Müllsammlung gesammelt werden müssen. Sie erstellen bei jedem Aufruf zwei Instanzen. – WestLangley

+0

Nun sollte 'v' auf Einheitslänge normiert werden, da es sich um eine Richtung handelt. Verwenden Sie die Mathematik in der Antwort, die ich oben verlinkt habe, um konsistente Ergebnisse zu erhalten. – WestLangley