Skip to content

Animation Optimization

JungSu Kim edited this page Jan 26, 2016 · 1 revision

본(Bone)의 수

  • 많은 본을 사용하여 캐릭터를 만들어야 하는 경우가 있습니다.
  • (예를 들면 커스텀 가능한 부착물(Attachments)들) 이 경우, 필요한 추가 본의 수에 따라 빌드 크기가 커져, 추가 본 수에 비례하여 처리 비용이 늘어날 것으로 생각해야 합니다.
  • 예를 들어, Generic 모드에서 이미 30의 본이 있는 Rig에 15의 본을 추가하면 50%의 추가 시간이 소요됩니다.
  • Generic 및 Humanoid모드에서 추가 본을 가질 수 있음을 유의하십시오.
  • 추가 본을 사용하고 있어도 재생 할 애니메이션이 없는 경우, 처리 비용의 증가는 무시할 수 있는 정도입니다.
  • 부착물(attachmets)이 존재하지 않거나 숨어있는 경우에는 추가 처리 비용은 낮아집니다.

여러 개의 스킨 매쉬

  • 가능한 한 스킨 메쉬는 결합(combine)하십시오.
  • 캐릭터를 두개의 스킨 메쉬 렌더러(class-SkinnedMeshRenderer)로 나누는 것은 퍼포먼스 관점에서는 좋은 일이 아닙니다.
  • 캐릭터에 하나의 메터리얼을 사용하는게 더 좋지만, 실제로는 여러 메테리얼이 필요한 경우가 존재합니다.

컨트롤러

  • 애니메이터/Animator는 [컨트롤러/Controller (class-AnimatorController)가 설정되어 있지 않으면 처리 시간이 증가하지 않습니다.

심플 에니메이션

  • 블렌딩이 없는 하나의 애니메이션 클립를 재생하면 메카님이 레거시 애니메이션 시스템보다 느려질 수 있습니다.
  • 오래된 시스템은 직접적이며, 커브를 샘플링하여 Transform에 직접 기록을 실행하고 있습니다.
  • 메카님은 블렌딩에 사용하는 임시 버퍼가 있으며, 샘플링된 커브 및 기타 데이터의 복제가 발생합니다.
  • 메카님 레이아웃은 애니메이션 블렌딩과 보다 복잡한 설정에 최적화 되어 있습니다.

스케일 커브(Scale Curve)

  • Animating scale curves is more expensive than animating translation and rotation curves. To improve performance, avoid scale animations.
  • Note: This does not apply to constant curves (curves that have the same value for the length of the Animation Clip ). * * Constant curves are optimized, and are less expensive that normal curves.

레이어(Layer)

  • 메카님 처리 시간의 대부분은 애니메이션의 평가에 사용되고 있기 때문에, AnimationLayers 및 AnimationStateMachines의 오버 헤드는 최소한으로 유지 됩니다.
  • 추가 레이어를 애니메이터에 추가하는 비용은 동기화되어 있는지 여부에 상관없이 어떤 애니메이션 및 블렌드 트리가 레이어에 의해 재생되고 있는지에 의존하고 있습니다.
  • 레이어 웨이트가 제로면 레이어의 업데이트는 생략됩니다.

휴머노이드 vs Generic 모드

  • 휴모노이드 에니메이션을 임포트할 때, 바디 마스크를 사용하여 IK Goals 또는 불필요한 손가락의 에니메이션을 제외 함
  • Generic을 사용하는 경우 root motion을 사용하면 처리 부하가 증가. root motion을 사용하지 않는 에니메이션의 경우 root bone이 선택되어 있지 않은지 확인

메카님 씬

  • Animator의 파라미터를 쿼리할 때는 문자열 대신에 해시(Hash)를 사용함
  • Animator를 제어하는 AI 레이어를 축소 구현함. OnStateChange, OnTransitionBegin 등등을 위해 간단한 콜백이 제공됨
  • State 태그를 사용하여 AI 상태 머신이 메카님 상태 머신에 일치하도록 함
  • 이벤트를 시뮬레이션하기 위해 추가적인 커브를 사용함
  • 추가적인 커브를 사용하여 에니메이션을 마크업(Mark Up)함. Target Matching과 함께 사용

런타임 최적화

  • 에니메이터 Culling Mode를 Based on Renderers로 설정하여 스킨 메쉬 렌더러의 Update When Offscreen 프로퍼티를 해제함으로써 에니메이션을 항상 최적화 할 수 있음
  • 결과적으로 캐릭터가 표시되지 않을 때는 Update되지 않음
Clone this wiki locally