Unity

Rotation 파고들기

kark 2025. 4. 19. 17:47
728x90

로테이션이란?


오브젝트가 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