1. 개요
간단하게 비행체의 움직임을 구현하는 과정에서 언리얼 엔진 내장 중력을 이용하지 않고 직접 Pawn에 중력 가속도를 적용하는 로직을 구현해 보았다. 그 과정에서 현실에서처럼 중력 가속도를 적용하려 했더니 비행체를 계속해서 공중으로 날려보낼 수도 없고, 시간이 지날 수록 중력 가속도에 의해 낙하 속도가 너무 빨라져 결국은 일정 구간 위로 나아가지 못하게 되는 상황이 발생했다. 이를 해결하기 위해 다양한 방법을 찾던 도중에 선형 보간에 대한 개념을 찾게 되어 이에 대해 정리해 보았다.
2. Lerp(Linear Interpolation)
선형 보간이란?
Linear Interpolation(선형 보간)은 두 값 사이를 특정 비율(Alpha 값)에 따라 보간하여 중간 값을 구하는 방법이다
특히, UE에서 FMath::Lerp() 함수를 이용해 주로 위치, 회전, 크기, 색상 등에 부드럽게 자연스러운 변화를 만들때 사용한다
기본 수식
- Lerp(A, B, t) = A+(B-A) X t
- A : 시작 값
- B : 종료 값
- t : 보간 비율(Alpha 값), 범위 : (0.0~1.0)
- t=0.0 ㅡ> A
- t=0.5 ㅡ> A와 B의 중간값
- t=1.0 ㅡ> B
UE에서 사용하는 보간 관련 함수
- FMath::Lerp() : float 값 보간
ㅡ> 단순 보간 (t값에 따라 한 번의 계산) - FMath::VInterpTo() : 위치 보간 (벡터 보간 함수)
ㅡ> VInterpTo()는 시간을 기반으로 위치 값을 부드럽게 보간하여 프레임마다 조금씩 목표 위치에 가까워짐 - FMath::RInterpTo() : 회전 보간
ㅡ> 시간을 기반으로 회전값을 부드럽게 보간하여 프레임마다 조금씩 목표 회전값에 점점 가까워짐
3. 정리
결국은 중력 가속도를 적용시킬 때, 선형 보간을 이용하지는 않았지만, 선형 보간에 대한 개념을 접하게 되면서 앞으로는 위치, 회전, 크기, 색상 등의 변화를 보다 자연스럽게 변화하도록 만드는데 이용해 보면 좋을거 같아서 얻어 가는게 없지는 않았다. 특히, 이동 관련 로직을 구성할 떄는 Lerp를 사용하면 보다 자연스럽게 이동하게 만들 수 있을 것 같아서 한 번 적용해볼 생각이다.
'언리얼엔진(UE)' 카테고리의 다른 글
[UE] 월드 좌표계와 로컬 좌표계 (World Space, Local Space) (1) | 2025.02.06 |
---|---|
[UE] 액터 생애주기(Actor Life Cycle) (0) | 2025.02.05 |
[UE] Tick, DeltaTime (0) | 2025.02.03 |
[UE] AActor 클래스의 BeginPlay, Tick 함수의 접근 지정자 차이 (0) | 2025.01.31 |
[UE] CDO(Class Default Object) (0) | 2025.01.27 |