2016-04-12 25 views
0

OrbitControls sınıfını kullanıyorum ve panUp işlevini panFront ile değiştirmeye çalışıyorum. Amacım kamerayı z ekseni boyunca hareket ettirmek. THREE.js: OrpointControls PerspectiveCamera ile z ekseninde tava

Aşağıdaki değişiklik yaptım ama çalışmıyor gibi görünüyor:

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

Evet, aynı problem gibi görünüyor, yine de işe yarayan çözümü buldum, zaten teşekkürler! –

cevap

0

Çözüm: Sadece xz ekseninde tava sabitlemek için v.y = 0;

Düzenlendi

ayarlayın.

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

}(); 

I 0 için x ve y bileşenlerinin set

İlgili
+0

Kapanmanın amacı, çöp toplanması gereken yeni 'Vector3' örneklerini ortaya çıkarmaktan kaçınmaktır. Her aramada iki örnek oluşturuyorsunuz. – WestLangley

+0

Şimdi, v 'birim uzunluk olması için normalleştirilmelidir, çünkü bu bir yöndür. Tutarlı sonuçlar için yukarıdaki bağladığım cevaptaki matematiği kullanın. – WestLangley