내일배움캠프 TIL

내일배움캠프 51일차 TIL "AnimationCurve를 이용한 조명구현"

Jooglorystar 2024. 11. 28. 22:11

 

 

AnimationCurve는 기본적으로 애니메이션을 제어하기 위해 사용되는 클래스이다.

다음과 같이 생겼다.

 

 

 

위와 같은 그래프의 형태로 되어있으며, 중간중간에 보이는 점들을 키프레임 이라고 한다.

키 프레임은 'Time'과 'Value'로 이루어져 있는데, 두번째 이미지에서, 12.00가 Time이고, 1.000이 Value에 해당된다.

 

AnimationCurve 클래스에는 Evaluate(float)이라는 메서드가 있는데, Time 값을 넣으면 Value값을 도출해 낼 수 있게 된다.

예를 들어, 위 AnimationCurve에서 다음과 같이 Evaluate을 사용한다면 1f을 반환하게 된다.

_animationCurve.Evaluate(12f)

 

 

이러한 AnimationCurve의 특징을 보간작업에도 이용할 수 있다.

예를들어 다음과 같은 식이다.

float _lerpTime;
float _lerpCycle = 10f;

void Update()
{
    _lerpTime += Time.deltaTime;
    if(_lerpTime <= _lerpCycle)
    {
	    _light.color = Color.Lerp(_startColor, _targetColor, _animationCurve.Evaluate(_lerpTime/_lerpCycle);
    }
	
}

 

Color.Lerp메서드는 매개변수를 3개를 받는 메서드이다.

개인적으로는 값A, 값B, 그리고 중간값 이라는 느낌으로 익히고 있다.

 

'중간값'의 경우 0f일 경우에는 값A이며, 1f일 경우 값B가 된다.

0.2, 0,5 등의 값을 넣게 된다면, A와 B 사이 중간쯤 그 값에 해당되는 부분이 반환되게 된다.

 

Color.Lerp를 이용하는 위 예시 코드의 경우, 

10초동안 _startColor값에서 _targetColor 값으로 서서히 자연스럽게 변화하는 것을 구현할 수 있다.