マテリアルの作成と割り当て

 
 
 

オブジェクトの「外観」を定義する場合の最も基本的な手順は、マテリアルとサーフェイス シェーダをオブジェクトに割り当てることです。マテリアルを 1 つまたは複数のオブジェクトに割り当てるには、いくつかの方法があります。次の操作を実行できます。

新しいマテリアルを作成してオブジェクトに割り当てる

サーフェイス シェーダがアタッチされた新しいマテリアルを作成し、即座にオブジェクトに割り当てることができます。この方法でマテリアルを作成すると、割り当て先のオブジェクトの既存のマテリアルが、作成したマテリアルに置き換えられます(オブジェクトの既存のマテリアルはオブジェクトから消えますが、削除されたわけではありません)。

新しいマテリアルを作成してオブジェクトに割り当てるには

  1. 1 つまたは複数のオブジェクトを選択します。

  2. Ctrl+7キーを押すか、[Render]ツールバーから[修正](Modify) [マテリアル](Materials)を選択して、Material Managerを開きます。

  3. Material Manager のコマンド バーで、次のいずれかを実行します。

    • [マテリアル](Materials) [新規マテリアルの作成](Create New Material)を選択するか、アイコンをクリックして、デフォルトの[Phong]シェーダに基づいた新しいマテリアルを作成します。

      または

    • [作成](Create)メニューからマテリアルを選択して、選択したシェーダ タイプ([Lambert]、[Blinn]、[Strauss]、[トゥーン]、[Phong]など)に基づいた新しいマテリアルを作成します。

    デフォルトで、新しいマテリアルには[サーフェイス]ポート、[シャドウ]ポート、[フォトン]ポートに接続されたサーフェイス シェーダ(デフォルトの[Phong]など)がアタッチされます。

  4. Material Managerのコマンドバーで[マテリアル](Materials) [選択オブジェクトにマテリアルを適用](Assign Material to Selected Objects)を選択するか、アイコンをクリックします。

[取得]>[マテリアル]を使用して新しいマテリアルを作成し、オブジェクトに割り当てるには

  1. 1 つまたは複数のオブジェクトを選択します。

  2. [Render]ツールバーから[取得](Get) [マテリアル](Material)を選択します。

  3. 表示されるメニューから、サーフェイス シェーダを 1 つ選択して新しいマテリアルに適用します。以下の 2 つの処理が行われます。

    • 選択したサーフェイス シェーダがアタッチされた新しいマテリアルが作成され、選択したオブジェクトに割り当てられます。

    • サーフェイス シェーダのプロパティ エディタが開きます。これでパラメータを編集できます。

      一般的なサーフェイス シェーダのプロパティの詳細については、「サーフェイス シェーダを操作する」を参照してください。

新しいマテリアルを割り当てずに作成する

任意のマテリアル ライブラリに新しいマテリアルを作成し、どのオブジェクトにも割り当てないでおくことができます。後から、これらのマテリアルをオブジェクトに割り当てることができます。詳細については、「オブジェクトに既存のマテリアルを割り当てる」を参照してください。

新しいマテリアルは、Material Manager または Explorer を使用して作成できます。

新しいマテリアルを作成するには

  1. Ctrl+7キーを押すか、[Render]ツールバーから[修正](Modify) [マテリアル](Materials)を選択して、Material Managerを開きます。

  2. シェーダ ボールが表示されているシェルフで、該当するタブをクリックして必要なマテリアル ライブラリを選択します。

  3. Material Manager のコマンド バーで、次のいずれかを実行します。

    • [マテリアル](Materials) [新規マテリアルの作成](Create New Material)を選択するか、アイコンをクリックして、デフォルトの[Phong]シェーダに基づいた新しいマテリアルを作成します。

      または

    • [作成](Create)メニューからマテリアルを選択して、選択したシェーダ タイプ([Lambert]、[Blinn]、[Strauss]、[トゥーン]、[Phong]など)に基づいた新しいマテリアルを作成します。

    デフォルトで、新しいマテリアルには[サーフェイス]ポート、[シャドウ]ポート、[フォトン]ポートに接続されたサーフェイス シェーダ(デフォルトの[Phong]など)がアタッチされます。

Preset Manager を使用して新しいマテリアルを作成するには

新しいマテリアルを簡単にライブラリに追加するには、マテリアルの Preset Manager を使用します。

  1. Material Manager を開きます。

  2. [マテリアル](Materials) [プリセットマテリアルのブラウザを開く](Open Preset Materials Browser)を選択するか、アイコンをクリックして、Preset Managerを開きます。

    デフォルトでは、Preset Manager にユーザ パスの現在の Data¥DSPresets¥Materials フォルダが開きます。

  3. Preset Manager のマテリアル プリセットを Material Manager の目的のライブラリにドラッグします。ライブラリに新しいマテリアルが作成されます。

    ヒント:マテリアル プリセットを Preset Manager から Render Tree にドラッグすることもできます。これによって、オブジェクトの現在の[Material]ノードに接続せずに、マテリアルのシェーダ ツリーが追加されます。

    1

    Preset Manager を開きます。

    2

    Preset Manager でマテリアル プリセットを選択します。

    3

    プリセットを現在のライブラリにドラッグし、新しいマテリアルを作成します。

Explorer で新しいマテリアルを作成するには

  1. Explorer を開き、スコープを[マテリアル](Materials)に設定します。

  2. マテリアル ライブラリのアイコンを右クリックし、[マテリアルの作成](Create Material)を選択して、デフォルトの[Phong]シェーダに基づいた新しいマテリアルを作成します。

オブジェクトに既存のマテリアルを割り当てる

ライブラリにあるマテリアルは、シーン内のさまざまなエレメントに割り当てることができます。マテリアルは、オブジェクト、クラスタ、階層、グループ、パーティションなど、マテリアルを受け付けることが可能な任意の対象に割り当てることができます。

マテリアルを割り当てるには、いくつかの方法があります。

Material Manager を使用してマテリアルを割り当てる

Material Manager を使用すると、簡単にマテリアル ライブラリにアクセスし、ライブラリのマテリアルをシーン内のエレメントに割り当てることができます。Material Manager を使用してマテリアルを割り当てる場合、数多くの方法があります。

マテリアルをオブジェクトに割り当てるには

  1. Ctrl+7キーを押すか、[Render]ツールバーから[修正](Modify) [マテリアル](Materials)を選択して、Material Managerを開きます。続けて、シェーダボールが表示されているシェルフで、該当するタブをクリックして必要なライブラリを選択します。

  2. マテリアルを割り当てるオブジェクトを 1 つまたは複数選択します。

  3. 割り当てるマテリアルを含むシェーダボールをクリックし、選択したオブジェクトのいずれかにドラッグ アンド ドロップします。

    選択されていないオブジェクトにシェーダボールをドラッグアンドドロップすることもできます。この場合、一度に 1 つのオブジェクトに適用されます。

または

  1. マテリアルを割り当てるオブジェクトを 1 つまたは複数選択します。

  2. 割り当てるマテリアルのシェーダボールを右クリックし、[選択に適用](Assign to Selection)をクリックします。

または

  1. マテリアルを割り当てるオブジェクトを 1 つまたは複数選択します。

  2. Material Managerのコマンドバーで[マテリアル](Materials)[選択オブジェクトにマテリアルを適用](Assign Material to Selected Objects)を選択するか、アイコンをクリックします。

または

  1. マテリアルを割り当てるオブジェクトを 1 つまたは複数選択します。

  2. [マテリアル](Materials) [プリセットマテリアルのブラウザを開く](Open Preset Materials Browser)を選択するか、アイコンをクリックして、Preset Managerを開きます。

  3. Preset Manager のマテリアル プリセットをシーン内のオブジェクトにドラッグ アンド ドロップします。現在のマテリアル ライブラリに新しいマテリアルが作成されます。

Render Tree からマテリアルを割り当てる

Render Tree を使用して、既存のオブジェクトから簡単にマテリアルを割り当てることができます。

  1. マテリアルを割り当てるオブジェクトを 1 つまたは複数選択します。

  2. 任意の Render Tree ビューを開きます。

  3. マテリアル ノードを右クリックし、[選択に適用](Assign to Selection)を選択します。

Explorer を使用してマテリアルを割り当てる

マテリアルを Explorer から割り当てるには、割り当てるマテリアルを選択して、割り当て先にドラッグ アンド ドロップするだけです。マテリアルを 1 つのオブジェクトに割り当てる場合は、この方法が最も便利です。

ヒント:Explorer のスコープを[マテリアル]に設定すると、未使用のものを含め、各ライブラリ内のすべてのマテリアルが表示されます。

マテリアルの適用コマンドの使用

[マテリアルの適用]コマンドは、マテリアルを適用するときの選択対象に応じて、動作が異なります。

  • [Render]ツールバーから[取得](Get) [マテリアル](Material) [マテリアルの適用](Assign Material)を選択します。次の操作を行います。

[何も選択されていない](nothing)場合:

  1. マテリアルを選択するか、他のオブジェクトに割り当てるマテリアルを持つオブジェクトを選択します。

  2. 続けて、マテリアルを割り当てるオブジェクトを 1 つまたは複数選択します。

  3. 右クリックして選択操作を終了します。マテリアルがオブジェクトに割り当てられます。

1 つまたは複数の[オブジェクト](objects)が選択されている場合:

  1. マテリアルを選択するか、選択したオブジェクトに割り当てるマテリアルを持つオブジェクトを選択します。

  2. 右クリックして選択操作を終了します。マテリアルが、選択したオブジェクトに割り当てられます。

[マテリアル](material)が選択されている場合:

  1. マテリアルを割り当てるオブジェクトを 1 つまたは複数選択します。

  2. 右クリックして選択操作を終了します。マテリアルが、選択したオブジェクトに割り当てられます。

[コンポーネント](components)(サブサーフェイス、ポリゴン、ポリゴン クラスタなど)が選択されている場合:

  1. マテリアルを選択するか、選択したコンポーネントに割り当てるマテリアルを持つオブジェクト(クラスタやサブサーフェイスなど)を選択します。

    選択セッション中もクラスタ選択フィルタがアクティブになっているため、コンポーネントを選択して、そのマテリアルを選択対象に割り当てることができます。

  2. 右クリックして選択操作を終了します。マテリアルが、選択したコンポーネントに割り当てられます。

    クラスタではなく、コンポーネントを選択した場合は、クラスタが自動的に作成されます。

1 つの[マテリアル](material and)および 1 つまたは複数の[オブジェクト](objects)が選択されている場合:

  • 選択したマテリアルが、選択したオブジェクトに割り当てられます。

階層へのマテリアルの割り当て

階層にマテリアルを割り当てるには、このセクションの最初(「マテリアルの作成と割り当て」)に記載されている方法を使用してマテリアルを階層の親オブジェクトに割り当てます。階層の子は、マテリアルがローカルに割り当てられていない場合、親のマテリアルを継承します。

たとえば、テーブルのようなオブジェクトでは、テーブル トップとテーブルの脚の色は同じにしたいでしょう。親(テーブルトップ)のカラーを指定するマテリアルを割り当てると、マテリアルの定義はその子(テーブルの脚)にプロパゲート(適用)されます。

階層に割り当てられたマテリアルは、その他のプロパティと同じプロパゲーション規則に従います。プロパゲーションの規則については、「プロパティのプロパゲーション」を参照してください。

マテリアルを階層に割り当てる場合、マテリアルをオブジェクトに割り当てるための方法はどれでもできますが、異なる点が 1 つあります。それは、オブジェクトを選択するときにマウスの中央ボタンをクリックしてオブジェクトをブランチ選択することです。

階層に対してマテリアルをローカルに設定する

[マテリアルをローカルに設定]コマンドを使用して、階層のすべてのマテリアルを、その階層に対してローカルにすることができます。[マテリアルをローカルに設定]コマンドは、ブランチ選択されている場合と同様に任意の選択を処理し、すべてのマテリアルがブランチの階層に対してローカルになるように、必要に応じてマテリアルをコピーします。コピーは階層内のオブジェクトに割り当てられ、オリジナルのマテリアルは引き続き階層外のオブジェクトに割り当てられたままになります。

マテリアルを階層に対してローカルにするには

  1. ローカルにするマテリアルが属する階層の親オブジェクトを選択またはブランチ選択します。

  2. [Render]ツールバーから[取得](Get) [マテリアル](Material) [マテリアルをローカルに設定](MakeLocal Material)を選択します。

階層内のメンバーが共有していたマテリアルは、その階層内で共有されるようになります。しかし、もともとそのマテリアルを共有していたメンバーのうち、その階層の外にあるメンバーからはマテリアルが共有されなくなります。

上に示すスケマティック ビューには、立方体の子として円柱、球、トーラスが表示されています。立方体はマテリアルをグリッドと共有し、円柱はマテリアルを円錐と共有しています。球とトーラスはマテリアルを共有しています。

この立方体を選択して、[マテリアルをローカルに設定]コマンドを適用すると、立方体の階層内のオブジェクトと階層外のオブジェクト間で共有しているマテリアルがコピーされます。コピーは階層内のオブジェクトに割り当てられます。つまり、「im_exotic_frog」マテリアルのコピーは立方体に、「im_dino」マテリアルのコピーは円柱に割り当てられます。球とトーラスで共有しているマテリアルは、階層外のオブジェクトでは使用されていないため、影響を受けません。

その結果、立方体の階層内のオブジェクトで使用されているすべてのマテリアルは、階層に対してローカルになります。

選択したポリゴンおよびポリゴン クラスタにマテリアルを割り当てる

マテリアルは、選択したポリゴンにローカルに割り当てられるほか、ポリゴン メッシュ オブジェクトのポリゴン クラスタに割り当てられます。後者の場合、選択したクラスタが自動的に作成されます。クラスタのローカル マテリアルは、常にオブジェクト全体に割り当てられたマテリアルよりも優先されます。

A

グローバル マテリアルが割り当てられたポリゴン メッシュ オブジェクト

B

特定のポリゴンが選択されたオブジェクト

C

選択したポリゴンに割り当てられたローカル マテリアル

Explorer では、クラスタのマテリアルは、オブジェクトのノードの下に直接表示されず、クラスタのノードの下に表示されます。アクセスするには、オブジェクトの[ポリゴン メッシュ](Polygon Mesh) [クラスタ](Clusters)([クラスタ名](name of cluster))ノードを展開します。

A

クラスタのマテリアル。

B

オブジェクトのマテリアル。

マテリアルは、クラスタから消去されると、割り当て先のマテリアルまたはオブジェクトによって継承されているマテリアルを継承します。

マテリアルをポリゴンまたはポリゴンクラスタに割り当てるには

  1. 次のいずれかの操作を実行します。

    • 1 つまたは複数のポリゴンを選択します(ポリゴンを矩形選択ツールで選択するには[Y]を押し、ポリゴンをレイキャスト選択ツールで選択するには[U]を押します)。選択されたポリゴンがハイライトされます。

      または

    • 既存のポリゴンクラスタを選択します(ポリゴン選択フィルタのいずれかを有効にしている場合は、+キーを押してクラスタを選択します)。

  2. Material Manager を使用するなど、「マテリアルの作成と割り当て」に記載されているその他の方法を使用します。

    クラスタではなく、ポリゴンを選択した場合は、選択したポリゴンからクラスタが自動的に作成されます。

    注:Explorer からマテリアルを選択したポリゴンにドラッグ アンド ドロップして、マテリアルを割り当てることはできません。

オーバーラップしているポリゴン クラスタ上のマテリアルを管理する

マテリアルをポリゴン クラスタに適用するのは簡単な作業ですが、クラスタがオーバーラップする場合には手の込んだ作業になることがあります。ところが、このような場合にも、Softimage にはオーバーラップしたポリゴン クラスタ上のマテリアルを処理する機能があります。別のクラスタにオーバーラップするクラスタまたはポリゴン選択領域にマテリアルを割り当てると、次のようなダイアログ ボックスが表示されます。

オプションごとに結果が変わります。たとえば、次の図のグリッドから作業を開始し、選択したクラスタにサーフェイス シェーダを適用してみましょう。

左の図に示すグリッドには 2 つのクラスタがあります。選択されていないクラスタにはローカル マテリアル(赤)が適用されていますが、選択されているクラスタには適用されていません。

  • [はい](Yes)を選択すると、[選択した](selected)クラスタからオーバーラップ領域が削除されます(下図のようになります)。

    選択したクラスタからオーバーラップを消去するように指定し、[選択した](selected)クラスタにローカル マテリアルを適用すると、この図のようになります。クラスタがオーバーラップしているポリゴンが、[選択した](selected)クラスタから消去されます。

  • [いいえ](No)を選択すると、[既存の](existing)クラスタからオーバーラップが消去されます。

    [既存の](existing)クラスタからオーバーラップを削除するように指定して、選択したクラスタにローカル マテリアルを適用すると、この図のようになります。クラスタがオーバーラップしているポリゴンは、[既存の](existing)クラスタから消去されます。

  • [キャンセル](Cancel)を選択すると、クラスタのオーバーラップが許可されます。

    オーバーラップを許可するように指定して、選択したクラスタにローカル マテリアルを適用すると、この図のようになります。最後に適用されたマテリアル(この例では青色)が表示されます。

クラスタのオーバーラップのデフォルト動作の設定

オーバーラップしているクラスタにマテリアルを適用するたびに入力を要求されるのを避けたい場合は、前のセクションに示した動作のいずれかをデフォルトとして設定できます。

  1. [Preferences]ビューを開き(メインメニューから[ファイル](File) [設定](Preferences)を選択します)、Explorer で[Rendering]プリファレンスをクリックします。

    [Rendering Preferences]プロパティ エディタが、右ペイン内に開きます。

  2. [その他](Misc)オプションで、[ローカル マテリアル オーバーラップ時](When Local Materials Overlap)オプションを目的の動作に設定します。

オーバーラップしているクラスタの表示順序を変更する

作成した各クラスタには、[並び替え順序](sort_order)値が割り当てられます。ローカル マテリアルが重なっているクラスタの場合は、この値によってそれらを描画する順序が制御されます。クラスタの[並び替え順序](sort_order)の値が低いほど、描画される順序が先になります。このため、[並び替え順序](sort_order)値の最も高いクラスタは、オーバーラップしているクラスタの最上部に常に描画されます。

注:[並び替え順序](sort_order)値がクラスタに割り当てられないバージョンの Softimage を使用して作成されたシーンを開くと、シーン内のすべてのクラスタには、ファイルからロードされた順序に基づいて[並び替え順序](sort_order)値が割り当てられます。

新規に作成したクラスタには、シーン内で最も高い[並び替え順序](sort_order)値が自動的に指定されるため、デフォルトでは最後に作成されたクラスタが最上部に描画されます。ただし、クラスタの[並び替え順序](sort_order)値を変更すると、そのクラスタの上下に重なっているクラスタを基準に、クラスタの描画順序を変更できます。

ここで示されているグリッドでは、3 つのポリゴン クラスタがオーバーラップしており、それぞれに固有のマテリアルがあります。また、各クラスタは一意な[並び替え順序](sort_order)値を持ちます。つまり、赤色のクラスタは [100]、青色のクラスタは [102]、緑色のクラスタは [104] です。

緑色のクラスタの[並び替え順序](sort_order)値を[99]に変更すると、このクラスタは赤色のクラスタと青色のクラスタの下に描画されます。ただし、青色のクラスタは、[並び替え順序](sort_order)値が最も高いため、赤色のクラスタの上に描画されます。

クラスタの[並び替え順序]値を変更するには

  1. クラスタを選択し、[Enter]キーを押してプロパティ エディタを開きます。

  2. クラスタの[並び替え順序](sort_order)値を変更します。

    これで、値を変更したクラスタは[並び替え順序](sort_order)値の高いクラスタの下に描画され、[並び替え順序](sort_order)値の低いクラスタの上に描画されます。

    注:同じ[並び替え順序](sort_order)値を複数のクラスタに割り当てると、クラスタはシーン ファイルの内部の順序に従って描画されます。マテリアルを表示するクラスタを取り違えないようにするには、各クラスタに一意な[並び替え順序](sort_order)値を指定してください。