Unity의 회전 및 오리엔테이션

Unity3D 2019. 2. 20. 21:04
반응형

https://docs.unity3d.com/kr/2019.1/Manual/QuaternionAndEulerRotationsInUnity.html


https://docs.unity3d.com/kr/2018.2/ScriptReference/Quaternion.LookRotation.html


https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation


3D 애플리케이션에서 회전은 일반적으로 쿼터니언 또는 오일러 각으로 표현됩니다. 각 방법에는 고유한 용도와 단점이 있습니다. Unity는 내부적으로 쿼터니언을 사용하지만 쉽게 편집할 수 있도록 인스펙터에 해당 오일러 각의 값을 표시합니다.

오일러 각과 쿼터니언의 차이

오일러 각

오일러 각은 절차적으로 적용되는 X, Y, Z의 각도 값 3개로 더 간단하게 표시됩니다. 특정 오브젝트에 오일러 회전을 적용하기 위해 각 회전 값을 해당 축 주위의 회전으로 적용합니다.

  • 장점: 오일러 각은 세 각으로 구성된 직관적이고 “사람이 읽기 쉬운” 포맷으로 표시됩니다.
  • 장점: 오일러 각은 180도가 넘는 회전을 통해 특정 오리엔테이션에서 다른 오리엔테이션을 향해 도는 회전을 나타낼 수 있습니다.
  • 한계: 오일러 각에는 짐벌 락 문제가 있습니다. 세 회전을 차례로 적용하는 경우 첫 번째 또는 두 번째 회전의 결과로 세 번째 축이 이전 축 중 하나와 같은 방향을 가리킬 수 있습니다. 이 말은 세 번째 회전값을 고유 축에 적용할 수 없기 때문에 “자유도”가 상실되었음을 의미합니다.

쿼터니언

쿼터니언은 오브젝트의 오리엔테이션 또는 회전을 나타내기 위해 사용할 수 있습니다. 내부적으로 (Unity에서 x, y, z, w라고 하는) 네 숫자로 표시되지만, 이 숫자는 각도나 축을 나타내지 않고 일반적인 경우 직접 액세스할 필요가 없습니다. 쿼터니언 수학에 대해서 특별한 관심이 없는 경우, 쿼터니언이 3D 공간의 회전을 나타낸다는 것만 이해하면 되며, (일반적인 경우)x, y 및 z 프로퍼티를 이해하거나 수정할 필요가 없습니다.

벡터가 포지션 또는 방향(원점에서 측정되는 방향)을 나타내는 것과 같이, 쿼터니언은 오리엔테이션 또는 회전을 나타낼 수 있습니다. 회전은 회전의 “원점” 또는 “Identity”으로 측정됩니다. 회전은 위와 같이 한 오리엔테이션에서 다른 오리엔테이션으로 측정되기 때문에, 쿼터니언으로 180도보다 큰 회전을 나타낼 수 없습니다.

  • 장점: 쿼터니언 회전에는 짐벌 락 문제가 없습니다.
  • 한계: 쿼터니언 하나로 어떤 방향으로든 180도보다 큰 회전을 나타낼 수 없습니다.
  • 한계: 쿼터니언 숫자 표시는 직관적으로 이해할 수 없습니다.

Unity 내부에서는 모든 게임 오브젝트 회전이 쿼터니언으로 저장됩니다. 단점보다 장점이 더 많기 때문입니다.

하지만 트랜스폼 인스펙터에는 회전이 오일러 각으로 표시됩니다. 이해하고 편집하는 것이 더 쉽기 때문입니다. 인스펙터에 입력하는 게임 오브젝트 회전 값은 백그라운드에서 새로운 쿼터니언 회전 값으로 변환됩니다.





https://nobilitycat.tistory.com/entry/%EC%84%A0%ED%98%95-%EB%B3%B4%EA%B0%84%EA%B3%BC-%EA%B5%AC%EB%A9%B4-%EC%84%A0%ED%98%95-%EB%B3%B4%EA%B0%84slerp

반응형
: