モデルの最適化

CreativeStudio では、以下の最適化処理が用意されています。

ここでは、各最適化処理の概要を説明します。

モデルの最適化についての詳細は、別途用意されている「Maya プラグインマニュアル」を参照することをお奨めします。

Compress Node

モデル全体に対するノード圧縮のモードを指定します。

Compress Node には、以下の 5 つの圧縮方法が用意されています。

圧縮する対象は大きく 2 つにわかれます。

Compress Node の比較は以下の表を確認してください。

表 1. Compress Node 比較表 ( スケルトン )

圧縮方法 削除対象 スケルタルアニメーションとの併用 非均一なスケール ボーンの SRT 変換 シェイプの頂点属性の変換
Cull Useless Node 階層構造の末端に位置するモデルの表示に必要でないノードを削除して出力します。 なし なし
Cull Uninfluential Node Cull Useless Node の処理に加えて、行列を合成できるノードを合成して出力します。 可 ( データサイズが増える場合あり ) 不可 あり なし

表 2. Compress Node 比較表 ( モデル )

圧縮方法 削除対象 スケルタルアニメーションとの併用 非均一なスケール ボーンの SRT 変換 シェイプの頂点属性の変換
Unite Compressible Node 圧縮可能フラグを設定しているノードを 1 つにまとめます。 不可 不可 あり あり
Unite All Node ノードを 1 つにまとめ、すべてのポリゴンをグローバル座標で出力します(ノード名はルートノードの名前になります)。 不可 なし あり

圧縮方法の詳細を以下に記載します。

Cull Useless Node

Cull Useless Node では、以下の条件をすべて満たすボーンを削除します。

注意:
ルートボーンの名前が Nw4cRoot でルートボーンの子ボーンが 1 つしかない場合は、ルートボーンも削除されます。

Cull Uninfluential Node

Cull Uninfluential Node では、以下の条件をともに満たすボーンを削除します。

圧縮後のルートボーンは条件を満たしても削除されずに残るケースがあります。

親ボーンが削除される場合は、スケルタルモデルの階層構造を親方向にさかのぼって削除されない最初のボーンを親にします。
圧縮後の親ボーンと子ボーンの間に削除されるボーンがあった場合は、子ボーンの SRT を更新します。
スケルタルアニメーションが設定されている場合もボーンのアニメーションの SRT を更新します。

注意:
削除されるボーンに非均一な ( x, y, z が同じでない ) スケールを設定してはいけません。
ボーンの IsSegmentScaleCompensate は false でなければいけません。仮に true の場合は圧縮時に false に変更されます。
モデルにスケルタルアニメーションが設定されている場合は、スケルタルアニメーションの最適化も行ってください。
モデルによってはスケルタルアニメーションのデータ量が増えることがあります。

スケルタルアニメーションの最適化方法

CreativeStudio 上のコンテンツパネルでスケルタルアニメーションを選択し、メニューから「Cull Uninfluential Node」を行います。

コンテンツパネルでは Ctrl+左クリックにより複数のコンテンツが選択できますので、モデルとスケルタルアニメーションを選択して「Cull Uninfluential Node」を行ってください。

Unite Compressible Node

Unite Compressible Node では、圧縮可能フラグが設定されているルートボーン以外のボーンを削除します。

親ボーンが削除される場合は、スケルタルモデルの階層構造を親方向にさかのぼって削除されない最初のボーンを親にします。
圧縮後の親ボーンと子ボーンの間に削除されるボーンがあった場合は、子ボーンの SRT を更新します。

圧縮時にシェイプの参照ボーンを書き換えます。これに伴い頂点の位置や法線等の座標変換も行います。
スキニングが設定されていないシェイプが、削除されるボーンを参照している場合は、削除されるボーンからスケルタルモデルの階層構造をさかのぼって削除されない最初のボーンを参照先にします。
スキニングが設定されているシェイプは、削除されるボーンを参照しているかに関わらず、スキニングが解除され、ルートボーンを参照先にします。

注意:
スケルタルアニメーションとは、併用できません。
削除されるボーンに非均一な ( x, y, z が同じでない ) スケールを設定してはいけません。
ボーンの IsSegmentScaleCompensate はfalse でなければいけません。仮に true の場合は圧縮時に false に変更されます。

Unite All Node

Unite All Node では、ルートボーン以外を削除します。

圧縮時にシェイプの参照ボーンをルートボーンにします。
これに伴い頂点の位置や法線等の座標変換も行います。
スキニングが設定されているシェイプのスキニングは解除されます。
ルートボーンのローカル行列は単位行列に設定されます。

注意:
スケルタルアニメーションとは併用できません。

Compress Material

Compress Material では、名前以外のすべてのステータスが一致するマテリアルを統合します。

圧縮可能フラグが true に設定されているマテリアルが対象です。

統合後の名前は、統合前の名前の中でUnicode のコードポイントによる辞書式順序がもっとも小さいものになります。

Optimize Primitive

Optimize Primitive では、ポリゴンのプリミティブを最適化して出力します。

最適化することにより、描画処理の負荷が軽減されます。

SkeletalModel-Simplification

SkeletalModel-Simplification では、条件がみたされたスケルタルモデルをモデルに変換します。

モデルに変換することにより、スケルタルモデルよりも構造がシンプルになりますので、PARTNER-CTR Debugger で処理を行う際に効率がアップする利点があります。

スケルタルモデルをモデルに変換する条件は以下になります。

変換時にボーンのすべてを削除しますので、頂点の位置や法線などの座標変換を行います。

注意:
スケルトン情報が破棄されるので、スケルタルアニメーションが利用できなくなります。

アニメーションメンバのフィルタ

この機能は、モデルから不要なアニメーションメンバを削除することにより、実機上でのパフォーマンスを向上させます。

機能の詳細は、別途用意されている「関数リファレンスの最適化 TIPS」を参照してください。