シーンから使用されていない空の無効な部分を除去して、シーンのサイズと複雑さを抑えることができます。シーンをすべてクリーンアップするか、個々に最適化を実行することもできます。
ファイル > シーン サイズの最適化(File > Optimize Scene Size) > を選択し、除去する情報の種類を設定するか、または個々の最適化を実行します。
Maya がシーンを最適化するときに進捗バーが表示されます。キーを押してこの操作を中断することができます。最適化の結果レポートはすべてで確認できます。
シーン サイズの最適化オプション
ウィンドウのオプションを使用して行えるクリーンアップ操作について以下に説明します。
無効情報の除去(Remove invalid)
-
-
無効な NURBS サーフェス ノードとカーブ ノードを削除します。ノードは、接続がなくなると無効とみなされます。具体的には、この操作によって以下の無効なノードが除去されます。
- stitchSrf
- rebuildSurface
- insertKnotSurface
- avgNurbsSurfacePoints
空情報の除去(Remove empty)
-
-
未使用(空)セットを削除します。この操作では除去できない既定のセット ノードが一部あります。これらのセット ノードは次のとおりです。
- defaultLightSet
- defaultObjectSet
- initialParticleSE
- initialShadingGroup
-
-
未使用(空)パーティションを削除します。パーティションは、その他のシーンのノードと接続されていない場合、未使用とみなされます。
-
-
相対物や接続がなく、どのリファレンス ノードとも接続されていないトランスフォーム ノードを除去します。
-
-
リファレンス ファイルの一部ではなく、ロックされていない空のディスプレイ ノードまたはレンダー ノードを削除します。既定のレイヤは、またはを操作しても削除できません。
未使用情報の除去(Remove unused)
-
-
シーン内の他のノードとの接続がなく、ロックされていない、リファレンス ファイル以外の animCurve ノードを削除します。
-
-
シーン内で使用されていないソース アニメーション クリップとアニメーション ノードを削除します。アニメーション クリップは、シーン内のキャラクタ セットに関連付けされていない場合や他のいずれかのシーン ノードに接続されていない場合は、未使用とみなされます。ソース
クリップ ノードは、ソース クリップにリンクされたシーンのアニメーション クリップが使用されていない場合、未使用とみなされます。
-
-
シーン内のキャラクタに適用されていないすべてのアニメーション ポーズを削除します。
-
-
シーン内の他のノードとの接続がなく、ロックされていない、リファレンス ファイルから以外の、親が未使用の NURBS カーブを削除します。NURBS カーブに他のシーン ノードと接続のある親がある場合、カーブは削除できません。
-
-
個々の入力 NURBS サーフェスと同一の NURBS サーフェスを削除します。NURBS サーフェスの入力接続が create に接続されている場合で、サーフェスが同じ親を持つ別の NURBS サーフェスに接続して入力していて、サーフェスがその入力と同じシェイプであるとき、この操作によって
NURBS サーフェスが除去されます。たとえば、NURBS 球を 再構築する場合、再構築されたサーフェスの設定が元の入力サーフェスと同一であると、再構築された球は削除されます。
この操作によって NURBS サーフェスを除去するには、サーフェスがロックされていない、またはリファレンス ファイルからではないことに注意してください。
-
-
ディペンデンシー グラフの値が計算されるか、虚であるとしても、一時的にノード内のスペースを占めることになります。このクリーンアップ操作は、必要に応じて生成されるすべてのデータに対して行われ、キャッシュ(データブロック)から除去することでメモリ内のスペースを片付けます。
-
-
出力接続のない未使用のデフォーマと、出力接続のない中間オブジェクトを削除します。
-
-
スキンに無効な(つまり、ウェイト値がすべて 0.0 の)ジョイントまたはインフルエンス オブジェクトをすべて除去します。
-
-
出力アトリビュートにダイレクト接続のないすべてのエクスプレッションを削除します。ダイレクト接続のあるエクスプレッションは、シーン内の出力アトリビュートと入力アトリビュートのリレーションシップを作成します。つまり、他のシーンにリンクされていない接続されたノード
グループの一部であるエクスプレッションは、削除されます。なぜなら、エクスプレッションがシーンに接続されている出力アトリビュートを参照しないからです。反対側に何もない単位ノードは評価されないため、この操作によって削除されません。
この操作はエクスプレッション ノードのみ削除します。dynExpressions は削除されずにパーティクル シェイプに組み込まれます。
警告:
MEL コマンドを実行するエクスプレッションがあっても、出力アトリビュート(出力接続)へのダイレクト接続がない場合、この操作によってそのエクスプレッションは削除されます。
-
-
シーン内の他のノードとの接続がなく、ロックされていない、リファレンスファイル以外のすべての GroupID ノードを削除します。
-
-
未使用のレンダリング ノードをすべて削除します。このプロシージャは次の 3 段階で進められます。
ステージ 1
空のシェーディング グループの他に、接続されたサーフェス、ボリューム、ディスプレイスメント シェーダのないシェーディング グループも削除します。
ステージ 2
出力が何にも接続されていないすべてのマテリアル ノード(サーフェス、ボリューム、ディスプレイスメント シェーダ)を削除します。メッセージ アトリビュートからの出力接続は、ノードが使用中であることを示してないため、この出力接続タイプのノードだけが削除されます。このステージでは、空のシェーディング
グループに入力されたシェーダが削除されます。ステージ 1 では、空のシェーディング グループの shadingEngine ノードが削除されました。このノードには接続されていない空のシェーディング グループに入ったマテリアルが残っています。これらの接続されていないマテリアルをここで削除します。
ステージ 3
未使用のすべてのテクスチャ ノードとユーティリティ ノードを削除します。ノードは、関連する出力接続がない場合は未使用です。ステージ 2 から削除されたマテリアルに入力されたテクスチャとユーティリティはここで削除されます。
-
-
シェープ ノードまたはトランスフォーム ノードに接続のないロケータ オブジェクトを削除します。ロケータに親が接続されている場合、あるいはロケータに複数の子を持つ親ノードがある場合、ロケータは削除されません。ロックされていないリファレンス ファイル以外のロケータのみが、このプロシージャで除去されます。
-
-
任意のオブジェクトを制約していないコンストレイントを削除します。つまり、このプロシージャでは何もドライブしていない、出力接続のないコンストレイントを除去します。このプロシージャでコンストレイントを削除するには、コンストレイントがロックされておらず、リファレンス
ファイルでない必要があります。
具体的には、このプロシージャはシーンの中の以下のノードを評価して、除去すべきかどうかを決定します。
- pointConstraint
- aimConstraint
- orientConstrain
- parentConstrain
- scaleConstraint
- normalConstraint
- tangentConstraint
- geometryConstraint
-
-
出力のない pairBlends、または input2 に接続のない pairBlends を削除します。ロックされている、またはリファレンス ファイルの pairBlends ノードは、このプロシージャで除去されません。
-
-
他のシーンと 1 つまたは少数の接続を持つスナップショット ノードをすべて削除します。ロックされている、またはリファレンス ファイルのスナップショット ノードは、このプロシージャで除去されません。
-
-
他のシーンと 1 つまたは少数の接続を持つ単位変換ノードをすべて削除します。ロックされている、またはリファレンス ファイルの単位変換ノードは、このプロシージャで除去されません。
-
-
シーンまたはシーンのリファレンスで使用されないすべてのリファレンス ノードを削除します。読み取り専用のノードは、この操作で削除されません。
-
-
ストロークにアタッチしてないすべてのブラシを削除します。読み込み操作を数多く行って蓄積する既定のブラシ ノードを整理するのに使用できます。
-
-
- unknown
- unknownDag
- unknownTransform
重複情報の除去(Remove duplicate)
-
-
各シェーディング ネットワークをシーン内の他のシェーディング ネットワークと比較して、複製シェーディング ネットワークを 1 つに折り畳みます。複製シェーディング ネットワークは、shadingEngine ノード名に基づいてアルファベット順に削除されます。すべての複製ネットワークを特定のネットワークに折り畳むには、そのシーンのシェーディング
ネットワークでアルファベット順の最下位になるようにそのネットワークの名前を変更します。
シーンのサイズを最適化する操作のカスタマイズ
コマンドでコールした MEL スクリプトを編集すると、にクリーンアップ操作を追加できます。cleanUpScene.mel と呼ばれるこのスクリプトは、/scripts/startup ディレクトリにあります。
スクリプトを開くと、スクリプトの末尾に定義済みの関数セットがあり、シーンのクリーンアップ操作の追加や管理に役立ちます。これらの関数は以下のとおりです。
新規にクリーンアップ操作を登録する
- cleanUp_AddUserCleanUp()
-
この関数はユーザ定義のクリーンアップ操作を新規に登録します。このルーチンは、Maya ディレクトリの /scripts/startupu の中の UserCleanUp_AddUserCleanUp.mel にあります。
クリーンアップ操作を設定する
- userCleanUp_CreateUI()
-
ユーザ定義のクリーンアップ操作の UI を作成するときにコールします。各操作の UI は、操作を有効/無効にするチェック ボックスで構成され、ボタンを使用してその操作だけを実行できます。
- userCleanUp_SetOptionVars( int $forceFactorySettings )
-
クリーンアップ操作のオプション変数がスクラッチから初期化されるとき(起動時)か、出荷時の設定にリセットするときにコールします。適切な既定値を取り出して、オプション変数を設定することができます。
- userCleanUp_CleanUpSceneSetup( string $parent, string $forceFactorySettings )
-
ダイアログを作成し、そのダイアログのチェック ボックスが対応する optionVars の値と同期させるときにコールします。
- userCleanUp_CleanUpSceneCallback( string $parent, string $doIt )
-
ダイアログのチェック ボックスの現在の状態をオプション変数として保存するときにコールします。
ユーザ定義のクリーンアップ操作のアトリビュートを表示する
- userCleanUp_GetNumCleanUps()
-
登録されたユーザ定義のクリーンアップ操作の数を返します。0 から n-1 までの番号で識別されます。
- userCleanUp_GetOptionVarName( int $cleanUpNum )
-
指定のユーザ クリーンアップ操作と関連付けられたオプション変数を返します。この変数の値は、次に操作がコールされたときに、特定の操作を実行するか否かを示します。
- userCleanUp_GetDefaultValue( int $cleanUpNum )
-
指定のユーザ定義クリーンアップ操作の既定値(オンかオフ)を返します。
- string userCleanUp_GetControlName( int $cleanUpNum )
-
指定のユーザ定義クリーンアップ操作に関連付けられたダイアログの checkBox 制御グループの名前を返します。ダイアログが作成または無効化されたときに、このチェック ボックスの状態と対応するオプション変数(userCleanUp_GetOptionVarName() を参照)が同期化されます。
- userCleanUp_GetLabel( int $cleanUpNum )
-
ダイアログにある指定のユーザ定義クリーンアップ操作のラベル付けに使用するテキストを返します。
- userCleanUp_GetCommand( int $cleanUpNum )
-
指定のユーザ定義クリーンアップ操作に実行されるコマンド文字列を返します。
- userCleanUp_ListCleanUps()
-
登録されたすべてのユーザ定義クリーンアップ操作のリストをプリントします。
- userCleanUp_GetOptionVars()
-
ユーザ定義クリーンアップ操作に関連付けられたすべてのオプション変数のリストを返します。
ユーザ定義クリーンアップ操作を実行する
- userCleanUp_PerformCleanUpScene()
-
現在有効なユーザ定義のシーンの最適化操作を実行するときにコールします(optionVars 使用)。操作を起動するときに発生するエラー数(ある場合)を返します。