FInterp To는 Unreal Engine에서 두 실수(float) 값 사이를 부드럽게 보간(interpolation)하여, 값이 한 번에 목표값(Target)으로 “점프”하지 않고, 매 프레임마다 조금씩 천천히 목표값에 가까워지도록 만드는 함수입니다. 주로 캐릭터의 움직임, 카메라의 회전, UI 애니메이션 등에서 자연스러운 변화 효과를 줄 때 사용합니다.
동작 원리
- Current: 현재 값 (예: 카메라의 현재 위치, 현재 크기 등)
- Target: 도달하고 싶은 목표 값
- Delta Time: 프레임 간 시간(일반적으로 Tick 이벤트의 Delta Seconds 사용)
- Interp Speed: 얼마나 빠르게 목표값에 도달할지 결정하는 속도 값
FInterp To의 내부 공식은 대략 아래와 같습니다.
Return Value=Current+(Target−Current)×(Interp Speed×Delta Time)
이렇게 계산된 값은 Current와 Target 사이의 중간값이며, Interp Speed가 클수록 더 빠르게, 작을수록 더 천천히 Target에 접근합니다.
특징 및 사용 예시
- 부드러운 변화: 값이 한 번에 바뀌지 않고, 점진적으로 변화하여 자연스러운 연출이 가능.
- 프레임 기반: Delta Time을 사용해 프레임 속도에 상관없이 일정한 속도로 변화.
- Current와 Target 반복 사용: 매 프레임마다 이전 결과값을 Current로 넣고, Target은 고정 또는 변화하는 값으로 설정.
예시: 카메라 줌, 캐릭터의 회전, 오브젝트의 크기 변화 등.
FInterp To vs Lerp (선형 보간) 비교
기능 | FInterp To | Lerp (Linear Interpolation) |
---|---|---|
입력 값 | Current, Target, Delta Time, Interp Speed | Start, End, Alpha(0~1) |
결과 | 점진적으로 Target에 가까워짐 | Start~End 사이의 지정된 비율 위치 반환 |
주 사용 방식 | 매 프레임 반복 호출로 자연스러운 움직임 구현 | 한 번의 계산으로 특정 위치 반환 |
속도 조절 | Interp Speed로 조절 | Alpha 값으로 조절 |
실제 사용 흐름
- 매 프레임(Current, Target, Delta Time, Interp Speed) 입력
- FInterp To로 새 값 계산
- 결과를 Current에 다시 저장(다음 프레임에 사용)
- Target에 도달할 때까지 반복
언리얼 엔진에서 FInterp To를 활용한 카메라 줌 인/아웃 구현 방법
언리얼 엔진에서 카메라 줌 인/아웃 효과를 자연스럽게 구현하려면, Spring Arm 컴포넌트의 Target Arm Length(또는 카메라의 FOV)를 조절하는 것이 일반적입니다. 이때, 값의 변화가 부드럽게 이루어지도록 FInterp To 노드를 사용하면 됩니다67.
구현 기본 흐름
- 입력 처리
- 마우스 휠 입력(Zoom In/Out)을 받아줍니다.
- 예: Input Axis 이벤트로 Zoom 값을 받음
- 목표값(Target) 계산
- 현재 Spring Arm의 Target Arm Length(또는 FOV)에 Zoom 입력값을 곱해 목표값을 설정합니다.
- 예: Target Arm Length ± (Zoom 입력값 × Zoom Speed)
- FInterp To로 부드럽게 보간
- 현재 Target Arm Length와 목표값(Target)을 FInterp To에 입력, Delta Time과 Interp Speed를 함께 넣어줍니다.
- 결과값을 다시 Target Arm Length에 할당합니다.
- 최소/최대 값 제한
- Clamp 노드로 최소/최대 줌 거리를 제한합니다.
블루프린트 예시
- Spring Arm 컴포넌트 추가
- 카메라가 Spring Arm에 부착되어 있어야 함
- Zoom 입력 처리
- Input Axis(예: “Mouse Wheel Axis”) 이벤트 생성
- Zoom 입력값을 ZoomSpeed(예: 200)와 곱해 Target Arm Length 목표값 계산
- FInterp To 사용
- FInterp To 노드에
- Current: 현재 Target Arm Length
- Target: 목표 Target Arm Length
- Delta Time: Tick의 Delta Seconds
- Interp Speed: 부드러움 조절(예: 5~10)
- 결과값을 Clamp로 제한(예: 300~1200)
- Set Target Arm Length로 할당
- FInterp To 노드에
간단한 블루프린트 논리 흐름
- Event Tick (또는 Zoom 입력 이벤트)
- 목표 Target Arm Length 계산
- FInterp To로 보간
- Clamp
- Set Target Arm Length
실제 적용 시 팁
- Interp Speed 값이 높을수록 빠르게, 낮을수록 천천히 목표값에 도달
- Tick마다 FInterp To를 호출해야 부드러운 변화 가능
- Spring Arm 대신 카메라의 FOV를 조절해도 같은 방식 적용 가능
정리
- 마우스 휠 입력 → 목표 거리 계산 → FInterp To로 현재 거리와 목표 거리 보간 → Clamp → 적용
- 이렇게 하면 카메라 줌 인/아웃이 자연스럽고 부드럽게 구현됩니다.
Spring Arm의 Set Target Arm Length와 FInterp To를 조합하면, 사용자가 줌 인/아웃을 할 때 카메라가 한 번에 이동하지 않고, 자연스럽게 이동하는 효과를 얻을 수 있습니다.
FInterp To는 Unreal Engine에서 값의 변화가 자연스럽고 부드럽게 이루어지도록 도와주는 보간 함수입니다. Delta Time과 Interp Speed를 조절해 원하는 속도로, 목표값에 점진적으로 접근하는 효과를 낼 수 있습니다.