Animation Compression Library (ACL) は、アニメーションの圧縮を詳細にカスタマイズするために使用できる、より堅牢でカスタマイズ可能な圧縮コーデックを導入するプラグインです。
前提条件
- Animation Compression Library プラグインを確認します。メニュー バーで [Edit (編集)] > [Plugins (プラグイン)] の順に移動し、[Animation (アニメーション)] セクションで [Animation Compression Library] を見つけるか、検索バーを使用して見つけます。このプラグインを有効にして、エディタを再起動します。
ACL の設定
ACL プラグインには、プロジェクトのアニメーション シーケンスの圧縮に使用することができるボーン圧縮設定アセットとカーブ圧縮設定アセットの両方が事前に構成されています。圧縮設定アセットは「Engine > Plugins > Animation Compression Library Content」に格納されています。
また、新しくボーンおよびカーブ圧縮設定アセットを作成し、Codec プロパティを Anim Compress ACL オプションを使用するように設定すると、その機能にアクセスすることができます。
![]() |
![]() |
|---|---|
| ボーン圧縮設定 | カーブ圧縮設定 |
ほとんどのプロジェクトでは、多くのユース ケースで最適な結果が出るように設計されているデフォルトの Anim Compress 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 のボーン圧縮
Anim Compress ACL コーデックでは、できるだけ安全な圧縮を行うため、いくつもの設定を調整することはお勧めしません。より強力に圧縮する必要がある場合や、より堅牢な圧縮機能を検討する場合は、Anim Compress Custom ACL コーデックを選択して使用することができます。これは、より高度なオプションと設定の調整が可能で、デバッグ目的で使用するために設計されているものです。
ACL のボーン圧縮のリファレンス
次の表では、ACL コーデックのプロパティとそれらの機能について説明します。すべての単位は Unreal 単位です (cm)。
| プロパティ | 説明 |
|---|---|
| Optimization Targets | 圧縮中のスキニング変形を推定するために使用されるスケルタルメッシュ。アセットを追加するには、[+Add (+追加)] を使用してドロップダウン メニューからアセットを選択します。このプロパティは、圧縮中に最適なビジュアル忠実度が保持されることを目的とするものです。ACL コーデックにスケルタルメッシュの参照を指定すると、コーデックではビジュアル メッシュに近似させる必要がなくなり、圧縮の結果が向上します。ただし、メッシュの忠実度が高くなると、メモリ使用量がわずかに増加する傾向があります。 |
| Compression Level | 5 つのレベルの中から、使用する圧縮レベルを設定します。レベルが高いものほど圧縮の速度は遅くなりますが、メモリ使用量を少なくすることができます。圧縮結果をテストして、プロジェクトに最も適した結果を見つけることが重要です。 圧縮レベルに応じて、ACL によるメモリ消費量の最適化をどの程度行うのかが決定します。レベルが高いほどメモリ消費量を抑えることができますが、圧縮する時間が長くなります。一方、レベルが低くなると圧縮にかかる時間は短くなりますが、メモリ消費量は大きくなります。中間のレベルはバランスがよく、プロダクションでの使用に適しています。 |
| Default Virtual Vertex Distance | 通常のボーン用にデフォルトのバーチャル頂点距離を設定します。 Default Virtual Vertex Distance に適切な値を選択することが重要です。通常、デフォルト値の「3cm」は一般的なキャラクターに適していますが、大きなオブジェクトや特殊なキャラクターには微調整が必要になる場合があります。また、UE では、より高い精度が必要となる特殊なボーンのサポートも提供しています。デフォルトでは、ソケットがアタッチされているすべてのボーンは、UAnimationSettings::KeyEndEffectorsMatchNameArray 内にあるサブ文字列の 1 つを含むボーンと同様に、高い精度が必要とされます。一般的に含まれるサブ文字列には、手、目、IK、カメラなどがあります。特殊なボーンの場合は、代わりに Safe Virtual Vertex Distance が使用されます。 |
| Safe Virtual Vertex Distance | より高い精度を必要とするボーンのバーチャル頂点距離。 |
| Error Threshold | エラーしきい値は、アニメーション シーケンスを最適化および圧縮するときに使用されます。値が低いほどエラーは少なくなり、値が高いほどエラーは少なくなります。 ACL の最適化アルゴリズムでは、Error Threshold に指定されているエラー数を超えるまで、できる限りすべてを積極的に削除しようとします。そのため、しきい値は非常に重要となり、慎重に設定する必要があります。デフォルト値の「0.01cm」は、映像品質に適しており、ほぼ調整する必要はありません。エラーはバーチャル頂点上で測定されるため、エラーしきい値はバーチャル頂点距離と連携して機能します。 |
Anim Compress ACL Database
Anim Compress ACL Database コーデックでは、品質ベースのストリーミングを圧縮設定アセットに公開します。これは、アニメーションの最も重要度の低いキーフレームを選択的に削除し、ランタイム時にオプションでストリーミングに戻したり外したりして効果的にストリーミングの品質を制御するために使用できます。
ACL Database のセットアップ
ACL Database コーデックを使用するには、まず新しい ACL データベース アセットを、コンテンツ ブラウザの [+Add] を使用して [Animation (アニメーション)] -> [ACL Database] の順に移動して作成します。
アセットの作成後、アセットをダブルクリックして設定を展開することができます。詳細については、「ACL データベースの設定」セクションを参照してください。
データベース アセットを構成したら、Anim Compress ACL Database コーデックの Database Asset プロパティで参照する必要があります。
データベース アセットはブループリントを使用して、ACL Custom コーデックの Compression Level を動的に設定するように制御することができます。ACL Database ノードは、グラフを右クリックしてコンテキスト メニューの [Animation (アニメーション)] > [ACL] に移動してブループリントに追加することができます。
データベースのビジュアル忠実度を取得する
Get Database Visual Fidelity ノードを使用すると、定義されている ACL データベース アセットのビジュアル忠実度が現在どのように設定されているかを読み取ることができます。データベース アセットを定義するには、Database Asset 入力ピンを使用して参照変数を接続するか、ノードのドロップダウン メニューを使用して ACL データベース アセットを選択することができます。読み取りのビジュアル忠実度は Return Value 出力ピンから列挙型の値として返されます。
データベースのビジュアル忠実度を設定する
Set Database Visual Fidelity ノードを使用すると、ブループリントを使用して ACL データベース アセットのビジュアル忠実度を設定することができます。データベース アセットを定義するには、Database Asset 入力ピンを使用して参照変数を接続するか、ノードのドロップダウン メニューを使用して ACL データベース アセットを選択することができます。ビジュアル忠実度を設定するには、Visual Fidelity 入力ピンを使用して参照変数を接続するか、グラフでピンのドロップダウン メニューを使用して目的のレベルを定義します。
ACL Database の設定
ACL データベース アセットは、コーデックのすべてのアニメーション シーケンスを自動的に参照するために使用されます。次の表では、ACL データベース アセットの設定とそれらの機能について説明します。
| 設定項目 | 説明 |
|---|---|
| Highest Importance Proportion (最も高い重要度の割合) | 常にメモリにロードされているアニメーション データ (最も重要なキーフレーム) の割合。 3 つのフィールドすべての合計を「1.0」にする必要があります。 |
| Medium Importance Proportion (中程度の重要度の割合) | ストリーミング可能な中間ティアに移動されるアニメーション データの割合。 3 つのフィールドすべての合計を「1.0」にする必要があります。 |
| *Low Importance Proportion (低い重要度の割合)** | 最も低いストリーミング可能なティアに移動されるアニメーション データの割合。 3 つのフィールドすべての合計を「1.0」にする必要があります。 |
| Strip Lowest Importance Tier (最も低い重要度のティアを削除する) | 最も低いティア全体を削除するかしないかを指定します (削除すると、ストリーミングすることができません)。 |
| Max Stream Request Size KB (ストリーミングの最大リクエスト サイズ (KB)) | IO ストリーミング リクエストの最大サイズ (小さい読み取りはパフォーマンスが低下するため避ける必要があります)。 |
| Preview Visual Fidelity (ビジュアル忠実度のプレビュー) | エディタでのプレビューに使用するビジュアル忠実度のレベルを指定します (エディタ専用、一時的)。 [Preview Visual Fidelity] フィールドは、データが特定の忠実度レベルでストリーミングされる場合のアニメーションの品質をエディタでプレビューするのに役立ちます。デフォルトでは、エディタは常に最も高いビジュアル忠実度で表示されます。 |
ACL Database コーデックの設定
このコーデックは Anim Compress ACL コーデックと同じですが、複数のアニメーション シーケンスの参照に使用することができる ACL データベース アセットを参照する機能が追加されています。複数の ACL Database コーデックで、同じデータベース アセットを参照することができます。このコーデックを使用するアニメーション シーケンスは選択したデータベースに保存され、ランタイム時にデータをストリーミングしたり、クック中に完全に削除したりすることができます。
ACL でのフレーム ストリップは、UE のフレーム ストリップよりもはるかに強力です。ACL を使用することによって削除するデータの量を制御し、最も重要度の低いキーフレームをデータベース内にあるすべてのアニメーションから選択することができます。これにより、一部のより重要なシーケンスでは他より多くのキーフレームを保持することができます。その結果、ACL フレームストリップによって破壊的な圧縮になることが大幅に減少し、大量のシーケンスでグローバルに最適化することも可能になります。
アニメーションを圧縮する場合は、フレーム ストリップの結果をテストすることをお勧めします。ACL でキーフレームを削除することによってエラーを最小限に抑えることができますが、アニメーション セット全体を圧縮する場合に比べると、個々のシーケンスのパフォーマンスが低下することがあります。エラーは減少する可能性がありますが、Unreal Engine のデフォルトのフレーム ストリップ技術を使用するよりも、認識できる忠実度の損失は増える可能性があります。Unreal Engine のフレーム ストリップでは固定フレームレートがターゲットとなり、均一な方法でキーフレームが削除されます。このメソッドではより重要なキーフレームを保持しようとすることがないためエラーは増えますが、認識できる忠実度の損失は ACL のソリューションよりも少なくすることができます。
クック済みのビルドでは、データはデフォルトでストリーミングされません。デフォルトのビジュアル忠実度は最も低いレベルに設定されているため、レベルを上げるにはデータをストリーミングする必要があります。これは、ブループリント インターフェースを通じて公開されます。
ACL のブループリント ストリーミング
ビジュアル忠実度は、通常の潜在的なブループリント ノードを通じてクエリおよび設定することができます。目的の忠実度レベルを設定することにより、ACL ではストリーミングに必要なものとそうではないものが判断されます。ストリーミングの実行中に複数の変更リクエストを受け取ると、それらはキューに入れられ、先にキューに入っているものがすべて完了すると実行されます。現在、忠実度の変更リクエストを中断することはできません。
ビジュアル忠実度が変更されると、リクエストに応じてメモリの割り当てと解放が行われます。データはディスクから非同期にロードされます。
Anim Compress Custom ACL
カスタムの ACL 圧縮コーデックを使用すると、ACL のあらゆる要素を調整および制御することができます。
Custom ACL コーデックは主にデバッグ目的で提供されるため、プロダクションでは必要ありません。また、あらゆるオプションのサポートが可能な限り行われるため、コンパイラによるコードの削除が少なく、多くの場合に圧縮解除には時間がかかることに注意してください。
Custom ACL の設定
次の表では、Anim Compress Custom ACL コーデックの各プロパティとそれらの機能について説明します。
| プロパティ | 説明 |
|---|---|
| Rotation Format | 使用する回転の形式を選択します。ACL プラグインでは、Quat Full Bit Rate、Quat Drop W Full Bit Rate、および Quat Drop W Variable Bit Rate の 3 つの回転形式をサポートしています。Quat Drop W Variable Bit Rate オプションはほとんどの場合に最善の選択となるため、デフォルトとして設定されています。Quat Full Bit Rate および Quat Drop W Full Bit Rate オプションは、安全なフォールバックとしてデバッグ目的で使用することができます。ドロップダウンメニューを使用して、次の中から形式を選択することができます。
|
| Translation Format | 使用する平行移動の形式を選択します。ドロップダウンメニューを使用して、次の中から形式を選択することができます。
|
| Scale Format: | 使用するスケールの形式を選択します。ドロップダウンメニューを使用して、次の中から形式を選択することができます。
|
| Constant Rotation Threshold Angle: | 一定に回転するトラックを検出するために使用するしきい値を設定します。 |
| Constant Translation Threshold: | 一定に平行移動するトラックを検出するために使用するしきい値を設定します。 |
| Constant Scale Threshold: | 一定にスケーリングするトラックを検出するために使用するしきい値を設定します。 |
ACL のカーブ圧縮のリファレンス
ACL のカーブ圧縮コーデックを使用すると、Animation Modifiers や モーフ ターゲット などのアニメーション カーブ データを圧縮できます。ACL Curve コーデックは、特にモーフ ターゲットの圧縮でスケルタルメッシュを圧縮コーデックにリファレンスとして提供する場合に適切に機能します。参照メッシュを使用すると、コーデックでは一般的なスカラー トラックの精度値の代わりに頂点変位の精度値を計算して保存し、メッシュ変形カーブ トラックを圧縮できます。次の表では、ACL のカーブ圧縮コーデックのプロパティとそれらの機能について説明します。
| プロパティ | 説明 |
|---|---|
| Curve Precision | ソース アセットに現在のモーフ ターゲットと関連付けられているアニメーション カーブがない場合の、アニメーション カーブを圧縮するときにターゲットとするカーブ精度。 |
| Morph Target Position Precision | Morph Target Source プロパティに定義がある場合、希望するモーフ ターゲットのカーブ精度をワールド空間単位で設定し、モーフ ターゲットのアニメーション カーブを圧縮するときのターゲットとします。これにより、モーフ ターゲットの変形が指定された精度値を満たすことが保証されます (デフォルトは「0.01 cm」です)。 |
| Morph Target Source | Morph Target Position Precision の値を使用して、圧縮するモーフ ターゲットのカーブを抽出するのに使用されるスケルタルメッシュを設定します。アニメーション カーブがソース アセット内のモーフ ターゲットにマッピングされている場合、Morph Target Position Precision プロパティの値を使用して圧縮精度が計算されます。アニメーション カーブがない場合は、代わりに Curve Precision が使用されます。 スケルタルメッシュ アセットを追加するには、ドロップダウン メニューを使用して適切なアセットを選択します。 |

