Używam aparatu podobnego do FPS i wykorzystuje on czwartorzędy. Ale ilekroć spróbuję spojrzeć w górę, a następnie na boki, przechyla się, a czasem może się odwrócić. Jak mogę to naprawić?
17
Używam aparatu podobnego do FPS i wykorzystuje on czwartorzędy. Ale ilekroć spróbuję spojrzeć w górę, a następnie na boki, przechyla się, a czasem może się odwrócić. Jak mogę to naprawić?
Odpowiedzi:
Możesz rozłożyć czwartorzęd na zestaw kątów odchylenia / pochylenia / przechyłu, ale zwykle jest to przesada.
Zamiast tworzyć takie czwartorzędy w ten sposób:
Spróbuj tego:
Wówczas nigdy nie będzie generować przechylenia / przechyłu i jest to równoważne z przechowywaniem odchylenia i pochylenia osobno
źródło
framePitch
iframeYaw
float
rodzaje? Byłbym również wdzięczny za wyjaśnienie pierwszego zdania.cameraOrientation
,framePitch
iframeYaw
to wszystkie kwaterniony (każdy quaternion wynosi 4 pływaków lub dwuosobowe).To był problem, który miałem przez jakiś czas i nie mogłem znaleźć żadnych odpowiedzi, więc pomyślałem, że opublikuję go tutaj.
To jest właściwie dość proste. Najprawdopodobniej wykonujesz rotacje w następujący sposób:
Ale robienie tego w ten sposób też nie działa.
Co musisz zrobić, to zrobić to w pierwszej kolejności dla obrotów w górę iw dół, a w drugiej kolejności dla obrotów w bok.
Dla mnie było tak:
Z tego powodu, pierwszy sposób ma obrót w stosunku do bieżącego kierunku na boki, który chcesz w górę i w dół, ale nie chcesz tego dla obrotów na boki, dlatego potrzebna jest druga kolejność.
źródło
W przypadku kamery FPS zwykle nie chcesz się przechylać i są ograniczone do skoku +/- 90 stopni, więc po prostu śledzę bieżący stan za pomocą kątów odchylenia i pochylenia. Pełna moc czwartorzędów nie jest w tym naprawdę pomocna.
Nadal możesz przekonwertować kąty odchylenia / skoku na i od czwartorzędów, na wypadek gdybyś chciał przejść między kamerą FPS a kamerami animowanymi przy użyciu interpolacji klatek kluczowych czwartorzędu lub czegoś podobnego.
źródło
Inną prostą sztuczką jest umieszczenie kamery w GameObject, a obrót Yaw kontroluje obiekt gry, podczas gdy kamera podrzędna jest skonfigurowana ze współrzędnymi Pitch:
źródło