728x90
728x90
언리얼 엔진 5(UE5)에서 FRotator를 **FQuat(Quaternion, 사원수)**로 변환하는 방법을 소개해드립니다.
1. FRotator를 FQuat로 변환하기 (C++ 코드)
아래 코드에서는 FRotator를 FQuat로 변환하는 방법을 보여줍니다.
FRotator Rotation(0.0f, 90.0f, 0.0f); // 예제 회전 값 (Pitch, Yaw, Roll)
FQuat QuatRotation = Rotation.Quaternion(); // FQuat 변환
// 변환된 FQuat 값 출력 (디버깅 용도)
UE_LOG(LogTemp, Log, TEXT("Quat: X=%f, Y=%f, Z=%f, W=%f"), QuatRotation.X, QuatRotation.Y, QuatRotation.Z, QuatRotation.W);
📌 코드 설명
- FRotator::Quaternion() 함수를 사용하면 쉽게 FQuat로 변환할 수 있습니다.
- UE_LOG를 활용해 변환된 값을 출력할 수 있습니다.
2. FQuat을 FRotator로 변환하기 (C++ 코드)
반대로 FQuat을 다시 FRotator로 변환할 수도 있습니다.
FQuat MyQuat = FQuat(FVector(0, 0, 1), FMath::DegreesToRadians(45.0f)); // Z축을 기준으로 45도 회전
FRotator MyRotator = MyQuat.Rotator(); // FRotator 변환
UE_LOG(LogTemp, Log, TEXT("Quaternion: %s"), *MyQuat.ToString());
UE_LOG(LogTemp, Log, TEXT("Rotator: %s"), *MyRotator.ToString());
📌 코드 설명
- FQuat::Rotator()를 사용하면 FQuat을 다시 FRotator로 변환할 수 있습니다.
- FMath::DegreesToRadians()를 사용해 각도를 **라디안(Radian)**으로 변환 후 사용합니다.
- ToString()을 활용하면 변환된 값을 쉽게 확인할 수 있습니다.
3. 언제 FQuat을 사용할까?
FRotator는 (Pitch, Yaw, Roll) 값을 사용하여 회전을 정의하는 방식이지만, Gimbal Lock(짐벌락) 문제가 발생할 수 있습니다.
반면, FQuat은 사원수를 사용하여 더 부드럽고 안정적인 회전 연산을 수행할 수 있습니다.
✅ 따라서, 연속적인 회전이나 보간(Interpolation)이 필요한 경우에는 FQuat을 사용하는 것이 좋습니다.
언리얼 엔진에서 회전을 다룰 때, FQuat을 적절히 활용하면 보다 부드럽고 안정적인 동작을 구현할 수 있습니다.
728x90
반응형
'프로그래밍' 카테고리의 다른 글
언리얼 엔진 5: 월드 파티션 환경에서 TeleportTo 시 액터 복제 (0) | 2025.02.20 |
---|---|
언리얼 엔진 5 (UE5) 에서 캐릭터와 액터 사이의 가장 가까운 점 구하기 (C++ 코드) (0) | 2025.02.18 |
UE5 네트워크 최적화 : Net Cull Distance 분석 및 설정(코드 예제 수정) (0) | 2025.01.21 |
언리얼 엔진 5 (UE5)에서 월드 시간과 델타 시간 초 단위로 얻기 (C++ 및 블루프린트) (1) | 2025.01.13 |
UE5에서 두 벡터 사이의 각도 구하기 (자세한 설명 + 내적의 의미) (0) | 2025.01.11 |