UDN
Search public documentation:

AnimationCompressionAlgorithmsKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 애니메이션 > 애니메이션 압축 알고리즘
UE3 홈 > 애니메이터 / 시네마틱 아티스트 > 애니메이션 압축 알고리즘

애니메이션 압축 알고리즘


문서 변경내역: 2010/10/19 - Jeff Wilson 작성. 홍성진 번역.

개요


언리얼 엔진 내에 제공되어 애님세트 에디터애니메이션 압축 대화창 내에서 애니메이션에 적용할 수 있는 애니메이션 압축 알고리즘에 대한 상세 설명서입니다.

애니메이션 압축 미리보기 및 변경에 대한 에디터 콘트롤 상세 정보는 애니메이션 압축 대화창 페이지를 참고해 주시기 바랍니다.

언리얼 엔진 3에서 애니메이션 압축에 관련된 작업을 하는 프로그래머용 테크니컬 가이드로는, 애니메이션 압축 테크니컬 가이드 를 참고해 주시기 바랍니다.

압축 알고리즘


언리얼 엔진 3에는 기본 엔진 구현에 제공된 애니메이션 압축 알고리즘이 여럿 있습니다. 그 세부사항은 아래와 같습니다.

Automatic(자동)


Automatic(자동) 애니메이션 압축 알고리즘은 근본적으로 다양한 압축 스키마를 시도해 본 다음, 설정 가능한 오차 한계점 내에서 메모리 풋프린트를 가장 적게 차지하는 것을 고르는 셸입니다.

프로퍼티

  • Max End Effector Error (최대 엔드 이펙터 오차) - 키를 제거할 수 있는지 테스트하면서 엔드 이펙터까지 내려가면서 이펙트를 모니터링합니다. 압축 기술이 엔드 이펙터로 전할 수 있는 최대 오차량이 됩니다. 오차 한계점 (0.0은 현재 / 디폴트 스키마 이외의 것은 시도하지 않는다는 뜻입니다).
  • Try Fixed Bitwise Compression (고정된 비트단위 압축 시도) - 참이면 균등 비트단위 기술이 사용됩니다.
  • Try Per Track Bitwise Compression (트랙별 비트단위 압축 시도) - 참이면 트랙별 압축기 기술을 사용해 봅니다.
  • Try Linear Key Removal Compression (선형 키 제거 압축 시도) - 참이면 선형 키 압축 기술을 시도해 봅니다.
  • Try Interval Key Removal (간격 키 제거 시도) - 참이면 리샘플링 기술이 시도됩니다.
  • Run Current Default Compressor (현재 디폴트 압축기 실행) - 참이면 애니메이션의 현재 압축기가 NULL이 아닌 경우 먼저 재압축해 보고, 아니면 (BaseEngine.ini 에 지정된) 글로벌 디폴트 압축기로 해 봅니다.
  • Auto Replace If Extisting Error Is Too Great (기존 오차가 너무 크면 자동 대체) - 참이면 기존 압축 오차가 Max End Effector Error (최대 엔드 이펙터 오차)보다 큰 경우, 한계점 아래로 떨어질 때까지 (크기가 더 커지더라도) 오차가 더 낮은 압축 기술을 사용합니다.
  • Raise Max Error To Existing (최대 에러를 기존 수준으로 올리기) - 참이고 기존 압축 오차가 Max End Effector Error (최대 엔드 이펙터 오차)보다 큰 경우, Max End Effector Error (최대 엔드 이펙터 오차)가 사실상 기존 오차 수준으로 오르게 됩니다.

Bitwise Compress Only(비트단위 압축만)


Bitwise Compress Only(비트단위 압축만) 애니메이션 압축 알고리즘은 애니메이션 시퀸스의 회전 및 옮기기 트랙 상에서 비트단위 애니메이션 압축만을 수행하는 것입니다. 이 알고리즘에서는 키 감소가 수행되지 않습니다.

프로퍼티

  • 회전 압축 포맷 - 회전 데이터의 비트단위 압축용 포맷입니다. 디폴트는 ACF_Float96NoW 입니다.

Remove Every Second Key(하나 걸러 한키 제거)


Remove Every Second Key(하나 걸러 한키 제거) 애니메이션 압축 알고리즘은 애니메이션 시퀸스의 회전 및 옮기기 트랙의 키를 단순히 하나 걸러 하나씩 지우는 키 감소를 수행한 것에 더해 애니메이션 시퀸스의 회전 및 옮기기 트랙에다 비트단위 압축을 수행합니다.

프로퍼티

  • Min Keys (최소 키) - 키 감소를 수행하기 위해 있어야 하는 최소 키 갯수입니다. Min Keys (최소 키)보다 적은 애니메이션은 아무 키도 잃지 않습니다.
  • Start At Second Key (둘째 키에서 시작) - 참이면 짝수번째 키를 제거합니다. 거짓이면 홀수번째 키를 제거합니다.
  • Rotation Compression Format (회전 압축 포맷) - 회전 데이터의 비트단위 압축용 포맷입니다. 디폴트는 ACF_Float96NoW 입니다.

Remove Linear Keys(선형 키 제거)


Remove Linear Keys(선형 키 제거) 애니메이션 압축 알고리즘은 주변 키의 선형 보간이 되는 키를 제거하는 키 감소를 수행한 것에 더해 애니메이션 시퀸스의 회전 및 옮기기 트랙에다 비트단위 애니메이션 압축을 수행합니다. 즉 한 키와 다음 키 사이의 선형 경로에 해당하는 키가 불필요한 경우 제거된다는 뜻입니다.

프로퍼티

  • Max Pos Diff (최대 위치 차) - 애니메이션 키를 제거할지 여부를 테스트할 때 사용할 최대 위치 차이입니다. 값이 낮을 수록 유지하는 키도 많아지나 압축률도 낮아집니다.
  • Max Angle Diff (최대 각도 차) - 애니메이션 키를 제거할지 여부를 테스트할 때 사용할 최대 각도 차이입니다. 값이 낮을 수록 유지하는 키도 많아지나 압축률도 낮아집니다.
  • Max Effector Diff (최대 이펙터 차) - 지울 키를 테스트하는 도중 엔드 이펙터까지 주욱 내려가면서 이펙트를 모니터링합니다. 한 키를 제거했더니 그 위치가 이보다 많이 바뀌게 된다면, 그 키는 유지됩니다. 이 값은 엔드 이펙터 부모를 제외한 모든 본에 사용됩니다.
  • Min Effector Diff (최소 이펙터 차) - 지울 키를 테스트하는 도중 엔드 이펙터까지 주욱 내려가면서 이펙트를 모니터링합니다. 한 키를 제거했더니 그 위치가 이보다 적게 바뀌게 된다면, 그 키는 유지됩니다. 이 값은 엔드 이펙터 부모에 대해 사용되며, 스켈레탈 체인 끝 주변부를 좀 더 빡빡하게 제한시킬 수 있습니다.
  • Parent Key Scale (부모 키 스케일) - 본과 본 부모의 같은 시간 위치에 키가 있을때, 그 본의 키를 유지할 확률을 조절하는 스케일 값입니다. 값을 높일 수록 압축률을 댓가로 애니메이션의 떨리는 부작용을 제거할 수 있습니다.
  • Retarget (리타겟) - 참이면 애니메이션이 압축될 때, 애니메이션 노드가 압축 오차를 보정하도록 조절됩니다.
  • Actually Filter Linear Keys (실제로 선형 키 필터링?) - 참이면 최종 필터링 단계가 발생합니다. 거짓이면 비트단위 압축 이후 리타게팅만 발생합니다. 이 옵션과 Retarget (리타겟) 옵션이 둘 다 거짓인 경우, 선형 압축기는 내재된 비트단위 압축기보다 나을게 없을 것이고, 매우 느릴 겁니다.
  • Rotation Compression Format (회전 압축 포맷) - 회전 데이터의 비트단위 압축용 포맷입니다. 디폴트는 ACF_Float96NoW 입니다.

Compress Each Track Independently(각 트랙 별개로 압축)


Compress Each Track Independently(각 트랙 별개로 압축) 애니메이션 압축 알고리즘은 주변 키의 선형 보간이 되는 키를 제거하여 키 감소를 수행한 것에 더해 회전, 옮기기의 각 트랙에 대해 독립적으로 최적의 비트단위 압축을 선택합니다.

프로퍼티

  • Max Zeroing Threshold (최대 0화 한계점) - 컴포넌트를 0으로 대체할 때 사용할 최대 한계점입니다. 값이 낮을 수록 더 많은 키가 유지되지만, 압축률이 낮아집니다.
  • Max Pos Diff Bitwise (최대 위치 차 비트단위) - 애니메이션 키를 지워야할 지를 테스트할 때 사용할 최대 위치 차이입니다. 값이 낮을 수록 더 많은 키가 유지되지만, 압축률이 낮아집니다.
  • Max Angle Diff Bitwise (최대 각도 차 비트단위) - 애니메이션 키를 지워야할 지를 테스트할 때 사용할 최대 각도 차이입니다. 값이 낮을 수록 더 많은 키가 유지되지만, 압축률이 낮아집니다.
  • Allowed Rotation Formats (허용된 회전 포맷) - 회전 키에 허용되는 트랙별 압축기가 어떤 인코딩 포맷인지 입니다.
  • Allowed Translation Formats (허용된 옮기기 포맷) - 옮기기 키에 허용되는 트랙별 압축기가 어떤 인코딩 포맷인지 입니다.
  • Resample Animation (애니메이션 리샘플링) - 참이면 애니메이션을 초당 Resampled Framerate (리샘플링 프레임율) 프레임의 속도로 리샘플링합니다.
  • Use Adaptive Error (적응성 오차 사용) - 참이면 스켈레톤 내의 'height'(높이)에 따라 오차 한계점을 조절합니다.
  • Use Override For End Effectors (엔드 이펙터에 대해 덮어쓰기 사용) - 참이면 엔드 이펙터용 한계점으로 MinEffectorDiff(최소 이펙터 차)를 사용합니다.
  • Use Adaptive Error 2 (적응성 오차 2 사용) - 참이면 적응성 에러 시스템이 각 트랙에 대해 얼마만큼의 오차를 허용할 지를, 트랙 내의 오차로 인해 엔드 이펙터에 전해진 오차에 따라 결정합니다.
  • Resampled Framerate (리샘플링 프레임율) - Resample Animation (애니메이션 리샘플링)이 참일 때, 원하는 프레임율을 정의합니다. Resample Animation (애니메이션 리샘플링)이 참일 때만 켜집니다.
  • Min Keys For Resampling (리샘플링용 최소 키) - 애니메이션의 키를 제거하기 위해 필요한 최소 키 수입니다. 키의 수가 이보다 작은 애니메이션은 리샘플링되지 않습니다.
  • Track Height Bias (트랙 높이 편향) - 적응성 오차를 계산하기 전에 트랙 높이에다 더해줄 편향치입니다.
  • Parenting Divisor / Parenting Divisor Exponent (부모화 제수 / 부모화 제수 지수) - 키가 발생하는 트리 위로의 오차 허용치를 줄입니다. Use Adaptive Error (적응성 오차 사용)이 참일 때만 효과가 있습니다. 오차 허용치 계산식은:

   EffectiveErrorTolerance = Max(BaseErrorTolerance / Power(ParentingDivisor, Max(Height+Bias,0) * ParentingDivisorExponent), ZeroingThreshold)
   실제 오차 허용치 = 최대치(기본 오차 허용치 / 거듭제곱(부모화 제수, 최대치(높이+편향,0) * 부모화 제수 지수), 0화 한계점)
   

  • Rotation Error Source Ratio (회전 오차 소스 비율) - 주어진 트랙의 회전 오차 또는 옮기기 오차로부터 얼마만큼의 오차를 엔드 이펙터 회전 오차로 따올지를 정하는 비율입니다. 1이면 회전 오차에서만, 0.5면 각각 절반씩, 0.0이면 옮기기 오차에서만 따옵니다.
  • Translation Error Source Ratio (옮기기 오차 소스 비율) - 주어진 트랙의 회전 오차 또는 옮기기 오차로부터 얼마만큼의 오차를 엔드 이펙터 옮기기 오차로 따올지를 정하는 비율입니다. 1이면 회전 오차에서만, 0.5면 각각 절반씩, 0.0이면 옮기기 오차에서만 따옵니다.
  • Max Error Per Track Ratio (트랙별 최대 오차 비율) - 특정 트랙에 의해 전해받을 수 있는 오차 예산 총량을 결정하는 분수입니다.
  • Max Pos Diff (최대 위치 차) - 애니메이션 키를 지워야할 지를 테스트할 때 사용할 최대 위치 차이입니다. 값이 낮을 수록 더 많은 키가 유지되지만, 압축률이 낮아집니다.
  • Max Angle Diff (최대 각도 차) - 애니메이션 키를 지워야할 지를 테스트할 때 사용할 최대 각도 차이입니다. 값이 낮을 수록 더 많은 키가 유지되지만, 압축률이 낮아집니다.
  • Max Effector Diff (최대 이펙터 차) - 지울 키를 테스트하는 도중 엔드 이펙터까지 주욱 내려가면서 이펙트를 모니터링합니다. 한 키를 제거했더니 그 위치가 이보다 많이 바뀌게 된다면, 그 키는 유지됩니다. 이 값은 엔드 이펙터 부모를 제외한 모든 본에 사용됩니다.
  • Min Effector Diff (최소 이펙터 차) - 지울 키를 테스트하는 도중 엔드 이펙터까지 주욱 내려가면서 이펙트를 모니터링합니다. 한 키를 제거했더니 그 위치가 이보다 적게 바뀌게 된다면, 그 키는 유지됩니다. 이 값은 엔드 이펙터 부모에 대해 사용되며, 스켈레탈 체인 끝 주변부를 좀 더 빡빡하게 제한시킬 수 있습니다.
  • Parent Key Scale (부모 키 스케일) - 본과 본 부모의 같은 시간 위치에 키가 있을때, 그 본의 키를 유지할 확률을 조절하는 스케일 값입니다. 값을 높일 수록 압축률을 댓가로 애니메이션의 떨리는 부작용을 제거할 수 있습니다.
  • Retarget (리타겟) - 참이면 애니메이션이 압축될 때, 애니메이션 노드가 압축 오차를 보정하도록 조절됩니다.
  • Actually Filter Linear Keys (실제로 선형 키 필터링?) - 참이면 최종 필터링 단계가 발생합니다. 거짓이면 비트단위 압축 이후 리타게팅만 발생합니다. 이 옵션과 Retarget (리타겟) 옵션이 둘 다 거짓인 경우, 선형 압축기는 내재된 비트단위 압축기보다 나을게 없을 것이고, 매우 느릴 겁니다.

Remove Trivial Keys(사소한 키 제거)


Remove Trivial Keys(사소한 키 제거) 애니메이션 압축 알고리즘은 진부한 프레임, 즉 전체 애니메이션에 걸쳐 위치나 방향이 변하지 않는 트랙의 프레임을 날 애니메이션 데이터로부터 제거합니다. 위치와 회전 둘 다가 단일 프레임으로 줄어드는 경우, 그 시간을 벗겨내 버리기도 합니다.

프로퍼티

  • Max Pos Diff (최대 위치 차) - 애니메이션 키를 지워야할 지를 테스트할 때 사용할 최대 위치 차이입니다. 값이 낮을 수록 더 많은 키가 유지되지만, 압축률이 낮아집니다.
  • Max Angle Diff (최대 각도 차) - 애니메이션 키를 지워야할 지를 테스트할 때 사용할 최대 각도 차이입니다. 값이 낮을 수록 더 많은 키가 유지되지만, 압축률이 낮아집니다.
  • Rotation Compression Format (회전 압축 포맷) - 회전 데이터의 비트단위 압축용 포맷입니다. 디폴트는 ACF_Float96NoW 입니다.

Revert To Raw(날것으로 복원)


Revert To Raw(날것으로 복원) 애니메이션 압축 알고리즘은 애니메이션 압축을 되돌리고, 애니메이션을 날 데이터로 복원시킵니다.

프로퍼티

  • Rotation Compression Format (회전 압축 포맷) - 회전 데이터의 비트단위 압축용 포맷입니다. 디폴트는 ACF_None 입니다.