レンダー レイヤのコレクションの作成

コレクションは 次の 2 つの目的に役立ちます。レイヤにコレクションを追加できます。または、ノードをコレクションにグループ化して、1 つの手順でこれらすべてのノードでアトリビュートをオーバーライドできます。エクスプレッションを指定する、ビューポートまたはアウトライナ(Outliner)からノードを選択する、またはその両方を組み合わせることで、コレクションを追加できます。

コレクションを使用すると、複雑なシーンのデータ変更を容易に管理できるようになります。

コレクションを作成して、オーバーライドするアトリビュートに基づいてシーン内でノードをグループ化します。また、コレクションを作成して、ノードの可視性を同時にコントロールできるよう、ノードをグループ化します。

コレクションのメンバーシップは、名前に基づいています。エクスプレッションを使用してノードをコレクションに追加すると、エクスプレッションに一致する名前を持つすべてのノードが自動的に含まれます。このエクスプレッションは、シーン内の変更に動的に適応するために再適用できます。「シーンの更新時にレンダリング設定を更新する」および「レンダー レイヤのコレクションにオーバーライドを作成する」を参照してください。

コレクションの可視性をコントロールするために、有効なコレクションのみがシーンに影響するよう、また表示されるよう、コレクションを有効/無効に設定できます。また、選択したコレクションを分離して、それらのコレクションのみがビューポートに表示されるようにできます。この機能を使用すると、最小数の工程で複数のオブジェクトの可視性をコントロールできます。「コレクションの可視性のコントロール」と「コレクションの分離されたサブセットをビューポートに表示する」を参照してください。

コレクションはトップダウンで解釈されます。下位のコレクションは、可視性およびオーバーライドの適用に関し、上位のコレクションよりも優先されます。「オーバーライドの適用の順序」を参照してください。レンダリングの設定(Render Setup)エディタで、中マウス ボタンでコレクションをドラッグ & ドロップすることで並べ替えることができます。

コレクションのタイプ

コレクションには既定でトランスフォーム ノードのみが含まれています。これはレイヤが表示されている場合に、ビューポートに表示されるオブジェクトを決定します。これは、コレクションのトランスフォーム タイプ インジケータに反映されます。

オーバーライドを作成すると、他のノード タイプ(シェイプ、シェーダ、またはシェーディング グループなど)を含むサブコレクションが自動的に作成されます。Maya ではオーバーライドされているノード タイプが自動的に認識され、そのノード タイプのみを持つサブコレクションが作成されます。コレクションにメンバー タイプを示す などのノード タイプ インジケータが表示されます。ノード タイプに関する詳細については、「ノード タイプ」を参照してください。

ただし、コントロールを強化するために、あらゆるノード タイプのコレクションおよびサブコレクションを作成することもできます。希望するノード タイプをプロパティ エディタ(Property Editor)コレクションのフィルタ(Collection Filters)ドロップダウン リストから選択します。「ノード タイプによるコレクション メンバーの追加」を参照してください。

1 つのレンダー レイヤ内には 1 つまたは複数のコレクションを含めることができ、1 つのコレクション内には 1 つまたは複数のサブコレクションを含めることができます。「レンダー レイヤを作成する」を参照してください。

コレクションを作成する

コレクションを作成するには、レンダー レイヤを右クリックして、コレクションを作成(Create Collection)を選択します。

コレクションにメンバーを追加する

プロパティ エディタ(Property Editor)でコレクションとそのアトリビュートを選択します。次のいずれかの方法を実行して、ノードをコレクションに追加できます。

同一のノードを複数のコレクションに追加できます。

エクスプレッションを使用してメンバーを追加する

エクスプレッションでワイルドカードを使用して、コレクションにノードを含めます。たとえば、名前が building で始まるすべてのノードを含めるには、building* とします。ls コマンドでサポートされているすべてのワイルドカード文字は、このエクスプレッションでも使用できます。

注:

既定では、エクスプレッションに一致するトランスフォーム ノードのみがコレクションに含まれます。上級ユーザの場合は、コレクションのフィルタ(Collection Filters)ドロップダウン メニューを使用して、コレクション フィルタを調整し、コレクション内に他のタイプのノード(シェーダ、シェイプ、シェーディング エンジン、セットなど)を含めることができます。さらに、すべて(All)のコレクション フィルタを選択すると、タイプに関係なくすべてのノードを含めることができます。

エクスプレッションでは大文字と小文字が区別されます。たとえば、*cushion* と *Cushion* は同じではありません。

この例では、エクスプレッション Mesh_K* は、Killamari のボディ、目、ガラスの目をコレクションにすべて含めます。

ヒント: また、エクスプレッションを使用してシェーダをコレクションに含めることもできます。たとえば、シーン内に 10 匹のネコがいて、シェーダに cat1_body、cat2_body というような名前を付けている場合、コレクションを作成し、エクスプレッション cat*body を使用して、すべてのネコのボディ シェーダを 1 つのコレクションに含めることができます。

エクスプレッションを使用して、名前にネームスペースが含まれているメンバーを含める

エクスプレッションとワイルドカードを使用して、名前にネームスペースが含まれているノードを含めることができます。それぞれのネームスペースのワイルドカードを使用します。

例:

このエクスプレッションは、livingRoom_substances というネームスペース内のすべてのノードを選択します。例は livingRoom_substances:greenapple4 となります。

livingRoom_substances:*

これも、そのネームスペース内のノードが選択されますが、名前が c で始まるノードだけが選択されます。例は livingRoom_substances:couchB となります。

livingRoom_substances:c*

ただし、livingRoom_substances:chairB_v08:chairB などのオブジェクトとは一致しない場合があります。この場合、次を使用する必要があります。

livingRoom_substances::c*

この 3 つ目のエクスプレッションは、ネストされたネームスペースに再帰的に一致します。

再帰的ネームスペース検索を示すには、構文「::」を使用します。

この livingRoom_substances::c* エクスプレッションは、最初のネームスペースが livingRoom_substances で、ノード名が「c」で始まる必要があるが、それらの間には任意の階層のネームスペースが存在することも、あるいはネームスペースが全く存在しないことも可能であることを示します。

たとえば、このエクスプレッションには次のノードがすべて含まれます。

  • livingRoom_substances:couchB
  • livingRoom_substances:chairB_v08:chairB
  • livingRoom_substances:tables:coffeeTable_v08:coffeeTable

すべてのネストされたネームスペースを含める必要がない場合、たとえば、次に示すようなノードに追加する 2 つのネストされたネームスペースのみを含めたい場合:

livingRoom_substances:chairB_v08:chairB

しかし、 livingRoom_substances:couchBlivingRoom_substances:tables:coffeeTable_v08:coffeeTable は含めたくない場合、

エクスプレッションに「::」ではなく「:」を使用することで、再帰的検索を使用せずにネームスペースを明示的に指定することができます。

livingRoom_substances:*:c*

このエクスプレッションは、最初のネームスペースが livingRoom_substances で、2 番目のネームスペースには制限はなく、ネームスペースの名前が「c」で始まるものに一致します。

「::」の構文は、エクスプレッションのどの部分にでも使用できます。行頭部分でも構いません。

たとえば、「::c*」には、任意の階層でネストされたネームスペースの「c」で始まるすべてのノードが含まれます。たとえば、次のノードが含まれます。

  • couchC
  • livingRoom_substances:couchB
  • livingRoom_substances:chairB_v08:chairB
  • livingRoom_substances:tables:coffeeTable_v08:coffeeTable
  • diningRoom_lights:chandelier
  • diningRoom_furniture:chairA_v07:chairA

エクスプレッションに、再帰的一致と非再帰的一致の両方を含めることができます。

次のノードを使用するシーンを考えてみてください。

  • pSphere1
  • aaa:pSphere1
  • aaa:bbb:pSphere1
  • aaa:bbb:ccc:pSphere1
  • aaa:ccc:pSphere1

「::p*」には、任意の階層でネストされたネームスペース(ネームスペースなしを含む)内の「p」で始まる名前を持つすべてのノードが一致します。

  • pSphere1
  • aaa:pSphere1
  • aaa:bbb:pSphere1
  • aaa:bbb:ccc:pSphere1
  • aaa:ccc:pSphere1

「aaa::p*」には、「aaa」で始まる名前を持つネームスペース内の「p」で始まる名前を持つすべてのノードが一致します。

  • aaa:pSphere1
  • aaa:bbb:pSphere1
  • aaa:bbb:ccc:pSphere1
  • aaa:ccc:pSphere1

「::ccc:p*」には、「ccc」で終わる名前を持つネームスペース内の「p」で始まる名前を持つすべてのノードが一致します。

  • aaa:bbb:ccc:pSphere1
  • aaa:ccc:pSphere1
  • 単一の「:」を使うと、非再帰的一致を示すことができます。

「aaa:ccc::p*」には、「aaa:ccc」で始まるネームスペース内の「p」で始まる名前を持つすべてのノードが一致しますが、この場合、「 aaa」と「ccc」の間にはネームスペースがありません。

  • aaa:ccc:pSphere1
  • 単一の「:」を使うと、非再帰的一致を示すことができます。言い換えると、「aaa:bbb:ccc:pSphere1」には一致しません。

「::bbb::p* 」には、「bbb」というネームスペースを含んだすべてのネームスペース内に存在する「p」で始まる名前を持つすべてのノードが一致します。

  • aaa:bbb:pSphere1
  • aaa:bbb:ccc:pSphere1

「::aaa::ccc::p*」には、「aaa」および「ccc」というネームスペースを含んだすべてのネームスペース内に存在する「p」で始まる名前を持つすべてのノードが一致します。

  • aaa:bbb:ccc:pSphere1
  • aaa:ccc:pSphere1
ヒント: ネームスペースを使用すると、エクスプレッションを使用して、簡単にコレクションに追加できます。そのため、たとえばオブジェクトを参照する場合など、シーンを設定する場合に、同じネームスペースに同様のオブジェクトを参照して、これらのオブジェクトをそのネームスペースを使用して 1 つのコレクションに追加できるようにすることができます。たとえば、set ネームスペースですべての set オブジェクトを参照すると、set:* というエクスプレッションを使用して、それらすべてを 1 つのコレクションに含めることができます。「レンダリング設定のベスト プラクティス」を参照してください。

階層をエクスプレッションで表す

階層を表すには、| を使用します。たとえば、次のエクスプレッションは、Mesh_All が LOD0 の親、つまり名前に Mesh_K が含まれるノードの親であることを意味します。

|Mesh_All|LOD0|*Mesh_K*

ワイルドカードを使用して階層を示すこともできます。たとえば、次のようなパターンは、

aTransform|*|aShape

次のすべてに一致します。

|aTransform|WildMiddle|aShape
|aTransform|Something|aShape
|A|Starting|Path|aTransform|SomethingElse|aShape
|Another|Path|aTransform|OutOfNameIdeas|aShape

つまり、aTransform がそのルートで始まるかどうかに関係なく、aTransform の孫であるすべての aShape ノードが含まれます。

このエクスプレッションは、階層とネームスペースの両方を表します。set ネームスペースに属する C で始まる名前を持つすべてのノードと、set ネームスペース内の親ノードの子であるノードが含められます。

|set:parent|set:c*

エクスプレッションを結合する

カンマ、セミコロン、またはスペースで区切って、複数のエクスプレッションを組み合わせることができます。たとえば、次のように組み合わせたエクスプレッションを使うと、livingRoom_substances:couchBlivingRoom_substances:chairB_v08:chairBdiningRoom_furniture:chairA_v07:chairA のすべてを含めることができます。

livingRoom*::c*; diningRoom*:*:ch*

エクスプレッションを使用して除外する

エクスプレッションを使用してノードを除外するには、エクスプレッションの頭に - を付けます。引き続き上記の例を使用すると、次のエクスプレッションでは、最初のエクスプレッションに含まれている couch と chair のメンバーから cushion ノードを除去します。

livingRoom*::c*; diningRoom*:*:ch*; -livingRoom*::*cushion* 

エクスプレッションでは大文字と小文字が区別されるため、シーン内で cushions と Cushions のスペルが一貫していない場合には、次のように 2 つの除外エクスプレッションを使用する必要があります。

livingRoom*::c*; diningRoom*:*:ch*; -livingRoom*::*cushion*; -livingRoom*::*Cushion* 

エクスプレッションの順序は重要です。エクスプレッションは左から右に解釈され、以前に除去したノードを再度追加することができます。引き続き上記の例を使用して、次のエクスプレッションで、正しい cushion (すべての cushion の中で正しい cushion のみ)をコレクションに戻します。

livingRoom*::c*; diningRoom*:*:ch*; -livingRoom*::*cushion*; -livingRoom*::*Cushion*; livingRoom*::*cushion_right*

スタティック選択によってメンバーを追加する

上記のようにエクスプレッションを使用して動的に追加する代わりに、ノードを明示的に選択してそれを追加することにより静的に新しいメンバーをコレクションに追加できます。これを実行するには、アウトライナ(Outliner)からノードを中マウス ボタンでプロパティ エディタ(Property Editor)にドラッグ & ドロップします。または、アウトライナ(Outliner)でノードを選択し、プロパティ エディタ(Property Editor)追加(Add)をクリックすることもできます。

エクスプレッションと手動で追加したノードのリストを含めている場合、コレクションにはエクスプレッションに一致するノードとリストしたノードの両方が含まれます。

この方法を使用してコレクションに追加すると、ノードを再ペアレント化する際に注意が必要になります。コレクションにノードを追加し、後からそれをあるルート ノードから別のルート ノードに再ペアレント化すると、このノードがコレクションから失われる可能性があります。| は各ノードの階層を示すために使用されます。たとえば、|group1|group2|group3 は、group3 が group1 の子である group2 の子であることを示します。group3 をコレクションに追加した後、group3 を group4 の子になるように移動すると、group3 はそのコレクションのメンバーではなくなります。コレクション内で見つからないノードを特定する方法については、「コレクション内で見つからないメンバーを特定する」を参照してください。

注: オブジェクトでオーバーライドを作成して、コレクションにノードを追加することもできます。「オーバーライドを作成して、レイヤにオブジェクトを追加する」を参照してください。

既定では、コレクションのフィルタ(Collection Filters)トランスフォーム(Transforms)に設定されているため、コレクションにはトランスフォーム ノードのみが含まれます。アウトライナ(Outliner)でシェーダを選択し、プロパティ エディタ(Property Editor)追加(Add)をクリックすると、シェーダはノードのリストに表示されますが、フィルタで除外されていることを示すためにグレー表示されます。つまり、コレクションの一部とはなりません。

オブジェクトのシェーディングをオーバーライドするために、コレクションにシェーダを追加する必要はありません。これはオーバーライドの作成時に自動的に追加されます。ただし、上級ユーザの場合は、コレクションのフィルタ(Collection Filters)ドロップダウン リストからシェーダ(Shaders)メニューを選択して、これを実行することもできます。

コレクションのメンバーシップを確認する

コレクション メンバーのリストを表示するには、プロパティ エディタ(Property Editor)すべて表示(View All)をクリックします。

または、シーンおよびアウトライナ(Outliner)内のすべてのコレクション メンバーを選択するために、すべてを選択(Select All)をクリックすることもできます。

さらに、エクスプレッションによって加えられたメンバー、選択および追加によって加えられたメンバーに対し、それぞれ選択(Select)ボタンが存在します。2 つの方法のいずれかで加えられたコレクション メンバーを個別に確認するには、これらのボタンを使用します。「コレクションに属しているオブジェクトを識別する」を参照してください。

コレクションからメンバーを削除する

ドラッグ & ドロップによって追加されたメンバーを削除するには、コレクションのプロパティ エディタ(Property Editor)でノード(複数可)を右クリックし、削除(Remove)を選択します。ノードを選択して、削除(Remove)をクリックすることもできます。

エクスプレッションを使用して追加されたメンバーを削除するには、そのエクスプレッションを削除します。