12. ANIMATION
F ra me A nima tio n
: F ra me 기준 , 모든 F ra me 이 있어야 합니다 .
Ke yfra me A nima tio n
: Ke y 기준 , Ke y 와 시간으로 F ra me 을 계산합니다 .
13. Ke yfra me 은 시간을 기준으로 계산됩니다 .
프레임 시간이란 한 프레임을 만들어 내는데 걸리는 시간입니다 .
프레임 시간은 = 1/F P S ( F ra me 률 /F ra me Pe r S e c ) , 30F ra me 인
경우 1/30 즉 , 30 F ra me 의 A nima tio n 을 전체 시간을 1 로 봤
을 때 값입니다 .
새 시간 = 이전 시간 + ( Tic k 당 시간 / 프레임시간 ) * A nima tio n
속도
왜냐하면 게임 F ra me 과 A nima tio n 의 F ra me 은 동일하지 않기
때문입니다 .
프레임시간을 통해서 A nima tio n 의 시간으로 동기화 시켜줍니다 .
즉 , Tic k 당 시간을 F ra me 으로 나눠서 프레임시간을 다시 계산해
줍니다 .
A nima tio n Re s o urc e 작업시 30 F ra me 으로 맞춰서 변경해주지만
이에 속도값으로 제어합니다 .
프레임시간으로도 A nima tio n 속도를 제어할 수 있을 수 있기 때문에
고정된 값이 아닌 이상 위와 같이 계산을 해주지 않으면 그래픽에서
작업해준 정보와 다르게 더 느리거나 빠른 A nima tio n 을 볼 수 있을
14. INTERPOLATION
D3DXINLINE D3DXVECTOR3* D3DXVec3Lerp
( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2, FLOAT s )
{
pOut->x = pV1->x + s * (pV2->x - pV1->x);
pOut->y = pV1->y + s * (pV2->y - pV1->y);
pOut->z = pV1->z + s * (pV2->z - pV1->z);
return pOut;
}
중간위치 = 처음위치 * ( 1 – s ) + 최종위치 * s
s = 보간 값 = ( 현재 시간 – 처음 시간 ) / ( 최종 시간 –처
음 시간 )
현재 시간 ( Tic k 당 갱신 시간 )
처음 시간 ( 이전 F ra me 시간 ) / 최종 시간 ( 다음
F ra me 시간 )