Version: 2022.1
언어: 한국어
스케일 제약
광원

Unity의 회전 및 방향

Unity에서는 오일러 각과 쿼터니언을 모두 사용하여 회전과 방향을 나타낼 수 있습니다. 표현은 둘 다 동일하지만 용도와 제한 사항은 서로 다릅니다.

보통 씬에서는 방향을 오일러 각으로 표시하는 트랜스폼 컴포넌트를 사용하여 오브젝트를 회전합니다. 그러나 Unity는 회전과 방향을 내부적으로 쿼터니언으로 저장하므로 짐벌 락으로 이어질 수도 있는 더 복잡한 모션에 유용할 수 있습니다.

오일러 각

트랜스폼 좌표에서 Unity는 벡터 프로퍼티 Transform.eulerAngles X, Y, Z를 사용하여 회전을 표시합니다. 노멀 벡터와는 달리 이 값은 X, Y, Z 축에 대한 실제 회전 각도(단위: 도)를 나타냅니다.

오일러 각 회전은 3개의 축을 중심으로 3개의 개별 회전을 수행합니다. Unity는 Z축, X축, Y축을 중심으로 오일러 회전을 순차적으로 수행합니다. 이 회전 방법은 외부 회전입니다. 회전하는 동안 원래 좌표계가 변경되지 않습니다.

게임 오브젝트를 회전하려면 각 축이 트랜스폼 컴포넌트로 회전할 각의 크기를 입력할 수 있습니다. 스크립트로 게임 오브젝트를 회전하려면 Transform.eulerAngles를 사용합니다. 오일러 각으로 변환하여 계산하고 회전하려면 짐벌 락 문제가 발생할 위험이 있습니다.

짐벌 락

3D 공간에 있는 오브젝트가 자유도를 잃고 2차원 내에서만 회전할 수 있는 경우를 짐벌 락이라고 합니다. 두 축이 평행하면 오일러 각으로 짐벌 락이 발생할 수 있습니다. 스크립트에서 회전 값을 오일러 각으로 변환하지 않으면 쿼터니언을 사용하여 짐벌 락을 방지해야 합니다.

짐벌 락 문제가 있는 경우 Transform.RotateAround를 사용하면 오일러 각을 피할 수 있습니다. 각 축에 Quaternion.AngleAxis를 사용하여 함께 곱할 수도 있습니다(쿼터니언 곱셈은 각 회전에 차례로 적용됩니다).

쿼터니언

쿼터니언은 3D 공간에서 공간 방향과 회전의 고유한 표현을 위한 수학적 표기법을 제공합니다. 쿼터니언은 4개의 숫자를 사용하여 3D에서 단위 축을 중심으로 회전 방향과 각도를 인코딩합니다. 이 4개의 값은 각이나 각의 크기가 아닌 복소수입니다. 자세한 내용은 쿼터니언의 수학을 참조하십시오.

쿼터니언 회전은 계산에 있어 효율적이고 안정적이기 때문에 Unity는 회전 값을 쿼터니언으로 변환하여 저장합니다. 단일 쿼터니언은 축에 대해 360도보다 큰 회전을 나타낼 수 없기 때문에 에디터에서는 회전을 쿼터니언으로 표시하지 않습니다.

Quaternion 클래스를 사용하면 쿼터니언을 직접 사용할 수 있습니다. 회전에 스크립트를 사용하는 경우 Quaternion 클래스와 함수를 사용하여 회전 값을 만들고 변경할 수 있습니다. 회전에 오일러 각으로 값을 적용할 수 있지만 문제를 방지하기 위해 쿼터니언으로 저장해야 합니다.

오일러 각과 쿼터니언 간의 전환

다음 스크립트를 사용하여 쿼터니언과 오일러 각 간을 변환하고 원하는 방식으로 회전을 보고 편집할 수 있습니다.

  • Quaternion.Euler 함수를 사용하여 오일러 각도에서 쿼터니언으로 변환할 수 있습니다.
  • Quaternion.eulerAngles 함수를 사용하여 쿼터니언을 오일러 각으로 변환할 수 있습니다.

추가 리소스

스케일 제약
광원