UDN
Search public documentation:

AnimationCompressionAlgorithmsJP
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 ホーム > アニメーター > アニメーション圧縮アルゴリズム
UE3 ホーム > シネマティック アーティス > アニメーション圧縮アルゴリズム


アニメーション圧縮アルゴリズム


概要


このドキュメントには、「Unreal Engine 3」内部で提供されているアニメーション圧縮アルゴリズムについて詳細な解説が含まれています。このアルゴリズムは、 AnimSet エディタ ユーザーガイド にある アニメーション圧縮ダイアログ 内のアニメーションに適用することができます。

アニメーション圧縮をプレビューおよび修正するためのエディタ操作については、 アニメーション圧縮ダイアログ のページをご覧ください。

「Unreal Engine 3」でアニメーション圧縮に関する、プログラマー用の技術ガイドについては、 アニメーション圧縮技術ガイド をご覧ください。

圧縮アルゴリズム


「Unreal Engine 3」には、既存のアニメーション圧縮アルゴリズムが複数あります。これらは、ベースとなるエンジンの実装において提供されるものです。以下にその詳細を説明します。

Automatic (自動)

Automatic (自動) という圧縮アルゴリズムは、本質的にはシェルです。これは、他の圧縮スキームのレンジをテストして、設定可能な誤差閾値内でメモリ使用量が最小のものを選択するものです。

プロパティ

  • Max End Effector Error (最大エンド エフェクタ誤差) - 削除のためにキーをテストする際、エフェクトはエンド エフェクタまですべてモニターされます。このプロパティは、圧縮技法がエンド エフェクタにもたらすことができる誤差の最大量を保持します。誤差閾値が 0.0 の場合は、現在の / デフォルトの スキーム以外のものをテストしないことを意味します。
  • Try Fixed Bitwise Compression (固定ビット単位圧縮をテストする) - TRUE の場合は、均一のビット単位の技法をテストします。
  • Try Per Track Bitwise Compression (トラックごとのビット単位圧縮をテストする) - TRUE の場合は、トラックごとの圧縮技法をテストします。
  • Try Linear Key Removal Compression (線形キー削除圧縮をテストする) - TRUE の場合は、線形キー削除技法をテストします。
  • Try Interval Key Removal (インターバル キー削除をテストする) - TRUE の場合は、再サンプリング技法をテストします。
  • Run Current Default Compressor (現在の / デフォルトの圧縮を実行する) - TRUE 場合は次のようになります。非 NULLの場合は、現在の圧縮を使ってアニメーションをまず再圧縮し、そうでない場合はグローバル デフォルトの圧縮 (エンジンの ini ファイルで指定されています)を使って再圧縮します。
  • Auto Replace If Extisting Error Is Too Great (現在の誤差が大きすぎる場合に自動的に取り替える) - TRUE の場合で、かつ、現在の圧縮誤差が Max End Effector Error よりも大きい場合は、誤差がより少ない圧縮技法 (サイズを大きくする技法であっても) を使用して、閾値未満になるようにします。
  • Raise Max Error To Existing (最大誤差を現存のものに引き上げる) - TRUE の場合で、かつ、現在の圧縮誤差が Max End Effector Error よりも大きい場合は、 Max End Effector Error が現在の誤差レベルまで引き上げられます。

Bitwise Compress Only (ビット単位の圧縮のみ)

Bitwise Compress Only というアニメーション圧縮アルゴリズムは、アニメーション シーケンスの回転および平行移動トラック上で、ビット単位のアニメーション圧縮だけを実行します。このアルゴリズムは、キーの削減を行いません。

プロパティ

  • Rotation Compression Format (回転圧縮フォーマット) - 回転データのビット単位圧縮用フォーマットです。デフォルトは、 ACF_Float96NoW です。

Remove Every Second Key (キーを 1 つおきに削除する)

Remove Every Second Key というアニメーション圧縮アルゴリズムは、アニメーション シーケンスの回転および平行移動トラック上で、ビット単位のアニメーション圧縮を実行するだけではなく、キーの削減も実行します。その方法は、アニメーション シーケンスの回転および平行移動トラックから、1 つおきにキーを削除するというものです。

プロパティ

  • Min Keys (最小キー) - キーの削減を実行するのに必要となるキーの最小数を保持します。 Min Keys よりも少ないキーのアニメーションでは、キーの削除はありません。
  • Start At Second Key (2 番目のキーから始める) - TRUE の場合は、2 番目のキーを削除し、それ以降 1 つおきのキーを削除していきます。FALSE の場合は、1 番目のキーを削除し、それ以降 1 つおきのキーを削除していきます。
  • 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 (再ターゲット) - TRUE の場合は、アニメーションを圧縮する際、アニメートされたノードを調整することによって、圧縮誤差を補います。
  • Actually Filter Linear Keys (線形キーを実際にフィルタリングする) - TRUE の場合は、最終的なフィルタリング段階に入ります。FALSE の場合は、ビット単位の圧縮後の再ターゲット化だけが行われます。このプロパティと Retarget がともに FALSE の場合は、線形圧縮機能は基本的なビット単位圧縮機能と同じくらい性能が低く、極めて低速となります。
  • Rotation Compression Format (回転圧縮フォーマット) - 回転データのビット単位圧縮用フォーマットです。デフォルトは、 ACF_Float96NoW です。

Compress Each Track Independently (各トラックを個別に圧縮する)

Compress Each Track Independently というアニメーション圧縮アルゴリズムは、トラックおよび回転、平行移動それぞれのために個別に最良のビット単位圧縮を実行するとともに、まわりのキーの線形補間となっているキーを削除することによってキーの削減も行います。

プロパティ

  • Max Zeroing Threshold (最大ゼロ化閾値) - コンポーネントをゼロに置き換える際に使用する最大閾値を保持します。値が小さくなると、より多くのキーを保持しますが、圧縮は低下します。
  • Max Pos Diff Bitwise (最大位置差 ビット単位) - アニメーション キーを削除しても良いか否かをテストする際に使用する最大位置差を保持します。値が小さくなると、より多くのキーを保持しますが、圧縮は低下します。
  • Max Angle Diff Bitwise (最大角度差 ビット単位) - アニメーション キーを削除しても良いか否かをテストする際に使用する最大角度差を保持します。値が小さくなると、より多くのキーを保持しますが、圧縮は低下します。
  • Allowed Rotation Formats (可能な回転フォーマット) - トラック単位の圧縮機能が、回転キー上でどのエンコード フォーマットをテストすることができるのかを保持します。
  • Allowed Translation Formats (可能な平行移動フォーマット) - トラック単位の圧縮機能が、平行移動キー上でどのエンコード フォーマットをテストすることができるのかを保持します。
  • Resample Animation (再サンプリング アニメーション) - TRUE の場合は、毎秒 Resample Framerate (再サンプリングフレームレート) フレームに、アニメーションを再サンプリングします。
  • Use Adaptive Error (適用誤差を使用する) - TRUE の場合は、骨格内の「高さ」に基づいて誤差閾値を調整します。
  • Use Override For End Effectors (エンドエフェクタのためにオーバーライドを使用する) - TRUE の場合は、エンドエフェクタのための閾値として MinEffectorDiff を使用します。
  • Use Adaptive Error 2 (適用誤差を使用する 2) - TRUE の場合は、適用誤差システムが、トラックの誤差に起因してエンドエフェクタにもたらされた誤差に基づいて、各トラックに許容される誤差の大きさを決定します。
  • Resampled Framerate (再サンプリングされたフレームレート) - Resample Animation (アニメーションを再サンプリングする) が TRUE の場合は、このプロパティによって望ましいフレームレートが決定されます。このプロパティは、 Resample Animation が TRUE の場合に限って有効です。
  • Min Keys For Resampling (再サンプリングのための最小キー数) - キーを削除するために、アニメーションがもつことができる最小のキー数を保持します。これよりも少ないキーのアニメーションは、再サンプリングされません。
  • Track Height Bias (トラック高さバイアス) - 適用誤差を計算するために使用される前に、トラックの高さに加えられるバイアスを保持します。
  • Parenting Divisor / Parenting Divisor Exponent (除数の親化 / 除数指数の親化) - キーが発生するツリーの上に進むほど、誤差許容を減じます。 Use Adaptive Error が TRUE の場合に限って有効です。許容誤差の計算は次のようになります。

   EffectiveErrorTolerance = Max(BaseErrorTolerance / Power(ParentingDivisor, Max(Height+Bias,0) * ParentingDivisorExponent), ZeroingThreshold)
   

  • 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 (再ターゲット) - TRUE の場合は、アニメーションを圧縮する際、アニメートされたノードを調整することによって、圧縮誤差を補います。
  • Actually Filter Linear Keys (線形キーを実際にフィルタリングする) - TRUE の場合は、最終的なフィルタリング段階に入ります。FALSE の場合は、ビット単位の圧縮後の再ターゲット化だけが行われます。このプロパティと Retarget がともに FALSE の場合は、線形圧縮機能は基本的なビット単位圧縮機能と同じくらい性能が低く、極めて低速となります。

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 です。