3ds 에서 애니메이션을 만들때에는 애니메이터가 원하는 타이밍마다 애니메이션 키를 넣어서 움직임을 조종합니다. 애니메이션 키를 넣을 수 있는 트랙에는 포지션, 로테이션, 스케일의 3 가지가 있고, 키의 종류에는 선형키 (Linear) 베지어키(Bezier), TCB 키등이 있습니다.

예를 들어서 test.3ds 라는 애니메이션이 있는데 전체 시간은 100 단위가 있고, 0, 30, 60, 100 의 포지션 트랙에 각각 키가 박혀있다고 가정합시다.

익스포트를 할때 트랙단위로 뽑으면, 정확하게 애니메이터가 키를 넣은 부분에 대한 데이타만 나오게 됩니다. 즉 키는 0, 30, 60, 100 만 나오게 됩니다.
반면에 샘플로 뽑으면 유저가 단위를 지정하게 되는데, 그 간격만큼 계산해서 키가 나오게 됩니다. 간격을 5 로 지정하면, 0, 5, 10, 15, 20, 25, ... 95, 100 이 나오게 됩니다.

용량이라는 경제적인 측면을 고려하면 당연히 트랙단위로 뽑는 것이 좋습니다. 위에서 보다시피 애니메이터가 넣은 키의 갯수만큼만 나오게 되니까 용량이 허비되는 일이 없습니다.

그런데 문제는 트랙단위로 뽑을때는 키의 성격에 따라서 부가정보들이 생겨난다는 점입니다. linear 같은 경우에는 단순하게 최소한의 정보만 나오게 되니까 키를 해석하는데 별 문제가 없지만, bezier, tcb 같은 경우에는 키에 딸린 부가정보 (bezier 같은 경우에는 조정점 정보, TCB 같은 경우에는 tension, continuity, bias 등의 정보, ease-in, ease-out 등의 부가정보) 들이 나오기 때문에, 이것들을 해석을 해주지 않으면 애니메이션이 정확하게 나오지 않습니다. 실제 맥스에서 애니메이션을 해보신 분이라면 알겠지만 키에 부가정보를 어떻게 넣느냐에 따라서 애니메이션의 모양이 상당히 달라지는 것을 알 수 있습니다.

물론 각 키를 해석하고 엔진상에서 interpolation 하는 부분을 완벽하게 구현한다고 하면 (자료를 찾기도 쉽지 않고 상당히 어렵습니다) 트랙단위 정보를 갖고 애니메이션을 할 수 있겠지만, 더 큰 문제는 맥스가 플러그인 기반 시스템이기 때문에, linear, bezier, TCB 이외의 애니메이션 키를 사용하게 되면, 익스포트할 방법이 없다는 점입니다. ASE 자체의 한계이기도 하지만, 플러그인 기반 시스템이 줄 수 있는 정보의 한계라고 보아야 할 것입니다.

그래서 용량상의 불이익에도 불구하고, 샘플방식을 사용할 수 있게 해 놓은 것입니다. 샘플 방식은 유저가 지정한 간격에 따라서, 맥스가 익스포팅을 하면서 각각의 시점마다 직접 맥스 스스로가 가진 플러그인들을 이용해서 최종 애니메이션 결과물의 행렬을 다시 포지션, 로테이션, 스케일로 쪼개서 (affine-decomposition) 뽑아주는 것이기 때문에 아무리 복잡한 키를 이용해서 애니메이션을 했다고 해도 (물론 버텍스 단위 애니메이션은 제외입니다) 각각의 타이밍에 대해서는 완벽한 결과물을 뽑아줍니다. 물론 샘플을 뽑는 간격을 너무 넓게 잡으면 용량은 아끼지만 정확도는 줄어들 것이고, 간격을 좁게 잡으면 정확도는 더 원래의 애니메이션에 가까와지지만, 용량이 크게 불어납니다.

그림으로 설명하면 좋은데 여건상 말로만 설명해야 하니 이해가 잘 되실련지 모르겠네요

아직 애니메이션을 공부하는 학생이라고 한다면, 일단 처음에 배우는 단계에서는 샘플을 이용해서 뽑아보시고, 뽑아나온 결과물의 용량과, 원래 애니메이션과의 차이를 비교해가면서 적절한 샘플링 간격을 조절해보시기를 권합니다. 그 후에 bezier 커브의 보간(interpolation)법이나 tcb spline 의 보간법을 익히시게 되면 트랙에도 도전을 해보는 것도 좋을 것입니다. 단 애니메이션 제작자에게는 정해진 키만 사용할 것을 미리 요구해줘야겠죠

상용 애니메이션 라이브러리인 granny 에서는 샘플방식이나 트랙방식을 쓰지 않고 제3의 방법인 curve fitting 이라는 방식을 사용합니다. 간단히 설명하자면, 커브 채우기는 샘플방식에서 한단계 발전한 방식인데, 샘플방식이 고정된 간격으로만 뽑아내기 때문에 효율이 나쁜 것을 개선해서, 직접 커브를 내부적으로 그려낸 다음에 필요한 타이밍에 필요한 키를 직접 다시 만들어내서 원래의 커브를 재현하는 방식입니다. 결과물은 용량은 적으면서 원래의 움직임에 가깝게 나온다는 장점이 있지만, 필요한 키를 직접 만들어내기 때문에 원래 애니메이터가 만든 애니메이션과 완전히 똑같지 않게 된다는 단점이 있습니다.

imcgames 의 김학규입니다