오일러 각
오일러 각은 물체의 3D 회전을 설명하는 방법 중 하나이다.
이는 세 가지 축을 기준으로 물체의 회전을 설명한다.
세 개의 오일러 각을 사용하여 물체의 회전을 나타낼 수 있다.
가장 일반적인 오일러 각은 회전 순서에 따라 yaw, pitch 및 roll로 알려진 세 가지 각이다.
Yaw는 물체가 수평축 주위로 회전하는 각도를 의미하며, 주로 좌우 회전을 설명한다.
Pitch는 물체가 수직축 주위로 회전하는 각도를 나타내며, 주로 위아래 회전을 설명한다.
Roll은 물체가 굴러가는 동안 수직축 주위로 회전하는 각도를 나타내며, 주로 좌우 기울기를 설명한다.
오일러 각은 물체의 회전을 직관적으로 이해하기 쉽게 도와주지만,
때로는 회전 순서나 각도의 표현 방식에 따라 문제가 발생할 수 있다.
또한, 회전 순서에 따라 각도의 조합이 제한될 수 있다.
오일러 각의 문제점
오일러 각은 회전 순서에 따라 결과가 달라지는 것인데,
회전을 정의하는 순서를 잘못 선택하면 원하는 대로 회전하지 않을 수 있다.
이는 회전 각도와 축을 조합하는 방법에 제약이 있는 오일러 각의 특성 때문에 발생하는 문제이다.
오일러 각은 짐벌락(gimbal lock)이라는 현상을 가지고 있다.
짐벌락은 회전 축의 일부가 일치하는 상황에서 발생하며, 이로 인해 원하는 회전 결과를 얻을 수 없게 된다.
예를 들어,
세 번의 회전 중 두 번의 회전 축이 일치하면 짐벌락이 발생하여 자유로운 회전이 제한되는 문제가 발생할 수 있다.
짐벌락에 대해 시각적으로 보고 싶으면 다음 영상을 참고해도 되겠습니다.
MAX를 활용한 짐벌락Gimbal-lock)설명(유튜브 두나미스님 채널)
문제점을 해결하려면?
짐벌락 현상에서는 두 개의 축이 움직이며 한 축은 움직이지 않는다.
이로 인해 특정 방향으로의 회전이 제한되는 것이다.
이는 세 개의 축이 서로 의존적으로 동작하고 제약을 가지는 Euler 각의 한계로 인해 발생한다.
따라서 짐벌락을 해결하기 위해서는 Euler 각 대신 쿼터니언과 같은 다른 방식을 사용해야 한다.
쿼터니언
쿼터니언(Quaternion)은 3D 공간에서 물체의 회전을 표현하는 수학적인 개념이다.
쿼터니언은 스칼라와 벡터의 조합으로 이루어져 있으며,
스칼라 부분은 회전의 크기나 강도를, 벡터 부분은 회전 축을 나타낸다.
쿼터니언은 오일러 각과 달리 회전 순서나 각도의 조합에 제한이 없으며,
특히 회전 공식의 연산이 간단하고 효율적이다.
또한, 쿼터니언은 회전 중심을 기준으로 회전할 수 있는 장점을 가지고 있다.
쿼터니언은 주로 3D 그래픽스나 게임 엔진에서 사용되며,
물체의 회전, 카메라의 방향, 애니메이션 등 다양한 분야에서 활용된다.
Quaternion.Euler 함수
Quaternion.Euler 함수는 Euler 각도를 사용하여 쿼터니언 회전을 생성한다.
함수의 매개변수로는 x, y, z 축에 대한 각도를 입력한다.
함수는 해당 Euler 각도에 대한 쿼터니언 객체를 반환한다.
이 함수를 사용하면 간단하게 Euler 각도를 쿼터니언으로 변환할 수 있다.
transform.eulerAngles 프로퍼티
transform.eulerAngles 프로퍼티는 현재 객체의 세 가지 축에 대한 각도를 나타낸다.
Vector3 형식을 반환하며, 이는 x, y, z 축에 대한 각도를 포함하는 벡터이다.
이 프로퍼티를 통해 객체의 현재 회전 상태를 읽거나 설정할 수 있다.
이 프로퍼티를 활용하여 현재 객체의 회전 상태를 Euler 각도로 표현하거나 Euler 각도를 직접 설정할 수 있다.
'유니티 개발 기술 > 물리 & 시뮬레이션' 카테고리의 다른 글
Physics.RaycastAll vs Physics.RaycastNonAlloc (0) | 2023.10.09 |
---|---|
가속도계를 이용하기 위한 Input.acceleration (0) | 2023.07.22 |
Raycast 살펴보기 (0) | 2023.05.23 |
Joints (0) | 2023.05.06 |
AddTorque 함수, Physic Material (0) | 2023.05.05 |