Jestem pewien, że to pytanie zostało zduplikowane wiele razy, jednak nie mogę znaleźć odpowiedzi na mój konkretny problem!Three.js: Uzyskaj kierunek, w którym jest kamera
Tworzę grę przy użyciu html5 i THREE.js, i mam kamerę, która obraca się z kolejnością Eulera w "YXZ".
To jest tak, że kamera obraca się w górę, w dół, w lewo i w prawo jak w głowę. Jak w widoku pierwszej osoby.
W tej kolejce Eulera właściwość z w camera.rotation nie jest używana (zawsze 0). x służy do określenia wysokości lub szerokości geograficznej w radianach, a y jest używane do określenia długości geograficznej.
Mam wiele celów poruszających się wokół użytkownika w sferyczny sposób, z kamerą stale w środku tej kuli. Powiedzmy, że kula ma promień 1000.
Moim celem jest obliczenie kąta między miejscem PATRZĄCym a miejscem docelowym.
NapisaĹ,em ten kod, który oblicza się kąt między wektorami 2:
var A = new THREE.Vector3(1,0,0);
var B = new THREE.Vector3(0,1,0);
var theta = Math.acos(A.dot(B)/A.length()/B.length());
// theta = PI/2;
mam wektor celu (celów [0] .position).
Chodzi o to, że nie mogę wymyślić sposobu, by uzyskać wektor miejsca, w którym patrzy kamera.
Przyjrzałem się metodom Vector3.applyProjection i zastosowałem metody symulacyjne, a także odtwarzałem, ale nadal nie można uzyskać dobrych wyników.
Uważam, że zamówienie Eulera musi najpierw zostać zmienione z powrotem na "XYZ" zanim zostaną wykonane jakiekolwiek prognozy? Próbowałem i nie jestem pewien, jak to zrobić, dokumentacja jest dość trudna do zrozumienia.
Powiedz, że jeśli kamera patrzy bezpośrednio w prawo, muszę uzyskać wektor, który jest oddalony o RADIUS od środka w kierunku bieżącego obrotu.
Więc skończę z 2 wektorami, na których mogę wykonywać obliczenia!
Dziękuję za wszystko!
Jak mogę się dowiedzieć, w którym kierunku skierowana jest kamera lub w kierunku północ/południe? lub po prostu: ile stopni kamera jest obracana? Nie rozumiem, co to jest target.position, to kamera –
ma teraz funkcję getWorldDirection(), aby znaleźć sposób, w jaki jest skierowana w przestrzeń światową. – Neil