W t3.js orientację obiektu można określić za pomocą jego wektora obrotu Eulera object.rotation
. Trzy elementy wektora obrotu reprezentują obrót w radianach wokół wewnętrznej osi X, osi Y i osi Z obiektu.
Kolejność wykonywania obrotów określona jest przez object.rotation.order
. Domyślna kolejność to "XYZ" - najpierw następuje obrót wokół osi X, potem oś Y, potem oś Z.
Obrót odbywa się w odniesieniu do wewnętrznego układu współrzędnych obiektu - a nie układu współrzędnych świata. To jest ważne. Tak więc, na przykład, po wystąpieniu rotacji x, osie y i z-obiektu nie będą na ogół współliniowane z osiami światowymi. Rotacje określone w ten sposób nie są unikalne.
Tak więc, na przykład, jeśli w kodzie określić,
camera.rotation.y = y_radians; // Y first
camera.rotation.x = x_radians; // X second
camera.rotation.z = 0;
obroty są stosowane obiektu rotation.order
, a nie w kolejności ich określony.
W twoim przypadku możesz bardziej intuicyjnie ustawić rotation.order
na "YXZ", co jest równoważne "nagłówkowi, skokowi i przechyleniu".
Aby uzyskać więcej informacji o kątach Eulera, patrz: Wikipedia article. Three.js stosuje się do konwencji Tait-Bryan, jak wyjaśniono w artykule.
three.js r.61
Twój komentarz działał. Przy inicjalizacji obiektu kamery dodałem następujący wiersz kodu, 'camera.eulerOrder =" YXZ ";' –
Teraz jest to 'camera.rotation.order = 'YXZ';' – WestLangley
Nie masz na myśli "odchylenia, wysokości i rolka" ? :) – fuzz