애니메이션 압축 라이브러리(Animation Compression Library, ACL) 는 더 강력하고 커스터마이징 가능한 압축 코덱을 지원하는 플러그인으로, 애니메이션 압축을 추가적으로 커스터마이징할 수 있습니다.
전제조건
- 애니메이션 압축 라이브러리 플러그인을 활성화해야 합니다. 메뉴 바(Menu Bar)에서 편집(Edit) > 플러그인(Plugins) 으로 이동한 후 애니메이션 섹션 아래 목록이나 검색창(Search Bar)에서 애니메이션 압축 라이브러리 플러그인을 찾습니다. 플러그인을 활성화하고 에디터를 재시작합니다.
ACL 구성
ACL 플러그인은 프로젝트의 모든 애니메이션 시퀀스를 압축할 수 있는 본(Bone) 및 커브 압축 세팅(Curve Compression Settings) 에셋이 모두 미리 환경설정된 상태로 제공됩니다. 이러한 압축 세팅 에셋이 있는 위치는 다음과 같습니다. Engine > Plugins > Animation Compression Library Content .
또한, 새로운 본 및 커브 압축 세팅 에셋을 생성하고 애님 압축 ACL(Anim Compress ACL) 옵션을 사용하도록 코덱(Codec) 프로퍼티를 설정하여 해당 함수 기능에 액세스할 수도 있습니다.
![]() |
![]() |
|---|---|
| 본 압축 세팅 | 커브 압축 세팅 |
대부분의 프로젝트에 디폴트 애님 압축 ACL 코덱을 사용하는 것이 좋은데, 이는 대부분의 사용 사례에서 가장 최적의 결과를 내도록 설계된 코덱이기 때문입니다.
디폴트 압축 세팅 변경하기
패키지를 만들 때 사용되는 디폴트 압축 세팅 에셋을 변경하려면, 프로젝트의 BaseEngine.ini 또는 그와 동등한 파일의 Animation.DefaultObjectSettings 섹션을 편집해야 합니다.
관련 항목은 다음과 같습니다. BoneCompressionSettings="/Engine/Animation/DefaultAnimBoneCompressionSettings .
이 항목은 Engine Content 폴더 내에 포함된 디폴트 압축 세팅 에셋을 가리킵니다. 이 항목이 다른 원하는 적절한 에셋을 가리키도록 변경할 수 있습니다. 디폴트 ACL 압축 세팅 에셋이나 원하는 커스텀 압축 세팅 에셋을 가리키는 경로 등 다른 경로를 사용하도록 항목을 수정하면 됩니다.
디폴트 압축 세팅 에셋이 디폴트 ACL 압축 세팅 에셋을 사용하도록 설정하려면 다음과 같은 항목 경로를 사용합니다. BoneCompressionSettings="/Plugins/AnimationCompressionLibraryContent/ACLAnimBoneCompressionSettings
커스텀 에셋을 사용하도록 항목을 설정하기 위해 이 경로는 에셋이 저장된 위치가 어디든 항상 그곳을 가리킵니다. 예를 들어, BoneCompressionSettings="/Game/Compression/MySettings 를 .../MyProject/Content/Compression/MySettings.uasset 경로에 있는 파일에 사용합니다.
ACL 본 압축
애님 압축 ACL 코덱은 최대한 안전한 압축을 선호하므로 세팅을 많이 건드리지 않는 것이 좋습니다. 더 강력한 압축이 필요하거나 더 견고한 압축 기능을 살펴보고 싶은 경우 애님 압축 커스텀 ACL(Anim Compress Custom ACL) 코덱을 사용할 수도 있습니다. 이 코덱은 고급 옵션과 세팅 조정이 가능하고 디버깅 목적의 용도로 설계되었습니다.
ACL 본 압축 레퍼런스
아래에서 ACL 코덱 프로퍼티 목록과 그 기능에 대한 설명을 참조할 수 있습니다. 모든 유닛은 언리얼 유닛(cm)입니다.
| 프로퍼티 | 설명 |
|---|---|
| 최적화 타깃(Optimization Targets) | 압축 시 스키닝 디포메이션을 추정하는 데 사용되는 스켈레탈 메시(Skeletal Mesh)입니다. 에셋을 추가하려면 + 추가(+ Add ) 를 사용한 다음 드롭다운 메뉴에서 에셋을 선택합니다. 이 프로퍼티는 압축 시 최적의 시각적 퀄리티를 유지하게 만듭니다. 스켈레탈 메시 레퍼런스와 함께 ACL 코덱을 제공할 수 있는 경우, 그 코덱은 비주얼 메시를 근사화할 필요가 없으므로 압축 결과가 향상됩니다. 하지만 메시의 퀄리티가 높을수록 메모리 점유율이 다소 증가하는 경향이 있습니다. |
| 압축 레벨(Compression Level) | 5개로 제공되는 레벨 중에서 사용할 압축 레벨을 설정합니다. 레벨이 높을수록 압축은 느리지만, 메모리 점유율이 감소합니다. 압축 결과를 테스트하여 프로젝트에 맞는 최상의 결과를 찾는 것이 중요합니다. 압축 레벨은 ACL이 메모리 점유율 최적화를 얼마나 적극적으로 시도하는지를 결정합니다. 레벨이 높을수록 메모리 점유율이 감소하는 대신 압축은 오래 걸리고, 레벨이 낮을수록 압축이 빨라지는 대신 메모리 점유율이 증가합니다. 중간은 양쪽의 균형이 잘 잡혀 있어 프로덕션용으로 적합합니다. |
| 디폴트 버추얼 버텍스 거리(Default Virtual Vertex Distance) | 노멀 본의 디폴트 버추얼 버텍스 거리를 설정합니다. 디폴트 버추얼 버텍스 거리 값을 적절하게 선택하는 것이 중요합니다. 3cm 디폴트 값은 전반적으로 일반 캐릭터에 적합하지만, 큰 오브젝트나 특이 캐릭터에 사용 시에는 미세 조정을 해야 할 수 있습니다. UE에서는 정확도가 더 높아야 하는 특수 본도 지원합니다. 기본적으로 소켓이 연결된 모든 본은 정확도가 높아야 하는 본으로 간주되며, UAnimationSettings::KeyEndEffectorsMatchNameArray에 있는 서브스트링 중 하나가 포함된 모든 본도 마찬가지입니다. 일반 서브스트링에는 핸드, 눈, IK, 카메라 등이 포함됩니다. 특수 본의 경우에는 안전 버추얼 버텍스 거리를 대신 사용합니다. |
| 안전 버추얼 버텍스 거리(Safe Virtual Vertex Distance) | 더 정확해야 하는 경우에 사용하는, 본의 버추얼 버텍스 거리입니다. |
| 오류 한계치(Error Threshold) | 애니메이션 시퀀스를 최적화하고 압축할 때 사용하는 오류 한계치입니다. 값이 작을수록 오류가 적어지고, 값이 클수록 오류가 많아집니다. ACL 최적화 알고리즘은 오류가 특정 오류 한계치를 초과하기 전까지는 최대한 모든 오류를 적극적으로 제거하려고 시도합니다. 이러한 연유로 오류 한계치는 매우 중요하며 매우 조심스레 설정해야 합니다. 0.01cm 디폴트 값은 영화 촬영 퀄리티에 적합하며 대부분의 경우 건드리지 않아도 됩니다. 오류는 버추얼 버텍스에서 측정되므로 오류 한계치는 버추얼 버텍스 거리와 함께 작동합니다. |
애님 압축 ACL 데이터베이스
애님 압축 ACL 데이터베이스(Anim Compress ACL Database) 코덱은 압축 세팅 에셋에 품질 기반 스트리밍을 노출하여 애니메이션에서 가장 덜 중요한 키프레임을 선택적으로 제거한 후 런타임 때 선택적으로 다시 안이나 밖으로 스트리밍합니다. 이러한 스트리밍을 통해 품질을 효과적으로 제어합니다.
ACL 데이터베이스 구성
ACL 데이터베이스(ACL Database) 코덱을 사용하려면, 먼저 콘텐츠 브라우저(Content Browser)에서 + 추가 를 클릭하고 애니메이션(Animation) -> ACL 데이터베이스(ACL Database) 로 이동하여 새 ACL 데이터베이스 에셋을 생성해야 합니다.
에셋을 생성한 다음에는 생성한 에셋을 더블클릭하여 세팅을 펼칩니다. 자세한 내용은 ACL 데이터베이스 세팅 섹션을 참조하세요.
데이터베이스 에셋이 환경설정되면 애님 압축 ACL 데이터베이스 코덱의 데이터베이스 에셋 프로퍼티에서 해당 에셋이 참조되어야 합니다.
그런 다음, ACL 커스텀 코덱의 압축 레벨 을 동적으로 설정하기 위해 블루프린트로 데이터베이스 에셋을 제어할 수 있습니다. 그래프를 우클릭한 다음 컨텍스트 메뉴에서 애니메이션 > ACL 로 이동하면 블루프린트에 ACL 데이터베이스 노드를 추가할 수 있습니다.
데이터베이스 시각적 퀄리티 얻기
Get Database Visual Fidelity 노드를 사용하여 정의된 ACL 데이터베이스 에셋의 시각적 퀄리티가 현재 무엇으로 설정되어 있는지 읽을 수 있습니다. 데이터베이스 에셋을 정의하려면 데이터베이스 에셋(Database Asset) 입력 핀을 사용하여 레퍼런스 변수를 연결하거나, 노드의 드롭다운 메뉴를 사용하여 ACL 데이터베이스 에셋을 선택하면 됩니다. 읽은 시각적 퀄리티는 반환 값(Return Value) 출력 핀에서 열거형 값으로 반환됩니다.
데이터베이스 시각적 퀄리티 설정하기
Set Database Visual Fidelity 노드를 사용하면 블루프린트를 통해 ACL 데이터베이스 에셋의 시각적 퀄리티를 설정할 수 있습니다. 데이터베이스 에셋을 정의하려면 데이터베이스 에셋 입력 핀을 사용하여 레퍼런스 변수를 연결하거나, 노드의 드롭다운 메뉴를 사용하여 ACL 데이터베이스 에셋을 선택하면 됩니다. 시각적 퀄리티를 설정하려면 시각적 퀄리티(Visual Fidelity) 입력 핀을 사용하여 레퍼런스 변수를 연결하거나, 그래프에서 핀의 드롭다운 메뉴를 사용하여 원하는 레벨을 정의하면 됩니다.
ACL 데이터베이스 세팅
ACL 데이터베이스 에셋은 코덱의 모든 애니메이션 시퀀스 에셋을 자동으로 참조하는 데 사용됩니다. 아래에서 ACL 데이터베이스 에셋 세팅 목록과 그 기능에 대한 설명을 참조할 수 있습니다.
| 세팅 | 설명 |
|---|---|
| 최고 중요도 비율(Highest Importance Proportion) | 항상 메모리에 로드되어 있는 애니메이션 데이터의 비율입니다(가장 중요한 키프레임). 세 비율 필드의 총합이 1.0이 되어야 합니다. |
| 중간 중요도 비율(Medium Importance Proportion) | 스트리밍 가능한 중간 티어로 이동되는 애니메이션 데이터의 비율입니다. 세 비율 필드의 총합이 1.0이 되어야 합니다. |
| 낮은 중요도 비율(Low Importance Proportion) | 스트리밍 가능한 가장 낮은 티어로 이동되는 애니메이션 데이터의 비율입니다. 세 비율 필드의 총합이 1.0이 되어야 합니다. |
| 가장 낮은 중요도 티어 제거(Strip Lowest Importance Tier) | 가장 낮은 티어를 완전히 제거할지 여부입니다. 제거한 티어는 스트리밍 불가입니다. |
| 최대 스트림 요청 크기(KB)(Max Stream Request Size KB) | 최대 IO 스트림 요청 크기입니다. 크기가 작으면 성능이 좋지 않으므로 피해야 합니다. |
| 프리뷰 시각적 퀄리티(Preview Visual Fidelity) | 에디터에서 프리뷰에 사용할 시각적 퀄리티 수준입니다. 편집기 전용이며 일시적입니다. 프리뷰 시각적 퀄리티 필드는 특정 퀄리티 수준에서 데이터가 스트리밍되었을 때 애니메이션 퀄리티를 에디터에서 미리 볼 수 있도록 지원하는 용도입니다. 기본적으로 에디터는 항상 최고의 시각적 퀄리티를 보여줍니다. |
ACL 데이터베이스 코덱 세팅
이 코덱은 애님 압축 ACL 코덱과 동일하나, 여러 애니메이션 시퀀스를 참조할 수 있는 ACL 데이터베이스 에셋 참조 기능이 추가되어 있습니다. 여러 ACL 데이터베이스 코덱이 같은 데이터베이스 에셋을 참조할 수 있습니다. 이 코덱을 사용하는 애니메이션 시퀀스는 선택한 데이터베이스에 저장되며 런타임 시 해당 데이터를 스트리밍하거나 쿠킹할 때 완전히 제거할 수 있습니다.
ACL을 사용한 프레임 제거는 UE 프레임 제거보다 훨씬 강력합니다. ACL을 사용하면 제거하려는 데이터 양을 제어할 수 있으며, 데이터베이스 내의 모든 애니메이션 중에서 가장 덜 중요한 키프레임을 선택합니다. 즉, 더 중요한 시퀀스일수록 다른 시퀀스보다 더 많은 키프레임을 유지할 수 있습니다. 이는 ACL 프레임 제거 사용 시, 원본이 손상되는 압축이 훨씬 줄어들고 많은 시퀀스에 걸쳐 글로벌하게 최적화될 수도 있다는 뜻이기도 합니다.
애니메이션을 압축할 때 프레임 제거 결과를 테스트하는 것이 좋습니다. ACL은 오류가 가장 적은 키프레임을 제거하지만, 전체 애니메이션 세트를 압축하는 것에 비해 개별 시퀀스 압축은 성능이 좋지 않을 수도 있습니다. 오류는 줄어들겠지만, 언리얼 엔진 기본 프레임 제거 기법을 사용하는 것보다 체감되는 퀄리티 손실은 더 클 수 있습니다. 언리얼 엔진의 프레임 제거는 고정된 프레임 레이트를 지정하며, 키프레임을 균일한 방식으로 제거합니다. 이 방법은 더 중요한 키프레임을 보존하려고 시도하지 않기 때문에 오류가 더 늘어나지만, 체감되는 퀄리티 손실은 ACL 솔루션보다 적을 수 있습니다.
쿠킹된 빌드에서는 어떤 데이터도 기본적으로 스트리밍되지 않습니다. 디폴트 시각적 퀄리티 수준은 가장 낮습니다. 시각적 퀄리티 수준을 높이려면 데이터가 스트리밍되어야 합니다. 이는 블루프린트 인터페이스를 통해 노출됩니다.
ACL 블루프린트 스트리밍
일반 잠복성 블루프린트 노드를 통해 시각적 퀄리티를 쿼리하고 설정할 수 있습니다. 원하는 퀄리티 수준을 설정하면 ACL은 무엇을 내부로 또는 외부로 스트리밍해야 하는지 파악할 수 있습니다. 스트리밍 진행 중에 여러 차례 변경이 요청되면, 그런 요청은 대기열에 등록되고 그보다 앞서 대기열에 등록된 모든 요청이 처리된 뒤에 실행됩니다. 현재로서는 퀄리티 변경 요청을 중단할 수 없습니다.
시각적 퀄리티가 변경되면 그 요청을 수용하기 위해 필요에 따라 메모리가 할당되거나 해제됩니다. 데이터는 디스크에서 비동기식으로 로드됩니다.
애님 압축 커스텀 ACL
커스텀 ACL 압축 코덱을 사용하여 ACL의 모든 측면을 미세조정하고 제어할 수 있습니다.
커스텀 ACL 코덱은 대부분 디버깅 목적으로 제공되므로 프로덕션에서는 필요하지 않습니다. 또한, 가능한 모든 옵션을 지원하면 컴파일러가 제거하는 코덱이 줄어들어 압축 해제 속도가 다소 느려질 수 있다는 점도 기억해 둬야 합니다.
커스텀 ACL 세팅
아래에서 애님 압축 커스텀 ACL 코덱의 프로퍼티 목록과 그 기능에 대한 설명을 참조할 수 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| 회전 포맷(Rotation Format) | 사용할 회전 포맷을 선택합니다. ACL 플러그인은 세 가지 회전 포맷인 쿼터니언 풀 비트 레이트(Quat Full Bit Rate), 쿼터니언 드롭 W 풀 비트 레이트(Quat Drop W Full Bit Rate), 그리고 쿼터니언 드롭 W 가변 비트 레이트(Quat Drop W Variable Bit Rate)를 지원합니다. 쿼터니언 드롭 W 가변 비트 레이트 옵션은 거의 항상 최고의 선택이므로 이 포맷이 기본값으로 설정되어 있습니다. 쿼터니언 풀 비트 레이트와 쿼터니언 드롭 W 풀 비트 레이트 옵션은 안전 예비용 그리고 디버깅 용도로 사용 가능합니다. 드롭다운 메뉴를 사용하여 다음 옵션 중에서 포맷을 선택할 수 있습니다.
|
| 이동 포맷(Translation Format) | 사용할 이동 포맷을 선택합니다. 드롭다운 메뉴를 사용하여 다음 옵션 중에서 포맷을 선택할 수 있습니다.
|
| 스케일 포맷(Scale Format): | 사용할 스케일 포맷을 선택합니다. 드롭다운 메뉴를 사용하여 다음 옵션 중에서 포맷을 선택할 수 있습니다.
|
| 상수 회전 한계치 각도(Constant Rotation Threshold Angle): | 상수 회전 트랙 탐지에 사용하는 한계치를 설정합니다. |
| 상수 이동 한계치(Constant Translation Threshold): | 상수 이동 트랙 탐지에 사용하는 한계치를 설정합니다. |
| 상수 스케일 한계치(Constant Scale Threshold): | 상수 스케일 트랙 탐지에 사용하는 한계치를 설정합니다. |
ACL 커브 압축 레퍼런스
ACL 커브 압축(ACL Curve Compression) 코덱을 사용하여 애니메이션 모디파이어 및 모프 타깃과 같은 애니메이션 커브 데이터를 압축할 수 있습니다. ACL 커브 코덱은 압축 코덱의 레퍼런스로 스켈레탈 메시를 제공하고서 모프 타깃(Morph Targets)을 압축할 때 특히 잘 작동합니다. 레퍼런스 메시를 사용하면 코덱은 일반 스칼라 트랙 정밀도 값 대신 버텍스 디스플레이스먼트 정밀도 값을 계산하고 저장하여 메시 디포메이션 커브 트랙을 압축할 수 있습니다. 아래에서 ACL 커브 압축 코덱 프로퍼티 목록과 그 기능에 대한 설명을 참조할 수 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| 커브 정밀도(Curve Precision) | 소스 에셋에 현재 모프 타깃과 연결된 애니메이션 커브가 없는 경우 애니메이션 커브를 압축할 때 목표로 할 커브 정밀도입니다. |
| 모프 타깃 위치 정밀도(Morph Target Position Precision) | 모프 타깃 소스(Morph Target Source) 프로퍼티에 정의가 있는 경우, 모프 타깃 애니메이션 커브 압축 시 목표로 할 모프 타깃 커브 정밀도를 월드 스페이스 유닛 단위로 설정합니다. 이렇게 하면 모프 타깃 디포메이션이 지정된 정밀도 값을 충족합니다(기본값은 0.01cm). |
| 모프 타깃 소스(Morph Target Source) | 모프 타깃 위치 정밀도 값을 사용하여 압축할 모프 타깃 커브를 추출하는 데 사용할 스켈레탈 메시를 설정합니다. 애니메이션 커브가 소스 에셋 내의 모프 타깃에 매핑된 경우, 모프 타깃 위치 정밀도 프로퍼티의 값을 사용하여 압축 정밀도를 계산합니다. 애니메이션 커브가 없다면, 커브 정밀도 를 대신 사용합니다. 스켈레탈 메시 에셋을 추가하려면, 드롭다운 메뉴를 사용하여 해당 에셋을 선택합니다. |

