< [UE5] Quat(쿼터니언) / Rotator (로테이터)

언리얼엔진5/각종 지식

[UE5] Quat(쿼터니언) / Rotator (로테이터)

Rocketbabydolls 2024. 6. 12. 18:54

FQuat

 

   쿼터니언은 3차원 공간에서 회전을 표현할 때 사용하는 수학적 도구이다.

 

쿼터니언의 장점

 

    1. Gimbal Lock 방지 : 오일러 각도를 사용하여 각을 표현할 때  생기는 짐벌락을 방지할 수 있음

 

짐벌락 이란?

https://kangworld.tistory.com/185

 

[Unity] 짐벌락과 오일러 각 그리고 쿼터니언

✍️ 짐벌락 짐벌이란 단일 축을 중심으로 물체가 회전할 수 있도록 만들어진 구조물이다. 각각의 고리는 고유한 축을 기준으로 회전하는데 이는 가장 바깥쪽 고리만 해당할 뿐 안쪽 고리들은

kangworld.tistory.com

 

    2. 효율적인 회전 보간 : 회전을 부드럽게 보간할 수 있어 자연스러운 움직임을 만들 수 있다.

 

    3. 컴팩트한 표현 : 하나의 스칼라와 세 개의 벡터로 구성되어 매트릭스보다 메모리 효율적이다.

 

 

Decal->SetActorRotation(UKismetMathLibrary::MakeRotFromX(ImpactPoint).Quaternion());

 

언리얼엔진에서는  FRotator에서 쿼터니언으로 변환하는 함수가 간편하게 제공된다.

 

FRotator

    흔히 사용하는 오일러 각을 사용한 각 표현 도구이다. Pitch, Yaw, Roll 을 사용한다. 

 

Pitch는 y축을 기준으로 회전, Roll은 x축을 기준으로 회전, yaw는 z축을 기준으로 회전 하는 것을 뜻한다.\

 

직접 그려 보았다.

 

블루프린트와 C++을 혼용하여 사용할 때 조심할 점은 블루프린트와 C++ 의 각 순서가 다르다. 

 

블루프린트 : Roll Pitch Yaw

C++ : Pitch Yaw Roll

 

왜 이렇게 되어있는지는 모르겠지만, 꽤나 불편하다.

 

결론적으로 정확한 각 회전이 필요할 때는 FQuat을 사용하고, 일반적인 선형 보간 등에는 FRotator를 사용한다.