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

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

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

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

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

オブジェクトをコレクションに追加したり、ノードをコレクションに追加することができます。たとえば、シェーディング ノードやテクスチャ ノードなどです。ノード タイプに関する詳細については、「ノード タイプ」を参照してください。

レンダー レイヤには 1 つ以上のコレクションを作成できます。「レンダー レイヤを作成する」を参照してください。

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

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

コレクションを作成する

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

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

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

同一のオブジェクトを複数のコレクションに追加できます。

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

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

エクスプレッションでは大文字と小文字が区別されます。たとえば、*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 つ目のエクスプレッションは、ネストされた 2 つのネームスペースを持つノードに一致します。最初のネームスペースが livingRoom_substances で、2 番目のネームスペースは何でもかまいませんが、ノード名が c で始まる必要があります。次に例を挙げます。

  • livingRoom_substances:chairB_v08:chairB
  • livingRoom_substances:coffeeTable_v08:coffeeTable
ヒント: ネームスペースを使用すると、エクスプレッションを使用して、簡単にコレクションに追加できます。そのため、たとえばオブジェクトを参照する場合など、シーンを設定する場合に、同じネームスペースに同様のオブジェクトを参照して、これらのオブジェクトをそのネームスペースを使用して 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:couchB と livingRoom_substances:chairB_v08:chairB を含めることができます。

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

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

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

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

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

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

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

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

コレクションへの追加のために階層を含む(Include Hierarchy)が必要な場合、エクスプレッションを使用した除外は階層内のノードではサポートされていません。

たとえば、エクスプレッションとして myGr* を宣言し、階層を含む(Include Hierarchy)を有効にして myGroup ノードとその子をコレクションに追加して、pCylinder1 が myGroup の子の場合、myGr* -pC* を使用してコレクションから pCube1 を除外することはできません。

回避策: 除外するノードを別のコレクションに追加してオーバーライドを作成し、表示を無効にします。ただし、この方法はパフォーマンスに影響する場合があります。

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

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

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

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

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

ルート ノードの子をトラバースしてコレクションに追加する

階層を含む(Include Hierarchy)オプションを有効にして、グループまたは親ノードの子をトラバースします。グループまたは親ノードをコレクションに追加すると、親とその子の両方がコレクションに追加されます。この機能をコレクション フィルタ(Collection Filters)と組み合わせて使用することで、選択したメンバーをコレクションに容易に追加できます。「ノード タイプによるコレクション メンバーの追加」を参照してください。

この機能はシェーダをコレクションに追加するために非常に役立ちます。ビューポートで単純にキャラクタを選択してから、コレクションのプロパティ エディタ(Property Editor)で追加(Add)をクリックしてシェーダ アトリビュートをオーバーライドできます。「シェーダのコレクションの作成」を参照してください。

注:

コレクションにオーバーライドが適用されている場合、このオーバーライドはフィルタ タイプに一致する親ノードのすべての子ノードに適用されます。

コレクションに属するノードを特定するために簡単な方法の 1 つは、アウトライナ(Outliner)レンダリング設定フィルタ(Render Setup Filter) (表示 > レンダリング設定フィルタ(Display > Render Setup Filter))を有効にしてから、選択された内部レイヤ(Inside Selected Layers)などの使用可能なフィルタ オプションから選択することです。コレクションを選択すると、アウトライナ(Outliner)が合理化されてコレクション メンバーのみが表示されます。

親ノードを追加する場合に、ルート レベルでエクスプレッションを宣言すると、処理時間が増加する場合があるため、お勧めしません。エクスプレッションを宣言する精度(ノードの階層を示すために | を使用する。例: 単に |Set|* とするのではなく、|Set|Building|* とする)は、計算時間を短縮することに役立ちます。

階層を含む(Include Hierarchy)は、手動で個々のノードを選択しなくても簡単にコレクションを事前入力できる強力なツールです。ただし、これはノードをトラバースする能力を持つため、処理時間が長くなり、シーンのパフォーマンスが低下する可能性があります。多数のノードを使用したシーンがあり、コレクション設定時にこのオプションが必要でない場合、エクスプレッションの宣言または静的なノード追加の前に、まずこのオプションを無効にします。

一方、コレクションの設定に階層を含む(Include Hierarchy)が必要である場合は、このオプションを有効にする前に、最初にエクスプレッションの入力を終え、ノードの選択および追加を行うことをお勧めします。

特定のノード タイプのみを含めるためにコレクションを合理化する

コレクションのプロパティ エディタ(Property Editor)コレクションのフィルタ(Collection Filters)機能を使用して、コレクションに特定のノード タイプのみを含めることができます。たとえば、エクスプレッション apple* を使用してコレクションに追加する場合に、名前に apple という文字が含まれている、トランスフォーム ノードだけをコレクションに含め、シェイプ ノードとシェーダは除外することができます。詳細については、「ノード タイプによるコレクション メンバーの追加」を参照してください。

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

シーンやアウトライナ(Outliner)内のコレクション メンバーを選択するには、プロパティ エディタ(Property Editor)選択(Select)をクリックして、コレクションのメンバーを確認します。エクスプレッションによって追加されたメンバー、選択および追加によるメンバーに対し、それぞれの選択(Select)ボタンが存在します。「コレクションに属しているオブジェクトを識別する」を参照してください。

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

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

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