[UE5] Quat VS Rotator

ChangJin·2023년 9월 10일
0

Unreal Engine5

목록 보기
6/114
post-thumbnail

이 글에서 는 Quat과 Rotator의 차이점에 대해서 다룹니다. 그래픽스, OpenGL 등에 대한 지식이 있으면 이해가 쉽습니다.

What is Quat?

Unreal Engine (언리얼 엔진)에서 Quat는 쿼터니언(quaternion)의 약어로, 3D 공간에서 회전을 나타내는 데 사용되는 수학적인 개념입니다. Quat은 4개의 실수로 이루어진 데이터 구조로, 주로 회전 변환을 표현하는 데 활용됩니다. 이러한 회전 표현은 오일러 각(Euler angles)이나 회전 행렬(rotation matrix)과는 다르게 각도의 차이에서 오는 혼란을 방지하며 연산을 보다 간편하게 수행할 수 있도록 도와줍니다.

Quat는 다음과 같은 주요 특징을 갖고 있습니다:

  1. 4 개의 요소: Quat는 실수 4개로 구성되며, 각 요소는 회전에 대한 정보를 저장합니다. 일반적으로 이러한 요소는 [X, Y, Z, W] 순서로 표현됩니다.

  2. 단위 쿼터니언(Unit Quaternion): 쿼터니언은 항상 단위 길이(길이가 1인)를 갖는다는 중요한 특징을 갖습니다. 이러한 특성으로 인해 회전을 나타내는 데 오류를 최소화할 수 있습니다.

  3. 회전 표현: Quat는 회전을 표현하는 데 사용되며, 회전의 방향과 각도를 나타냅니다.

  4. 회전 연산: 쿼터니언은 회전 연산에 대해 간단하고 효율적인 수학적 연산을 제공합니다. 이를 통해 3D 오브젝트를 회전하거나, 두 지점 간의 회전을 계산하는 데 유용하게 사용됩니다.

Unreal Engine에서 QuatFQuat라는 구조체로 정의되어 있으며, 회전을 나타내고 다루는 데 사용됩니다. 게임 엔진에서는 Quat를 주로 사용하여 3D 오브젝트의 회전 상태를 관리하고 애니메이션, 카메라 제어, 충돌 감지 등 다양한 작업에 활용합니다.

What is Rotator?

언리얼 엔진에서의 Rotator는 3D 공간에서 오브젝트의 회전을 나타내는 데이터 구조입니다.

  • Rotator는 세 개의 각도 값 (Pitch, Yaw, Roll)으로 구성됩니다.
  • Pitch는 Y 축 주위의 회전을 나타냅니다.
  • Yaw는 Z 축 주위의 회전을 나타냅니다.
  • Roll은 X축 주위의 회전을 나타냅니다.
  • 이러한 각도는 주로 게임 오브젝트나 카메라의 회전을 표현하는 데 사용됩니다.
  • Rotator를 사용하여 회전 연산을 수행하거나 보간하여 부드러운 애니메이션을 만들 수 있습니다.
  • 언리얼 엔진은 Rotator를 생성하고 변환하기 위한 다양한 함수와 유틸리티를 제공합니다.

Quat VS Rotator

데이터 형식:

  1. Quat (쿼터니언): FQuat 구조체를 사용하며, 4개의 실수로 이루어져 있습니다. 쿼터니언은 회전을 단위 길이로 표현합니다.

  2. Rotator (로테이터): FRotator 구조체를 사용하며, 3개의 각도 값으로 이루어져 있습니다. 보통 오일러 각도로 표현되며, 회전 각도를 Pitch (X 축), Yaw (Y 축), Roll (Z 축)으로 나타냅니다.

사용 용도:

  1. Quat (쿼터니언): 주로 복잡한 회전 연산을 수행할 때 사용됩니다. 쿼터니언은 선형 보간, 병합 및 보다 정확한 회전 표현을 위해 사용됩니다. 게임 엔진의 내부에서는 회전 변환 및 애니메이션 시스템에서 주로 사용됩니다.

  2. Rotator (로테이터): 사용자가 이해하고 다루기 쉬운 각도로 회전을 표현하는 데 사용됩니다. 대부분의 게임 개발자 및 디자이너가 오일러 각도를 이해하고 조작할 수 있으므로, 로테이터는 게임 로직 및 사용자 입력 처리에서 일반적으로 사용됩니다.

표현 정확성:

  1. Quat (쿼터니언): 수학적으로 정확한 회전 표현을 제공하며, 각도와 축의 조합으로 회전을 표현합니다. 복잡한 회전에 대해 정확한 결과를 제공합니다.

  2. Rotator (로테이터): 각도의 선형 보간 및 회전 결합 등 간단한 회전 연산에 적합합니다. 그러나 복잡한 회전 연산에서는 정확성이 감소할 수 있습니다.

일반적으로 게임 개발에서는 사용자 입력 및 간단한 회전에는 로테이터를 사용하고, 내부 엔진 또는 애니메이션 시스템과 같이 정확한 회전 연산이 필요한 경우에는 쿼터니언을 사용합니다. 이러한 두 가지 회전 표현은 서로 변환할 수 있으므로 필요에 따라 사용할 수 있습니다.

변환에 대한 내용은 다음 블로그 글을 참고하면 좋습니다.

profile
게임 프로그래머

0개의 댓글