반응형
SMALL
유니티에서 3D 오브젝트의 회전은 일반적으로 Quaternion(쿼터니언) 또는 Euler Angle(오일러 각)으로 표현된다.
Unity는 내부적으로 쿼터니언을 사용하지만 쉽게 편집할 수 있도록 Inspector에서는 해당 오일러 각의 값을 표시한다.(중요)
https://docs.unity3d.com/kr/530/ScriptReference/Quaternion.html
UnityEngine.Quaternion - Unity 스크립팅 API
Quaternions are used to represent rotations.
docs.unity3d.com
- Eulwe Angle(오일러각) 이란?
- 순차적으로 적용되는 X,Y,Z 에 대한 세가지 각도값으로 표현한다. 그러므로 사람에게 익숙한 것이 특징이다.
- 특정 개체에 오일러 회전(Euler rotation)을 적용하려면 각 회전 값이 해당 축 주위의 회전으로 차례로 적용된다.
- 장점
- 1. 오일러 각은 3개의 각으로 구성된 직관적인 형식을 가진다 (사람이 읽기 쉽다)
- 2. 오일러 각은 180도 이상의 회전을 통해 한 방향에서 다른 방향으로의 회전을 나타낼 수 있다.
- 단점
- 1. 오일러각은 짐벌락 현상을 가질수 있다
- 여기서 짐벌락이란 단일축으로 물체가 회전하도록 중심축을 가진 구조물을 뜻하는데 (아래 이미지 참조) 아래 이미지에서 처럼 각각의 고리는 본인이 가진 축을 기준으로만 회전하는데 인는 모든 고리들이 서로 연결되어있기 때문이다 (고리가 다른 고리에 자식으로 붙어있는 관계이기 때문이다.)
- 축에 관계 세 개의 회전을 차례로 적용할 때 첫 번째 또는 두 번째 회전으로 인해 세 번째 축이 이전 축 중 하나와 같은 방향을 가리킬 수 있다. 고유한 축을 중심으로 세 번째 회전 값을 적용할 수 없기 때문에 "자유도(degree of freedom)"가 손실된다는 의미.
- 장점

- Quaternion (쿼터니언) 이란?
- 개체의 방향 또는 회전을 나타내는 데 사용할 수 있다.
- 내부적으로 4개의 숫자(Unity에서 x, y, z &w로 참조됨)로 구성되지만 이 숫자는 각도나 축을 나타내지 않으며
일반적으로 직접 액세스 할 필요가 없다. - 복잡하기 때문이다. - 쿼터니언 회전은 "origin" 또는 "Identity"에서 측정된다. (한 방향에서 다른 방향으로의 회전이 이러한 방식으로 측정되기 때문에 쿼터니언은 180도를 넘는 회전을 나타낼 수 없다.)
- 복잡하게 생각하기보단 쿼터니언 자체가 한 3D 공간에서의 회전을 나타낸다는 사실을 인지하고 사용하면된다.
- 장점
- 1. 짐벌락 현상이 발생하지 않는다
- 단점
- 1. 단일 쿼터니언의 경우어떤 방향으로도 180도를 초과하는 회전을 나타낼 수 없다
- 2. 쿼터니언의 숫자표현들은 직관적으로 이해하기 힘들다.
- 유니티 엔진 내부에서의 회전
- Unity에서 모든 게임 오브젝트 회전은 내부적으로 쿼터니언으로 저장된다.
- Inspector에 입력된 새 값(오일러 각)은 Unity 내부적으로 새 Quaternion 회전 값으로 변환된다.
- 스크립트에서 회전을 사용할 때는 Quaternion클래스와 해당 함수를 사용해 회전 값을 수정해야 한다.
- 1. 오일러각을 사용하지 않는 Quaternion 클래 메서드
- 1. 생성
Quaternion.LookRotation
Quaternion.AngleAxis
Quaternion.FromToRotation - 2. 조작
Quaternion.Slerp
Quaternion.Inverse
Quaternion.RotateToWards
Transform.Rotate
Transform.RotateAround
- 1. 생성
- 2. 오일러 각을 처리하는 사용하는 Quaternion 클래스 메서드 - 쿼터니언에서 오일러 각을 검색하는것은 가능하지만 검색, 수정 및 다시 적용하면 문제가 발생할 수 있다기 때문에
각도를 변수로 유지하고 회전에 오일러 각을 적용하는 데에만 사용하는 편이 좋다.
- Quaternion.Euler
- 1. 오일러각을 사용하지 않는 Quaternion 클래 메서드
- 위의 각 메서드들중 가장 많이 쓰이는 메서드 들을 정히자면
- Quaternion.LookRotation
- Quaternion.Euler
- Quaternion.Slerp
- Quaternion.FromToRotation
- Quaternion.Identity
- 정도가 있는데 위 메서드를을 포함한 기능 정리는 다음 포스팅에서 연달아 진행하겠다.
반응형
LIST
'유니티 엔진 클라이언트 > 개인공부' 카테고리의 다른 글
| [유니티 프로젝트] ik 역 운동학을 적용한 좀비 서바이버 (0) | 2023.05.23 |
|---|---|
| [유니티] [유니티] Euler Angle (오일러 각) & Quaternion (쿼터니언) 정리 .2 - 메서드 (1) | 2023.03.05 |
| [유니티] 3D월드에서의 FPS 시점(1인칭) 움직임 구현 (0) | 2023.02.24 |
| [유니티] VrCity 오브젝트 위치로 이동 & VR City 마무리 (1) | 2023.02.24 |
| [유니티] VRCity 3D virtual 팝업 & 코루틴이용 & RayCast & 비트연산자 & Quaternion.Lerp사용 캐릭터 회전 (0) | 2023.02.23 |