オブジェクトのシェーディングをオーバーライド

オブジェクトのシェーディングをオーバーライドするには、次の 2 つの方法があります。

この機能は Maya のシェーダとサードパーティのシェーダの両方に適用されます。

シェーダのコレクションの作成

アトリビュート値や接続などのシェーダのアトリビュートをオーバーライドするには、まずシェーダのコレクションを作成する必要があります。これを実行するには、3 つの方法のいずれかを使用します。

  1. 追加するシェーダを含むエクスプレッションを宣言します。

    エクスプレッションを使用してメンバーを追加するには」を参照してください。

  2. アウトライナ(Outliner)またはハイパーシェード(Hypershade)からシェーダを選択し、プロパティ エディタ(Property Editor)追加(Add)をクリックします。また、これらのエディタからプロパティ エディタ(Property Editor)にドラッグ アンド ドロップすることもできます。
  3. グループまたは親ノードを選択し、階層を含む(Include Hierarchy)を有効にして、シェーダ(Shaders)コレクション フィルタを使用します。

    ノード タイプごとにコレクション メンバーを追加します

シーン内の各オブジェクトに割り当てられたシェーダを特定する

アウトライナ(Outliner) (ウィンドウ > アウトライナ(Window > Outliner))の表示 > 割り当てられたマテリアル(Display > Assigned Materials)オプションを有効にして、シーン内の各オブジェクトに割り当てられたシェーダを表示します。

オブジェクトにフェース単位のシェーダが割り当てられている場合は、オブジェクトに割り当てられたすべてのシェーダがリスト表示され、マテリアル(Materials)という見出しの下にグループ化されます。「シーン内の各オブジェクトに割り当てられたシェーダを特定する」を参照してください。

ヒント:

また、アウトライナ(Outliner)レンダリング設定フィルタ(Render Setup Filter)を有効にすると、コレクションのメンバーであるシェーダを特定できます。「アウトライナ(Outliner)でレンダリング設定メンバーのみをフィルタおよび表示する」を参照してください。

用途例

オブジェクトに割り当てられたマテリアルをオーバーライドする

3 つの窓のあるシーンがある場合、エクスプレッションを使用して同じコレクションに 3 つの窓をすべて動的に追加することができます。たとえば、すべての窓の名前に文字 window が含まれる場合、エクスプレッションで *window* と入力すると、コレクションにこれらの窓が含まれます。その後、コレクションでマテリアル オーバーライドを作成すると、元のマテリアルに新しいマテリアルをオーバーライドできます。「コレクション内のオブジェクトに適用されたマテリアルをオーバーライドする」を参照してください。

シーンに新しい建物を追加した場合、その窓の名前にも window という文字が含まれていれば、新しい窓がコレクションに含まれるようにエクスプレッションを再適用し、マテリアルのオーバーライドを適用できます。「シーンが更新されたときにレンダリング設定を動的に更新する」を参照してください。

ヒント: これにより、新しいマテリアルを新しい窓に個別に適用する必要がなくなります。

シェーダのアトリビュートをオーバーライドする

例 1:

100 個のオブジェクトが配置された 1 つのシーンがあります。各オブジェクトには異なるシェーダが適用されていますが、各シェーダを 10% 明るくする必要がある場合は、次のように実行できます。

  1. コレクションを作成し、エクスプレッションを使用してコレクションにシェーダを含めます。

    たとえば、シェーダに lizard1_skinlizard2_skin のように名前が付けられている場合は、エクスプレッションに lizard*_skin を使用して、コレクションにトカゲの皮のシェーダをすべて含めることができます。

  2. 白熱光(Incandescence)アトリビュートをオーバーライドします。

    コレクションを選択して、オーバーライドを追加(Add Override)ドロップダウン リストから相対(Relative)を選択し、いずれかのシェーダから白熱光(Incandescence)アトリビュートをプロパティ エディタ(Property Editor)に中マウス ボタンでドラッグ アンド ドロップします。

    プロパティ エディタ(Property Editor)で白熱光(Incandescence)アトリビュートを調整すると、コレクションに含まれるすべてのシェーダが明るくなります。

  3. ヒント:

    これにより、それぞれのシェーダを個別に調整する手間が省けます。

例 2:

100 個のキャラクタが配置されたシーンがあります。キャラクタはすべて T シャツを着ており、T シャツには異なるシェーダが割り当てられていますが、これらすべての T シャツに新しいテクスチャをマップする場合は、次のように実行できます。

  1. コレクションを作成し、エクスプレッションを使用してコレクションにシェーダを含めます。たとえば、シェーダに char1_shirtchar2_shirt のように名前が付けられている場合は、エクスプレッションに char*_shirt を使用して、コレクションに T シャツのシェーダをすべて含めることができます。

  2. カラー(Color)アトリビュートをオーバーライドします。コレクションに接続のオーバーライド(Connection Override)を作成し、いずれかのシェーダからカラー(Color)アトリビュートをプロパティ エディタ(Property Editor)に中マウス ボタンでドラッグ アンド ドロップします。

    プロパティ エディタ(Property Editor)のオーバーライド(Override )アトリビュートの横にあるボタンをクリックして新しいテクスチャに接続します。

    接続のオーバーライドに関する詳細については、「サーフェス シェーダ上のアトリビュートの接続をオーバーライドする」を参照してください。