휴머노이드 애니메이션 리타게팅
애니메이션 레퍼런스

성능 및 최적화

이 페이지에는 Unity 애니메이션 시스템에서 최고의 성능을 얻는 데 유용할 수 있는 캐릭터 설정, 애니메이션 시스템, 런타임 최적화에 관한 팁이 몇 개 포함되어 있습니다.

캐릭터 설정

뼈대 수

예를 들어 커스터마이즈할 수 있는 부착물이 많이 필요한 경우처럼 때로는 많은 수의 뼈대를 사용하여 캐릭터를 만들어야 할 수 있습니다. 이렇게 뼈대 수가 많아지면 빌드 크기가 커지고, 빼대가 추가될 때마다 처리하는 데 리소스가 상대적으로 더 많이 사용될 수 있습니다. 예를 들어 이미 30개의 뼈대가 있는 릭에 뼈대를 15개 더 추가하면 제네릭(Generic) 모드에서 처리하는 데 시간이 50% 더 걸립니다. 제너릭휴머노이드 타입의 뼈대를 추가할 수 있습니다. 추가 뼈대를 사용하여 재생하는 애니메이션이 없는 경우, 처리에 사용되는 리소스는 거의 증가하지 않습니다. 부착물이 존재하지 않거나 숨겨져 있는 경우 더욱 조금 증가합니다.

멀티플 스킨드 메시

가능한 경우 스킨드 메시를 항상 결합하십시오. 캐릭터를 두개의 스킨드 메시 렌더러로 분할하면 성능이 저하됩니다. 캐릭터에 머티리얼이 하나만 있으면 더 바람직하지만, 실제로는 경우에 따라 두 가지 이상의 머티리얼이 필요할 수 있습니다.

애니메이션 시스템

컨트롤러

애니메이터컨트롤러가 설정되어 있지 않으면 처리 시간이 증가하지 않습니다.

간단한 애니메이션

블렌딩 없이 애니메이션 클립을 하나만 재생하면 Unity가 레거시 애니메이션 시스템보다 느려질 수 있습니다. 오래된 시스템은 매우 직접적이어서 커브를 샘플링하여 트랜스폼에 직접 기록합니다. Unity의 현재 애니메이션 시스템에는 블렌딩에 사용되는 임시 버퍼가 있고 샘플링된 커브 및 기타 데이터가 추가로 복사됩니다. 현재 시스템 레이아웃은 애니메이션 블렌딩과 더 복잡한 설정에 최적화되어 있습니다.

스케일 커브

스케일 커브 애니메이션화에는 이동 애니메이션화와 회전 커브보다 많은 비용이 들어갑니다. 성능을 개선하기 위해서 스케일 애니메이션은 피해야 합니다.

참고: 상수 커브(애니메이션 클립의 길이 값이 같은 커브)에는 적용되지 않습니다. 상수 커브는 최적화되고 일반적인 커브보다 리소스를 더 적게 사용합니다. 기본 씬 값과 같은 값이 포함된 상수 커브는 씬에 매 프레임마다 작성되지 않습니다.

레이어

대부분의 경우 Unity는 애니메이션을 평가하고 애니메이션 레이어애니메이션 상태 머신에 사용되는 리소스를 최소한으로 유지합니다. 레이어를 애니메이터에 하나 더 추가함으로 인해 증가하는 리소스 사용량은 동기화 여부에 관계없이 레이어에서 재생하는 애니메이션 및 블렌드 트리에 따라 다릅니다. 레이어의 가중치가 0이면 Unity가 레이어 업데이트를 건너뜁니다.

휴머노이드와 제네릭 애니메이션 타입 비교

다음 팁은 타입을 결정하는 데 유용합니다.

  • 휴머노이드 애니메이션을 임포트하는 경우 아바타 마스크(class-AvatarMask)를 사용하여 필요하지 않은 IK 골 또는 손가락 애니메이션을 제거하십시오.
  • 제네릭을 사용하는 경우 루트 모션을 사용하면 사용하지 않는 것보다 리소스가 더 많이 사용됩니다. 애니메이션에서 루트 모션을 사용하지 않는 경우 루트 뼈대를 지정하지 않아야 합니다.

씬 레벨 최적화

최적화할 수 있는 요소는 많으며, 몇 가지 유용한 팁은 다음과 같습니다.

  • 애니메이터를 쿼리할 때 문자열 대신 해시를 사용합니다.
  • 애니메이터를 제어할 작은 AI 레이어를 구현합니다. OnStateChange, OnTransitionBegin 및 기타 이벤트를 위한 간단한 콜백을 제공하도록 설정할 수 있습니다.
  • 상태 태그를 사용해 AI 상태 머신을 Unity 상태 머신에 쉽게 일치시킬 수 있습니다.
  • 추가 커브를 사용해 이벤트를 시뮬레이션합니다.
  • 추가 커브를 사용해 예를 들어 타겟 매칭과 함께 애니메이션을 마크업합니다.

런타임 최적화

가시성과 업데이트

항상 애니메이터의 컬링 모드렌더러 기반(Based on Renderers) 으로 설정하고 스킨드 메시 렌더러오프스크린일 때 업데이트(Update When Offscreen) 프로퍼티를 비활성화하십시오. 그러면 캐릭터가 보이지 않을 때 Unity가 애니메이션을 업데이트하지 않습니다.


휴머노이드 애니메이션 리타게팅
애니메이션 레퍼런스