ファイル > シーン サイズの最適化(File > Optimize Scene Size)
 
 
 

シーンから使用されていない空の無効な部分を削除して、シーンのサイズと複雑さを抑えることができます。シーンをすべてクリーンアップするか、個々に最適化を実行することもできます。

ファイル > シーン サイズの最適化(File > Optimize Scene Size) を選択し、削除する情報の種類を設定するか、または個々の最適化を実行します。

Maya がシーンを最適化するときに進捗バーが表示されます。キーを押してこの操作を中断することができます。最適化の結果レポートはすべてスクリプト エディタ(Script Editor)で確認できます。

シーン サイズの最適化オプション

シーン サイズの最適化オプション(Optimize Scene Size Options)ウィンドウのオプションを使用して行えるクリーンアップ操作について以下に説明します。

無効情報の削除(Remove invalid)

NURBS サーフェス + カーブ(NURBS surface + curves)

無効な NURBS サーフェス ノードとカーブ ノードを削除します。ノードは、接続がなくなると無効とみなされます。具体的には、この操作によって以下の無効なノードが削除されます。

空情報の削除(Remove empty)

セット(Sets)

未使用(空)セットを削除します。この操作では削除できないデフォルトのセット ノードが一部あります。これらのセット ノードは次のとおりです。

未使用情報の削除(Remove unused)

アニメーション カーブ(Animation curves)

シーン内の他のノードとのコネクションがなく、ロックされていない、リファレンス ファイル以外の animCurve ノードを削除します。

アニメーション クリップ(Animation clips)

シーン内で使用されていないソース アニメーション クリップとアニメーション ノードを削除します。アニメーション クリップは、シーン内のキャラクタ セットに関連付けされていない場合や他のいずれかのシーン ノードにコネクトされていない場合は、未使用とみなされます。ソース クリップ ノードは、ソース クリップにリンクされたシーンのアニメーション クリップが使用されていない場合、未使用とみなされます。

ポーズ(Poses)

シーン内のキャラクタに適用されていないすべてのアニメーション ポーズを削除します。

NURBS カーブ(NURBS curves)

シーン内の他のノードとのコネクションがなく、ロックされていない、リファレンス ファイルから以外の、親が未使用の NURBS カーブを削除します。NURBS カーブに他のシーン ノードとコネクションのある親がある場合、カーブは削除できません。

NURBS サーフェス(NURBS Surfaces)

個々の入力 NURBS サーフェスと同一の NURBS サーフェスを削除します。NURBS サーフェスの入力コネクションが create に接続されている場合で、サーフェスが同じ親を持つ別の NURBS サーフェスにコネクトして入力していて、サーフェスがその入力と同じシェイプであるとき、この操作によって NURBS サーフェスが削除されます。たとえば、NURBS 球体を 再構築する場合、再構築されたサーフェスの設定が元の入力サーフェスと同一であると、再構築された球体は削除されます。

この操作によって NURBS サーフェスを削除するには、サーフェスがロックされていない、またはリファレンス ファイルからではないことに注意してください。

キャッシュされたデータ(Cached Data)

ディペンデンシー グラフの値が計算されるか、虚であるとしても、一時的にノード内のスペースを占めることになります。このクリーンアップ操作は、必要に応じて生成されるすべてのデータに対して行われ、キャッシュ(データブロック)から削除することでメモリ内のスペースを片付けます。

デフォーマ(Deformers)

出力コネクションのない未使用のデフォーマと、出力コネクションのない中間オブジェクトを削除します。

未使用スキン インフルエンス(Unused skin influences)

スキンに無効な(つまり、ウェイト値がすべて 0.0 の)ジョイントまたはインフルエンス オブジェクトをすべて削除します。

エクスプレッション(Expressions)

出力アトリビュートにダイレクト コネクションのないすべてのエクスプレッションを削除します。ダイレクト コネクションのあるエクスプレッションは、シーン内の出力アトリビュートと入力アトリビュートのリレーションシップを作成します。つまり、他のシーンにリンクされていないコネクトされたノード グループの一部であるエクスプレッションは、削除されます。なぜなら、エクスプレッションがシーンにコネクトされている出力アトリビュートを参照しないからです。反対側に何もない単位ノードは評価されないため、この操作によって削除されません。

この操作はエクスプレッション ノードのみ削除します。dynExpressions は削除されずにパーティクル シェイプに組み込まれます。

警告:MEL コマンドを実行するエクスプレッションがあっても、出力アトリビュート(出力コネクション)へのダイレクト コネクションがない場合、この操作によってそのエクスプレッションは削除されます。

GroupID ノード(GroupID nodes)

シーン内の他のノードとのコネクションがなく、ロックされていない、リファレンスファイル以外のすべての GroupID ノードを削除します。

レンダリング ノード(Rendering nodes)

未使用のレンダリング ノードをすべて削除します。このプロシージャは次の 3 段階で進められます。

ステージ 1

空のシェーディング グループの他に、コネクトされたサーフェス、ボリューム、ディスプレイスメント シェーダのないシェーディング グループも削除します。

ステージ 2

出力が何にもコネクションされていないすべてのマテリアル ノード(サーフェス、ボリューム、ディスプレイスメント シェーダ)を削除します。メッセージ アトリビュートからの出力コネクションは、ノードが使用中であることを示してないため、この出力コネクション タイプのノードだけが削除されます。このステージでは、空のシェーディング グループに入力されたシェーダが削除されます。ステージ 1 では、空のシェーディング グループの shadingEngine ノードが削除されました。このノードにはコネクトされていない空のシェーディング グループに入ったマテリアルが残っています。これらのコネクトされていないマテリアルをここで削除します。

ステージ 3

未使用のすべてのテクスチャ ノードとユーティリティ ノードを削除します。ノードは、関連する出力コネクションがない場合は未使用です。ステージ 2 から削除されたマテリアルに入力されたテクスチャとユーティリティはここで削除されます。

ロケータ(Locators)

シェープ ノードまたはトランスフォーム ノードにコネクションのないロケータ オブジェクトを削除します。ロケータに親がコネクションされている場合、あるいはロケータに複数の子を持つ親ノードがある場合、ロケータは削除されません。ロックされていないリファレンス ファイル以外のロケータのみが、このプロシージャで削除されます。

コンストレイン(Constraints)

任意のオブジェクトを制約していないコンストレインを削除します。つまり、このプロシージャでは何もドライブしていない、出力コネクションのないコンストレインを削除します。このプロシージャでコンストレインを削除するには、コンストレインがロックされておらず、リファレンス ファイルでない必要があります。

具体的には、このプロシージャはシーンの中の以下のノードを評価して、削除すべきかどうかを決定します。

重複情報の削除(Remove duplicate)

シェーディング ネットワーク(Shading networks)

各シェーディング ネットワークをシーン内の他のシェーディング ネットワークと比較して、複製シェーディング ネットワークを 1 つに折り畳みます。複製シェーディング ネットワークは、shadingEngine ノード名に基づいてアルファベット順に削除されます。すべての複製ネットワークを特定のネットワークに折り畳むには、そのシーンのシェーディング ネットワークでアルファベット順の最下位になるようにそのネットワークの名前を変更します。

シーンのサイズを最適化する操作のカスタマイズ

Optimize Scene Sizeコマンドで呼び出した MEL スクリプトを編集すると、シーン サイズの最適化オプション(Optimize Scene Size Options)にクリーンアップ操作を追加できます。cleanUpScene.melと呼ばれるこのスクリプトは、/scripts/startup ディレクトリにあります。

スクリプトを開くと、スクリプトの末尾に定義済みの関数セットがあり、シーンのクリーンアップ操作の追加や管理に役立ちます。これらの関数は以下のとおりです。

新規にクリーンアップ操作を登録する

cleanUp_AddUserCleanUp()

この関数はユーザ定義のクリーンアップ操作を新規に登録します。このルーチンは、Maya ディレクトリの /scripts/startupu の中の UserCleanUp_AddUserCleanUp.mel にあります。

クリーンアップ操作を設定する

userCleanUp_CreateUI()

ユーザ定義のクリーンアップ操作の UI を作成するときに呼び出します。各操作の UI は、操作を有効/無効にするチェック ボックスで構成され、今すぐ最適化(Optimize Now)ボタンを使用してその操作だけを実行できます。

userCleanUp_SetOptionVars( int $forceFactorySettings )

クリーンアップ操作のオプション変数がスクラッチから初期化されるとき(起動時)か、出荷時の設定にリセットするときに呼び出します。適切なデフォルト値を取り出して、オプション変数を設定することができます。

userCleanUp_CleanUpSceneSetup( string $parent, string $forceFactorySettings )

シーン サイズの最適化オプション(Optimize Scene Size Options)ダイアログを作成し、そのダイアログのチェック ボックスが対応する optionVars の値と同期させるときに呼び出します。

userCleanUp_CleanUpSceneCallback( string $parent, string $doIt )

シーン サイズの最適化オプション(Optimize Scene Size Options)ダイアログのチェック ボックスの現在の状態をオプション変数として保存するときに呼び出します。

ユーザ定義のクリーンアップ操作のアトリビュートを表示する

userCleanUp_GetNumCleanUps()

登録されたユーザ定義のクリーンアップ操作の数を返します。0 から始まる番号で識別されます。0 から n-1 までの番号で識別されます。

userCleanUp_GetOptionVarName( int $cleanUpNum )

指定のユーザ クリーンアップ操作と関連付けられたオプション変数を返します。この変数の値は、次にシーン サイズの最適化(Optimize Scene Size)操作が呼び出されたときに、特定の操作を実行するか否かを示します。

userCleanUp_GetDefaultValue( int $cleanUpNum )

指定のユーザ定義クリーンアップ操作のデフォルト値(オンかオフ)を返します。

string userCleanUp_GetControlName( int $cleanUpNum )

指定のユーザ定義クリーンアップ操作に関連付けられたシーン サイズの最適化オプション(Optimize Scene Size Options)ダイアログの checkBox 制御グループの名前を返します。ダイアログが作成または無効化されたときに、このチェック ボックスの状態と対応するオプション変数(userCleanUp_GetOptionVarName() を参照)が同期化されます。

userCleanUp_GetLabel( int $cleanUpNum )

シーン サイズの最適化オプション(Optimize Scene Size Options)ダイアログにある指定のユーザ定義クリーンアップ操作のラベル付けに使用するテキストを返します。

userCleanUp_GetCommand( int $cleanUpNum )

指定のユーザ定義クリーンアップ操作に実行されるコマンド文字列を返します。

userCleanUp_ListCleanUps()

登録されたすべてのユーザ定義クリーンアップ操作のリストをプリントします。

userCleanUp_GetOptionVars()

ユーザ定義クリーンアップ操作に関連付けられたすべてのオプション変数のリストを返します。

ユーザ定義クリーンアップ操作を実行する

userCleanUp_PerformCleanUpScene()

現在有効なユーザ定義のシーンの最適化操作を実行するときに呼び出します(optionVars 使用)。操作を起動するときに発生するエラー数(ある場合)を返します。

関連項目