ファイル リファレンスによって複雑なシーン階層を管理できます。次のヒントを使用することで、ファイル リファレンスを最大限に活用でき、より効果的なワークフローを確立できます。またネームスペースの基本を理解することも、役立つことでしょう。詳細については、ネームスペースを参照してください。
親シーンとリファレンス ファイルのファイルおよびノードの命名規則を事前に計画しておくことは重要であり、制作環境での効果的なファイル リファレンスに非常に役立ちます。特に次の点に注意して計画を立てると良いでしょう。
場合によっては、デフォルトのファイル名より短い名前をネームスペースに指定することもできます。ノードの名前を短くすると、Maya のエディタ(チャンネル ボックス(Channel Box)、アウ トライナ(Outliner)、レイヤ エディタ(Layer Editor)など)操作時のワークフローが簡略化されます。リファレンスの作成オプション ウィンドウで任意のテキスト文字列を入力して、カスタム ネームスペースを作成します。たとえば、mapleTree の代わりに mt というカスタム ネームスペースを使用することもできます。上記の例では、tree1 ノードの名前は mt:tree1 になります。これにより Maya で操作するときに必要な名前(および入力)の長さが短くなります。
参照されないノードを参照されたネームスペースに追加すると、リファレンス ノードと名前衝突が発生する可能性があり(たとえば、ノードをネームスペースに追加するときリファレンスがアンロードされる場合)、リファレンスを削除してもネームスペースが削除されないことがあります。詳細については、ネームスペースを参照してください。
ファイル リファレンスを使用する場合は、ファイルを Maya ASCII ファイル フォーマット(.ma)で保存することをお勧めします。Maya ASCII ファイルは任意のテキスト エディタで開いて編集できるため、ファイルまたはファイルのコンポーネントがロードされない場合のトラブルシューティングがより簡単になります。
ファイル リファレンスは絶対パスと環境変数によるパスのみをサポートします。相対パス名はサポートされません。環境変数は明示的で各ユーザのファイル構造に合わせてカスタマイズできるため、相対パスよりも有効な方法として使用できます。
絶対パス(サポートされます): C:/projects/cityscene/scenes/street.ma
環境変数パス(サポートされます): $myProject/scenes/street.ma
環境変数の詳細については、Maya.env を使用して環境変数を設定するを参照してください。
詳細については、リファレンス エディタでリファレンス パスを編集するを参照してください。
制作環境でファイル リファレンスの使用を計画する場合、チームのワークフロー(モデラ、リガー、アニメータなど)ならびにプロジェクトの全体的な要件を考慮してからシーンの階層を決定します。
一般的には、ボトムアップ式にファイルを参照します(小さな項目からより大きな項目を参照します)。このボトムアップ構造を使用すると、ロードや不要なシーンのセグメントのアンロードが簡単に実行できます。たとえば、都市の親シーンを作成する場合、最初にドアと他の関連コンポーネントを建物ファイルに参照する必要があります。次に、建物ファイルを通りファイルに参照してから、通りファイルを都市の親シーンに参照します。
キャラクタを構築する場合は、モデルをリグ ファイルに参照します。次に、キャラクタをアニメートする環境にこのリグ ファイルを参照します。これによって、リグへの変更がキャラクタを使用する可能性のあるすべての環境ファイルに正確に伝搬されます。
多数のファイルをシーンに参照すると、データ量が急激に増えて複雑になり、管理が困難になる場合があります。アウトライナとハイパーグラフ(Hypergraph)の概要エディタには、表示するデータの量を制限できるフィルタリング オプションがあります。
ディスプレイ レイヤ エディタ(Display Layer Editor)では、レイヤをアルファベット順にソートし、整理できます。
リファレンス ファイルが予想以上に複雑化した場合は、通常のシーンのセグメントをリファレンス ファイルとして抽出できます。選択項目をリファレンスとしてエクスポート(Export Selection as a Reference)コマンドを使用すると、シーンの特定のコンポーネントを選択し、参照する個別の子シーン ファイルとしてエクスポートできます。エクスポートした子シーン ファイルは自動的に参照されて現在開いているシーンにロードされます。ファイル リファレンスで、選択項目をリファレンスとしてエクスポートを使用することはできません。
この方法でファイル リファレンスを作成する利点は、シーンの各領域が正確なワールド空間に配置されるため、親シーンでの参照時に再配置する必要がなくなることです。
オブジェクトをインスタンス化すると、シーンのデータ量をさらに低減して管理を簡素化できます。たとえば、通りのシーンに多数の街灯が存在する場合、街灯のファイルを一度参照してから名前を変更して街灯をインスタンス化できます。シーンのすべての街灯はオリジナルの街灯ファイルとインスタンス化リレーションシップを持つため、街灯のファイルをアンロードすると、表示されなくなります。
リファレンス ファイル内のオブジェクトをインスタンス化してからリファレンス ファイルを削除すると、親シーンで両方のオブジェクトが削除されます。トランスフォーム(Transform)ノードはインスタンスの親シーンに残ります。このノードは、親シーンでインスタンスに他の変更が適用された場合に残ります。
親シーンにインスタンス化されたオブジェクトが存在する場合は、ノードの名前やリファレンス ファイルの階層を変更しないでください。このような変更を実施するとインスタンスが消失します。したがって、存在しないオブジェクトを検索することになります。Maya のインスタンス化は名前に基づいています。リファレンス ファイルのオブジェクトの名前を変更してオリジナルのオブジェクトが消滅すると、親シーンはこれを発見できなくなります。
ファイル リファレンス ロケータ オプションは、シーン ビューのファイル リファレンスをグループ ノード経由で移動する必要がある場合に便利です。ロケータはリファレンスをアンロードするたびにリファレンスの視覚的な目印の役割も果たします。ロケータ オプションは、グループ(Group)オプションを選択したときのリファレンス オプション ウィンドウでのみ使用できます。また、このオプションは、ロケータのリファレンス ファイルのコンテンツをグループ化し、リファレンス ノードの名前に注釈を付けます。ロケータを右クリックしてコンテキスト依存メニューからリファレンスを選択すると、シーンのリファレンスをロードまたはアンロードできます。
詳細については、ファイル > リファレンスの作成(File > Create Reference)を参照してください。
参照されている子シーン ファイルを階層レベルで編集すると、親シーン ファイルに悪影響を与える場合があります。つまり、ノードの名前とコネクションを子シーン ファイル レベルで変更すると、親シーン レベルでの編集が解決できなくなることがあります。その他の問題の例については、リファレンスの編集のトラブルシューティングを参照してください。
リファレンス ノードから不要な編集内容を削除する必要がある場合があります。たとえば、親シーン内で操作しながらファイル リファレンスからアニメーションを適用したり削除したりしたとします。アニメーションは完成しましたが、完成バージョンのアトリビュートにアニメートする必要のない setAttr の編集内容がないか確認する必要が出てきました。
このような場合、不要な編集を削除するには、次の処理を実行します。
この例では、現在開いているシーンで参照したファイルにコネクトされるリファレンス ノードの名前を定義する方法を示します。
reference -q -f world:planet
リファレンス ファイルのディレクトリ パスと名前が表示されます。この例では、リファレンス ファイルの名前は world です。
file -q -rfn world.ma
worldRN
リファレンス ノードの名前を定義すると、リファレンスの編集内容を削除するにはリファレンス ファイルをアンロードする必要があります。
file -unloadReference worldRN
reference -editCommand “setAttr” -rfn worldRN -q
file -cleanReference worldRN -editCommand “setAttr”
file -loadReference worldRN
デフォルト シェーダ(lambert1)を変更したファイルを参照する場合、これらの変更よりも親ファイルのデフォルト シェーダが優先されます。これを回避するには、子ファイルに新規シェーダを作成して、デフォルト シェーダではなくこの新規シェーダを割り当てます。
共有シェーディング ネットワークを使用してカレント シーンにファイル リファレンスを設定すると、リファレンス対象シーンのシェーディング ネットワークはカレント シーンのシェーディング ネットワーク(すべてのリファレンスのシェーディング ネットワークを含む)と結合されます。 このため、シーン全体(リファレンスを含む)で同じシェーディング ネットワークを使用する場合にシェーディング ネットワークを複製しないようにします。
シェーディング ネットワークを共有できるのは、シェーディング ネットワークが等しい場合だけです。 Maya が 2 つのシェーディング ネットワークを同等とみなすのは、シェーディング グループから上流に向かって、シェーディング ネットワークに含まれるすべてのノードが同じ名前とタイプを持つ場合だけです。
シェーディング ネットワークを共有するためには、シェーディング ネットワーク内の各ノードの名前とタイプが同じでなければなりませんが、各ノードの実際の値は考慮されません。 そのため、子シーンのノードの値(たとえば、青)と親シーンのノードの値(たとえば、赤)が異なっていても、名前とタイプが一致する限り、これらのノードは同一であるとみなされます。
ただし、一部のシェーディング ネットワークは共有できません。 それらは次のとおりです。
シェーディング ネットワークにこれらのうちのいずれかが現れると、共有シェーディング ネットワークが有効でも、ファイルを参照する際にネットワークは共有されません。
また、シェーディング ネットワークの下流に存在する項目も共有されません。 共有される項目は、シェーディング ネットワークの上流にある項目だけです。
シェーディング ネットワークに追加され、その後に共有されるダイナミック アトリビュートは、同じアトリビュートが共有前に共有される各シェーディング ネットワーク上で作成されなければ、失われる可能性があります。
共有ディスプレイ レイヤを使用してカレント シーンにファイル リファレンスを設定すると、リファレンス対象シーンのディスプレイ レイヤはカレント シーンのディスプレイ レイヤ(すべてのリファレンスのディスプレイ レイヤを含む)と結合されます。このため、シーン全体(リファレンスを含む)で同じディスプレイ レイヤを使用する場合にディスプレイ レイヤを複製しないようにします。
Maya では、ディスプレイ レイヤ名を使用して、カレント シーンにリファレンス ディスプレイ レイヤを追加する方法が定義されます。ディスプレイ レイヤ名が親シーン内にある場合、子シーン内の同じ名前のディスプレイ レイヤに割り当てられたオブジェクトが参照されると、それらはオリジナルの親ディスプレイ レイヤに追加されます。
親シーンにないディスプレイ レイヤが子シーンに含まれている場合、子シーンが参照されると、そのディスプレイ レイヤが親シーンのディスプレイ レイヤ エディタに表示されます。後でこれらの子シーンが親シーンから削除されれると、子シーンに関連するシーンもディスプレイ レイヤ エディタから削除されます。
リファレンスを含んでいる Maya 6.5 より前のファイルは、新しいバージョンの Maya ファイルに変換されます。「_UNKNOWN_REF_NODE_」という名前のリファレンス ノードが作成されるか、特別な「_UNKNOWN_REF_NODE_」エントリが既存のリファレンス ノードに追加されることがあります。
このノード タイプは、6.5 より前で行われた編集を、適用するまですべて格納しておくために使用されていました。
シーンのすべてのリファレンスがロードされると、すべての編集が適用され _UNKNOWN_REF_NODE_ 領域とノードは表示されなくなるはずです。適用できない編集があった場合は(たとえば、名前を変更されたか削除されたオリジナルのリファレンス ファイルにあるノード)、_UNKNOWN_REF_NODE_ がファイル内に残ります。
これらのリファレンス ノードを削除する必要がある場合は、_UNKNOWN_REF_NODE_ を照会して削除してください。つまり、この特定のノード タイプはリファレンス エディタを使用して削除することができません。スクリプト エディタ(Script Editor)で次のように入力します。
デフォルトでは、同じファイルを 2 度参照すると、ファイルは再読み込みされず、代わりに既存のノードがコピーされます。ビルトインされたファイル リファレンスの複数回参照の最適化機能を使用すると、エラーが発生する場合があります。MAYA_FORCE_REF_READ 環境変数はファイル リファレンスの最適化をオフにし、リファレンス ファイルが必ず読み込まれるようになります。これで評価が不正確になってしまうような動作を回避することができます。
詳細については、一般的な変数を参照してください。
Maya ボーナス ツール(Bonus Tools)の一部としてファイル リファレンスのヘルパー スクリプトを使用できます。ボーナス ツール(Bonus Tools)は、役に立つ Maya スクリプトとプラグインの無料コレクションで、Autodesk Web サイト(www.autodesk.com/maya-bonustools)から利用できます。
ボーナス ツール(Bonus Tools)を Autodesk サイトからダウンロードするには
Autodesk Web サイトの各エリアにアクセスするには、順序に従って登録することが必要です。インストールを完了すると、ボーナス ツールが Maya のプルダウン メニューに表示されるようになります。
Maya 2010 以前のバージョンでは、「<」と「>」の記号がノード名やネームスペース名で発見された場合は「_」記号に変換されていました。不正文字が先頭にある場合は削除され、先頭以外にある場合はアンダースコアに変更されていました。
たとえば Maya 2009 では次のように変換されていました。
namespace -add "<foo>" // Result: foo_ createNode transform -n "<bar>" // Result: bar_ namespace -add "foo<bar>" //Result: foo_bar_
Maya 2011 以降では、ノード名の場合は「<」と「>」記号は削除され、「_」記号に変換されます。ただしネームスペース名の場合、「<」と「>」記号の間にあるすべての文字はプレースホルダーのネームスペースと見なされます。つまり、Maya の自動変換を期待してこれらの記号を使用している場合は、コードを書き換える必要があります。たとえば Maya 2012 では次のように変換されていました。
namespace -add "<foo>" // Result: <foo> createNode transform -n "<bar>" // Result: bar_ namespace -add "foo<bar>" //Result: foo_bar_
レンダー レイヤが含まれるシーンでファイル リファレンスを使用しているときに、ファイル リファレンスをインポートしてシーン ファイルを保存する場合は、カレント レイヤが masterLayer であることを確認します。選択したレイヤが masterLayer である場合、レンダー レイヤ、ファイル リファレンス、および保存がより安定的になります。