유니티 기초

[Unity] 짐벌락(Gimbal lock) 현상이 무엇일까?

DearGreen 2024. 10. 8. 21:27

짐벌락(Gimbal lock) 현상 이란?


먼저 짐벌락의 '짐벌' 이 무엇인지 알아보자.

 

[짐벌(gimbal)]

 

roll pitch yaw 축이 회전한다! x, y, z 와 비슷하지만, 차이가 있다.

짐벌(gimbal)은 하나의 축을 중심으로 물체가 회전할 수 있도록 만들어진 구조물이다. 세 개의 짐벌로 구성된 구조에서 한 짐벌의 회전축이 다른 두 짐벌의 회전축과 직각을 이루도록 구성이 되면, 가장 안쪽 짐벌의 회전축에 장착된 물체는 바깥 지지대의 회전에 영향을 받지 않는다.

출처 : https://ko.wikipedia.org/wiki/%EC%A7%90%EB%B2%8C

 

위 짐벌의 회전 모습을 보면 짐벌은 다수의 고리로 구성되어 있으며, 각 고리는 특정 축을 기준으로 회전한다. 일반적으로 Roll, Pitch, Yaw의 세 가지 축이 있으며, 각 고리는 다른 고리의 자식으로 연결되어 있어 서로 종속적인 움직임이 발생한다.

  • Roll 축: 좌우 회전
  • Pitch 축: 앞뒤 회전
  • Yaw 축: 상하 회전

각 고리는 자신이 가진 축을 기준으로만 회전하지만, 서로 연결되어 있기 때문에 전체적으로는 모든 방향으로 회전하는 것처럼 보인다. 그렇다면, '짐벌락' 현상이란게 뭘까?

 

[짐벌락(gimbal Lock)]

 

 

출처 : https://cutemoomin.tistory.com/entry/%EC%A7%90%EB%B2%8C%EB%9D%BDgimbal-lock%EA%B3%BC-%EC%82%AC%EC%9B%90%EC%88%98%EC%BF%BC%ED%84%B0%EB%8B%88%EC%96%B8-quaternion

 

각 축을 오일러 각도를 사용해 회전시키면 x - y - z 축 순으로 회전할 것이다. 이 때, 먼저 회전한 축이 회전을 하지 않은 종속된 축을 회전 시킬 것이다. 따라서 두번째로 회전한 축의 회전 결과로 첫 번째, 세 번째 축이 겹치는 상황이 발생하는 것이다. 해당 종속된 축은 자유도를 잃으며, 이는 정확한 물체의 회전을 표현할 수 없게 한다.

 

위 그림 또한 세 축을 동일 평면 상에 위치시킨다면, 두 축의 회전만 표현이 가능해 문제가 발생하는 것을 보여주고 있다.

이 때, 해결책이 사원수(Quaternions)을 사용한다는 것인데 사원수가 무엇일까?

 

사원수(Quaternions)는 4차원 복소수 체계로, 주로 3D 컴퓨터 그래픽스와 로봇 공학, 항공 우주 분야에서 회전을 표현하는 데 사용된다. 일반적인 사원수는 다음과 같은 형태로 표현된다.

 

[ q = a + bi + cj + dk ]

여기서 ( a, b, c, d )는 실수이며, ( i, j, k )는 단위 사원수이다. 이 단위 사원수들은 다음과 같은 곱셈 규칙을 가진다.

  • ( i^2 = j^2 = k^2 = ijk = -1 )

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=canny708&logNo=221546934718

 

짐벌락 없는 회전, 사원수(Quaternion)

2D에서는 회전이 굉장히 명확합니다. 점 P에 대해 Θ만큼 회전한 좌표를 구하려면, 기존 좌표값과 함께 ...

blog.naver.com

다른 포스트의 설명이 더 적절하게 사원수에 대해 설명해 줄 수 있을 것 같아, 사원수에 관해서는 간략하게 설명을 마치고 넘기는 것으로 글을 마치겠다.