로테이션이란?
오브젝트가 3D공간 안에서 어떤 방향을 바라보고 있는지를 의미합니다.
로테이션은 내부적으로 쿼터니언으로 저장되며 클라이언트가 다룰땐 보통 오일러 각도를 다루게 됩니다.
쿼터니언은 뭔가요?
로테이션 처럼 3D 공간에서 회전을 표현하는 방법중 하나이며 XYZW 로 구성되어 있습니다.
왜 쿼터니언 개념이 필요한가요?
유니티는 오일러 각 만 사용할 경우 다음과 같은 문제가 발생될 수 있습니다.
첫째로 짐벌락, 두번째 부드러운 회전, 세번째 회전합성의 문제점이 있습니다.
이러한 문제를 쿼터니언을 활용해 회전을 매끄럽고 안전하게 사용할 수 있습니다.
오일러를 활용한 회전시 짐벌락 현상이 왜 발생되나요?
오일러 회전의 경우 X > Y > Z 순으로 하나씩 차례대로 회전시키는 방식입니다.
이러한 과정은 각 회전이 독립적이지 못하며 순서에 따라 결과가 달라질 수 있습니다.
또한 이러한 문제는 짐벌락 문제로 이어지게 되는데, 원하는 방향으로 회전시,
회전축이 겹쳐 더이상 그 방향으로 회전 시킬 수 없는 상태를 의미합니다.
즉, 절차적인 회전 연산처리 X,Y,Z 각 하나씩 진행할 경우 축이 겹치는 순간이 발생되며 이를 해결하기 위해
쿼터니언 연산의 경우 모든 축을 한번에 연산처리하게 되어 이와같은 현상을 해결할 수 있습니다.
아까 말한 부드러운 회전에는 왜 문제가 있나요?
오일러 각 연산방식을 활용해 회전시 하나씩 값이 반영되므로 비틀거리는 현상을 볼수있으며
또한 짐벌락으로 축이 사라지게 될 경우 더욱 부자연스러운 움직임이 발생될 수 있습니다.
그로인해 쿼터니언 연산방식은 모든축을 회전, 짐벌락 방지로 이러한 문제를 모두 해소할 수 있습니다.
회전합성이란 무엇인가요?
여러 회전을 한번의 회전값으로 계산하는 것을 의미합니다.
회전합성을 이해할 수 있다면 쿼터니언의 본질을 잘 이해할 수 있게될것 같다. 현재의 단계에선 일단 이정도 까지만 숙지해두고
다른 범위의 공부를 하는게 효율적일것 같다. 좀 나중에
'Unity' 카테고리의 다른 글
| IL2CPP 파고들기 (1) | 2025.04.24 |
|---|---|
| RectTransform 파고들기 (0) | 2025.04.19 |
| 유니티 라이프사이클 (0) | 2025.04.15 |
| Unity Job System (0) | 2025.02.10 |
| FixedUpdate , Update , LateUpdate (0) | 2025.02.08 |