2015-04-30 19 views
5

Üç.js kullanarak temel bir sahne oluşturdum. Amacım, FirstPersonControls.jsthree.js pov kamera hataya bakın

tabanlı bir pov kamera yapmaktır. Kendi gereksinimlerime uyacak şekilde kendi kodunu değiştirdim (fare tıklaması ile ilgili hareketli görüntü, vb.) Neredeyse bitti ama bir hata kalıyor: kamerayı açtığımda İlk kez, nesnenin pozisyonundan hareket etmeye başlamıyorum sahne yüküne bakıyorum.

Bu sadece bir fotoğraf makinesinin konumunu ayarladığımda olur. Aksi takdirde, bu bağlantıyı görebileceğiniz gibi bu neredeyse eserler: http://jsfiddle.net/42qeojs0/

Sadece yorumsuz bu 3 satır

camera.position.x = 10; 
    camera.position.y = 10; 
    camera.position.z = 250; 

Sonra sürükleyerek nesnenin etrafında görünümü taşımak deneyin (hat 60 sonrası) fareni Sürüklemenizin başlangıç ​​konumunu, ilk baktığınız konumla aynı olmadığını görürsünüz. Eğer mouse 'get etrafında önceden

cevap

1

yılında

sayesinde ilk atlayışı düzeltmek için. Baktığınız nesneye olan uzaklığı için dist numaralı yeni bir değişkeni tanıtın ve atan2'u boylamı almak için daha güvenilir bir yol olarak kullanın. Eğer, ilk pozisyon almak uzun ve dist, enlem hesaplamak eğer

dist = Math.hypot(blue1.position.x,blue1.position.y,blue1.position.z); 
phi = Math.acos(blue1.position.y/dist); 

theta = Math.atan2(blue1.position.z,blue1.position.x); 

lon = THREE.Math.radToDeg(theta); 
lat = 90-THREE.Math.radToDeg(phi); 

onDocumentMouseMove yılında

camera.target.x = dist * Math.sin(phi) * Math.cos(theta); 
camera.target.y = dist * Math.cos(phi); 
camera.target.z = dist * Math.sin(phi) * Math.sin(theta); 

Bu şekilde kullanın ve sonra size başladı olsun vektör bakarak hesaplayın. Sabit bir kat kat fazla 500 kullanarak, başladığınızdan daha uzak bir konuma ani sıçrama yaptı. (Not Math.Hypot, IE'de desteklenmez; bu yüzden, IE'yi hedefliyorsanız, bunu kendiniz hesaplamanız gerekebilir).

+0

Kodunuzla jsfiddle'ı güncelledim: http://jsfiddle.net/42qeojs0/3/ İlk atlama artık düzeltildi, ancak 124 çizgisinde ve hareketin altında görebileceğiniz gibi, özellikle denediğinizde farenizle en sağa gitmek için. 129 hattı ve altı sabitleyin, ancak ilk atlamayı tekrar etkinleştirin. Her iki kodu da karıştırmamız gerektiği gibi geliyor ama nasıl olduğunu anlayamıyoruz. Teşekkürler – Rotan