에디의 우당탕탕 코딩공장

[Graphics] Gimbal Lock

by 인턴 에디

짐벌락 현상(  Gimbal Lock )

 

짐벌 ( Gimbal )

- 짐벌이란 물체가 회전하도록 중심축을 가진 구조물을 말한다.

- 3차원 공간에 놓인 강체의 방향은 오일러 각도를 사용하여 세 번의 회전을 통해 얻을 수 있다.

 

오일러 각 ( Euler Angle )

- 강체가 놓인 방향을 3차원 공간에 표시하기 위해 레온하르트 오일러가 도입한 세 개의 각도

- 일반적인 3차원 좌표인 x,y,z를 Pitch, Yaw, Roll 이라고 한다.

 

 

짐벌락 ( Gimbal Lock )이란?

- 각각의 고리는 고유한 축을 기준으로 회전하는데 가장 바깥쪽 고리만 해당할 뿐, 안쪽 고리들은 여러방향으로 회전함을 알 수 있다.

- 안쪽 고리가 여러방향으로 회전하는 이유는 고리가 종속 관계를 형성하기 때문이다.

- 두개 이상의 고리가 겹치게 되면 한 축의 회전각이 소실되는데 이를 짐벌락이라고 한다.

녹색 고리의 회전으로 인해 분홍색과 파란색 고리가 겹치게 되면

두 고리의 회전은 동일한 결과를 낳게 되면서

자연스럽게 한 축의 회전은 소실된다.

 

 

짐벌락 해결법

쿼터니언을 사용한다.

 

쿼터니언( Quarternion )

복소수를 확장한 x,y,z,w 성분을 갖는 4차원 벡터.

세개의 축을 동시에 회전시켜 축에 대한 종속 관계를 없애 하나의 축이 소실되는 문제점을 방지할 수 있다.

 

장점

- 짐벌락 문제 발생 ❌

- 계산비용 적음

 

한계점

- 직관적 ❌ 유니티에서는 Vector3을 넘겨주면 쿼터니언으로 바꿔주는 메서드가 존재한다.

- 180도보다 큰 회전을 표현할 수 없다.

 

'Client > directX' 카테고리의 다른 글

[Graphics] Tesselation  (1) 2024.02.27
[Graphics] Vertex Shader VS Pixel Shader  (0) 2024.02.27
[Graphics] Rendering Pipe Line  (1) 2024.02.27
[DirectX11] Vcpkg-Imgui 설치하기  (0) 2022.09.17
[CGP(2)] DirectX11 기초 개념 복습(1)  (1) 2022.09.02

블로그의 정보

에디의 우당탕탕 코딩 공장

인턴 에디

활동하기