[DirectX 12] #6-1. Quaternion 1

들어가며

이번 시간에는 오일러 회전 방식의 회전의 문제점에 대해 알아보고, 문제를 해결할 쿼터니언 회전 방식에 대해 간략하게 알아볼 것이다. 쿼터니언을 이해하기 위해 복소수를 자세히 알아본다.


회전

  • 오일러 회전
    • x, y, z축을 기준으로 순차적으로 회전한다.
    • Unity의 기본 회전 순서는 z, x, y 순이다.
    • 문제점: 짐벌락(Gimbal Lock)
      • 서로 다른 축을 순서대로 회전하다보면, 두 축이 겹쳐 하나의 축이 사라지는 현상이 발생할 수 있다.
      • 예. x축을 90도 회전시키면 y, z축이 정렬되어 하나의 축이 먹통이 된다.
  • Quaternion 회전
    • 게임 엔진은 내부적으로 회전 계산에 쿼터니언을 사용하는데, 툴 UI는 오일러 방식으로 표시된다.
    • 이번 시간에는 쿼터니언을 이해하기 위해 복소수에 대해 자세히 알아볼 것이다. 다음 포스트에 자세히 다룰 예정!

복소수

ComplexNumber

 

PolarCoordinate

  • 복소수는 a + bi 형태로 2D 평면의 회전을 표현한다.
  • Quaternion은 이를 3D로 확장시켜 3D 회전을 표현할 수 있다.

마치며

중학교인지 고등학교인지..? 예전에 뭐에 쓰이는지도 모르고 배운 복소수로 3D 그래픽의 회전을 표현하는 게 새롭다!


출처 인프런 Rookiss님 게임 수학과 DirectX12

Categories:

Updated:

Leave a comment