[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 |
블로그의 정보
농담곰담곰이의곰담농
브이담곰