보간법(Interpolation)이란 수학에서 둘 이상의 변숫값에 대한 함숫값을 알고서, 그것들 사이의 임의의 변숫값에 대한 함숫값이나 그 근삿값을 구하는 방법을 말합니다.
즉, 두개의 데이터가 있고 이에 대한 함수를 안다면 이를 이용해 중간 단계의 데이터를 얻어낼 수 있다는 것입니다.
보간법을 이용하면 부드러운 움직임을 구현하는 데 사용할 수 있습니다. 보간법에는 다양한 방법이 존재하지만대표적인 2가지에 대해서 알아보겠습니다.
선형 보건법(Lerp; Linear Interpolation)은 선형 방정식을 사용해 보간하는 방법을 의미합니다.
코드로 나타내면 아래와 같습니다.
Unity는 이미 이에 데한 API를 제공하고 있습니다. 예를 들어 Math.Lerp(), Vector3.Lerp() 등이 있습니다.
구면 선형 보간법(Slerp; Spherical Linear Interpolation)은 두 데이터를 통과하는 가장 짧은 호에서 임의의 데이터를 얻을 수 있는 보간법입니다.
구면 선형 보간의 경우 계산에 의한 오차가 있어 완벽하게 구하기 어려우므로 코드 구현은 생략하겠습니다. 수식이 궁금하다면 여기를 참고하면 되겠습니다.
Unity에서는 Vector3.Slerp(), Quaternion.Slerp()를 제공합니다.
선형 보간을 이용하면 베지어 곡선을 구현할 수 있습니다. 베지어 곡선에 대한 설명은 여기를 참고하면 되겠습니다.
1차부터 3차까지의 베지어 곡선의 코드는 아래와 같습니다.
이를 재귀적으로 구현하면 아래와 같습니다.
개구리처럼 폴짝 폴짝 잘 뜁니다!