이 시리즈는 유니티에서 제공하는 튜토리얼을 정리해서 올린 것입니다.


-----------------------------------------------------------------------------------

쿼터니언(Quaternion)

-----------------------------------------------------------------------------------

유니티에서 Transform의 회전은 쿼터니언으로 저장된다.

쿼터니언은 벡터와 유사하게 작동하지만, x, y, z, w 네 가지 구성 요소를 가진다.

이 구성 요소들은 상호 의존적이며, 함께 작동하여

객체가 필요로 하는 모든 회전을 정의한다.


쿼터니언을 다룰 때 가장 중요한 점은 x, y, z, w 구성 요소들이 함께 작동하므로, 개별적으로 조절해서는 안 된다는 것이다.

다행히 유니티는 쿼터니언 관리를 쉽게 해주는 많은 내장 메서드를 제공한다.

-----------------------------------------------------------------------------------

아마 이미 익숙할 회전 관리 시스템은 오일러 각이라고 불린다.

24b0d121e09c28a8699fe8b115ef0464d68de1

((x,y,z) 표시된 오일러 각)


인스펙터에 표시되는 회전 값은 오일러 각을 사용하는데, 이는 사람이 이해하기가 더 쉽기 때문이다.

오일러 각 회전은 x, y, z 각 축을 중심으로 한 회전을 기반으로 한다.


오일러 각이 더 이해하기 쉽고, 심지어 내부적으로 처리되는 쿼터니언 값을 인스펙터에 보여주기 위해 오일러 각으로 변환까지 하는 짓까지 하며 쿼터니언을 쓰는 이유는 뭘까?

간단히 말해서 오일러 각은 짐벌 록(gimbla lock)이라는 현상에 취약하기 때문이다.

다행히 쿼터니언은 이러한 짐벌 록 문제를 효과적으로 해결한다.

쿼터니언에 내장되어 있는 많은 메서드들이 있지만

그건 각자의 실습을 통해 익히는 것을 추천한다.

-----------------------------------------------------------------------------------

우리는 쿼터니언이 정확히 어떻게 작동하는지, 복잡한 수학 연산을 이해할 필요가 없다.

이 강의에서 기억해두어야할 것은 쿼터니언의 개별 w, x, y, z값을 조절해서는 안되며

유니티에서 회전을 다루는 가장 좋은 방법이 쿼터니언이라는 것이다.