카테고리 없음

유니티 - lerp와 slerp 에 대해 알아보자(+ smoothDamp)

근본넘치는개발자 2024. 11. 4. 23:27

오늘은 lerp와 slerp에 대해 알아보고자 합니다.

 

lerp와 slerp 모두 부드러운 움직임을 표현하기 위해 사용한다 정도만 알고 있었는데,

실습하면서 이와 관련한 문제가 나와 이참에 한번 정리해 봤습니다.

 

선형 보간(lerp) : 

두 지점을 선형으로 연결해 두 지점 사이에 위칫값을 구하는 방법 

(직선거리에 따라 선형적(비례적) 계산)

 

유니티에서 제공하는 선형 보간 함수는 

Vector3.Lerp, Mathf.Lerp, Color.Lerp, Quaternion.Lerp 등 다양한 형태로 제공됩니다. 

 

// Unity에서의 Lerp 사용 예시
transform.position = Vector3.Lerp(startPos, endPos, time);

 

 

https://docs.unity3d.com/ScriptReference/Vector3.Lerp.html

 

 

종종 값이 도달하지 못하고, 매우 가깝지만 정확하지 않은 값으로 끝나는 경우가 있는데,

이는 Lerp가 완료되었는지 측정하는 데 사용되는 값이

실제 Lerping되는 값이 아니라 시간이기 때문입니다. 

 

따라서

근사값(Mathf.Approximately)를 사용하여 이를 처리하는 게 일반적인 듯 합니다.

 

구면 선형보간(Slerp) : 

두 지점 사이를 곡선으로 연결해 파악하여 값을 구하는 방법입니다.

 

// Unity에서의 Slerp 사용 예시
transform.rotation = Quaternion.Slerp(startRotation, endRotation, time);

 

 

주로 Slerp는 회전에 많이 사용되는데

그 이유는 lerp가 가장 짧은 회전 경로를 선택하려고 하기 때문입니다.

 

아래 참고한 유튜브 채널에서

lerp를 사용하여 회전하면 180도이상 회전 시

목표 회전에 도달하기 위해 부자연스러운 회전을 하는 걸 확인 할 수 있었습니다.

 

https://docs.unity3d.com/ScriptReference/Vector3.Slerp.html

 

등속 운동 말고 속도를 점점 늦추는 저하 효과를 주고 싶다면

이에 특화된 SmoothDamp가 있습니다.

SmoothDamp

 

  transform.position = Vector3.SmoothDamp(
        transform.position,  // 현재 위치
        targetPosition,      // 목표 위치
        ref velocity,        // 현재 속도
        smoothTime,         // 목표 도달 시간
        maxSpeed,           // 최대 속도 (선택적)
        Time.deltaTime);

 

 

https://docs.unity3d.com/ScriptReference/Vector3.SmoothDamp.html

 

 

마무리 

오늘은 간단하게 선형보간과 구면선형보간에 대해 정리해 보았습니다.

 

색 변환부터 카메라 움직임, 패이드 인아웃, 애니메이션 등

정리하다보니  lerp가 생각보다 많이 쓰이더군요.

 

이래서 기초가 중요한가 봅니다. ;;

 

참고한 자료

 

https://www.youtube.com/watch?v=IymDGkzwJts&t=367s

 

https://gamedevbeginner.com/the-right-way-to-lerp-in-unity-with-examples/

 

The right way to Lerp in Unity (with examples)

Learn to animate buttons, move objects and fade anything - the right way - in my in-depth guide to using LERP in Unity (including copy / paste examples).

gamedevbeginner.com

https://nobilitycat.tistory.com/entry/%EC%84%A0%ED%98%95-%EB%B3%B4%EA%B0%84%EA%B3%BC-%EA%B5%AC%EB%A9%B4-%EC%84%A0%ED%98%95-%EB%B3%B4%EA%B0%84slerp

 

선형 보간(lerp)과 구면 선형 보간(slerp)

선형 보간 법 사원수의 선형 보간:

nobilitycat.tistory.com

https://youtu.be/gnO1GVRuKxk?si=TmUyBvYoh3Qsv2eg