レンダリングのためのマテリアル設定

Kanzi では、これらのレンダーパスを使用してレンダリング用のマテリアルを設定できます。

  • Draw Objects With Material レンダーパスを使用すると、Viewport 2D ノード内のノードを特定のマテリアルでレンダリングできます。

    例えば、Draw Objects With Material レンダーパスを使用して、さまざまなレンダリングモードを作成できます。ナイトビジョンモードを作成する を参照してください。

    ../../_images/draw-objects-with-material-render-pass.svg
  • Material Setup レンダーパスを使用するとマテリアルのプロパティを設定でき、そのマテリアルを使用する以降のすべてのレンダリングで、このレンダーパスで設定したプロパティ値が使用されます。

    例えば、Material Setup レンダーパスを使用して、Composition Target レンダーパスの出力をマテリアルのテクスチャとして設定できます。無限ミラーの作成 を参照してください。

    ../../_images/material-setup-render-pass.svg

ナイトビジョンモードを作成する

Draw Objects With Material レンダーパスを使用すると、Viewport 2D ノード下のすべてのノードを特定のマテリアルでレンダリングできます。例えば、ナイトビジョンモードを作成できます。

ナイトビジョンモードを作成するには、以下のようにします。

  1. ナイトビジョンモードでレンダリングしたいコンテンツを作成します。

    例えば、Factory Content から Car を使用します。

    Factory Content アセットを使用する を参照してください。

    ../../_images/day-vision-scene.png
  2. ナイトビジョンモードでコンテンツをレンダリングするために必要なレンダーパスを作成して適用します。

    1. Library > Rendering Alt を押しながら右クリック Render Pass Prefabs で Group レンダーパスを選択し、Night Vision という名前を付けます。

      この Group レンダーパスプレハブを使用して、コンテンツにナイトビジョンモードを適用するレンダーパスをまとめます。

      ../../_images/create-group-render-pass.png ../../_images/night-vision-render-pass.png
    2. Node Tree で、ナイトビジョンモードでレンダリングしたいコンテンツを持つ Viewport 2D ノードを選択し、Properties で Render Pass Prefab プロパティを Night Vision レンダーパスプレハブに設定します。

      この方法で、Kanzi を設定して、Viewport 2D ノードを Night Vision レンダーパスプレハブを使用してレンダリングします。Night Vision レンダーパスプレハブには子レンダーパスがないため、Preview はコンテンツを表示しません。

      ../../_images/set-scene-render-pass-to-night-vision.png
    3. Night Vision レンダーパスプレハブで作成:

      1. Clear レンダーパス

        このレンダーパスは、深度バッファをクリアします。

      2. Gather Lights レンダーパス

        Gather Lights レンダーパスを使用すると、シーン内の 3D ノードを照らすためのライトノードをノードのリストから収集できます。

      3. Gather Lights レンダーパスで、Draw Objects With Material レンダーパスを作成します。

      Draw Objects With Material レンダーパスを使用すると、Viewport 2D ノード下のすべてのノードを、Draw Objects With Material レンダーパスで設定した特定のマテリアルでレンダリングできます。

      Draw Objects With Material レンダーパスの Material プロパティをまだ設定していないため、Kanzi は、Night Vision レンダーパスを使用する Viewport 2D ノード内のコンテンツをデフォルトのマテリアルでレンダリングします。

      ../../_images/night-vision-render-passes.png ../../_images/draw-objects-with-material-render-pass-default-properties.png
  3. ナイトビジョンモードで使用したいマテリアルを作成します。

    例えば、Library > Materials and Textures > Material Types Alt を押しながら右クリック VertexPhong で、Material を選択し、マテリアルに Night Vision Material と名前を付けます。

    この方法で、VertexPhong マテリアルタイプを使用するマテリアルを作成します。

    ヒント

    プロジェクトに VertexPhong マテリアルタイプが含まれていない場合、Library > Materials and Textures Alt を押しながら右クリック Material Types で、VertexPhong を選択します。

    ../../_images/create-material-from-vertexphong-material-type.png
  4. Library > Rendering > Render Pass Prefabs で Draw Objects With Material レンダーパスを選択し、Properties で Material プロパティを前のステップで作成したマテリアルに設定します。

    Kanzi は、あなたが作成したマテリアルを使用して、Night Vision レンダーパスプレハブを使用する Viewport 2D ノード内のすべてのノードをレンダリングします。

    ../../_images/draw-objects-with-material-render-pass-in-library.png ../../_images/draw-objects-with-material-render-pass-night-vision.png ../../_images/night-vision-with-default-vertexphong.png
  5. Properties で、Material プロパティの隣にある image0 をクリックして、作成したマテリアルのプロパティを開き、望む外観を実現するようにマテリアルのプロパティを設定します。

    ../../_images/navigate-to-night-vision-material.png ../../_images/night-vision-material.png ../../_images/night-vision-with-night-vision-material.png
  6. Library > Rendering > Render Pass Prefabs で Clear レンダーパスを選択し、Properties で Clear Color 0 プロパティを追加して、Lightness (L) プロパティフィールドを 0 に設定します。

    この方法で、ナイトビジョンモードでシーンの背景を黒にするために、カラーバッファを黒でクリアします。

    ../../_images/clear-render-pass-with-opaque-black.png ../../_images/night-vision-with-black-background.png
  7. 昼間モードと夜間モードの切り替えを制御します。

    例えば、State Manager を作成し、次のための状態を定義します。

    • デイモードは、Viewport 2D ノードで Render Pass Prefab プロパティを DefaultRenderPassPrefab に設定します。

    • ナイトビジョンモードは、Viewport 2D ノードで Render Pass Prefab プロパティを Night Vision レンダーパスプレハブに設定します。

    ステートマネージャーの作成 を参照してください。

    作成したステート間を切り替えると、Kanzi が通常のレンダリングとナイトビジョンモードでのレンダリングを交互に行います。

    ../../_images/night-vision.gif

無限ミラーの作成

Material Setup レンダーパスを使用するとマテリアルのプロパティを設定でき、そのマテリアルを使用する以降のすべてのレンダリングで、このレンダーパスで設定したプロパティ値が使用されます。

例えば、Material Setup レンダーパスを使用して、インフィニティミラーエフェクトを作成できます。

無限ミラーを作成するには:

  1. Node Tree で作成:

    • ミラーリングしたい3Dコンテンツを含む Viewport 2D ノード。

      例えば、Factory Content から Car を使用します。

      Factory Content アセットを使用する を参照してください。

    • ミラーとして使用するノード。

      例えば、ミラーリングしたいコンテンツと同じ Scene ノード内に、Plane ノードを作成します。

    ../../_images/scene-graph-for-infinity-mirror.png ../../_images/preview-scene-with-empty-mirror.png
  2. 鏡に3Dコンテンツをレンダリングするために使用するマテリアルを作成します。

    1. テクスチャ付きマテリアルを作成します。

      例えば、Library > Materials and Textures > Material Types Alt を押しながら右クリック Textured で、Material を選択し、マテリアルに Mirror Material と名前を付けます。

      ../../_images/create-material-from-textured-material-type.png
    2. Node Tree でミラーとして使用したいノードを選択し、Properties で Mesh Material プロパティを前のステップで作成したマテリアルに設定します。

      ../../_images/mirror-with-the-material-set.png ../../_images/preview-mirror-with-default-texture.png
  3. 3Dコンテンツをミラーにレンダリングします。

    1. Library で、Alt を押しながら右クリック Rendering を選択し、Compose and Blit Pass を選択します。

      Compose and Blit Pass には、特定のマテリアルを使用して Composition Target レンダーパスまたはテクスチャをスクリーンにブリットできるようにするレンダーパス構造が含まれています。

      Compose and Blit Pass レンダーパスプリセットには、次のレンダーパスが含まれています。

      • Composition Target レンダーパスは、自身とその子孫のレンダーパスを 1 つ以上のコンポジションターゲットにレンダリングします。

        • Clear レンダーパスは、現在のレンダーコンテキストのバッファの一部またはすべてをクリアします。

          デフォルトでは、Compose and Blit Pass 内の Clear レンダーパスは、最初のカラーバッファーを透明な黒でクリアし、デプスバッファーを値 1 でクリアします。

          たとえば、最初のカラーバッファーを別の色でクリアするには、Clear Color 0 プロパティを、Kanzi が Composition Target レンダーパスにレンダリングするコンテンツの背景色として使用する色に設定します。

        • Gather Lights レンダーパスは、Compose and Blit Pass を使用するように設定した Viewport 2D ノード内の Light ノードを収集し、それらを子の Draw Objects レンダーパスに渡します。

          • Draw Objects という名前の Draw Objects レンダーパスでは、特定のノードのリストをレンダリングするように Camera ノードを設定したり、それらのノードをフィルタリングしたり、フラスタムカリングを制御したりできます。Draw Objects レンダーパスは、デフォルトでは、最も近い祖先の Gather Lights レンダーパスが提供するライトを使用してノードをレンダリングします。デフォルトでは、Draw Objects レンダーパスはデフォルトの Camera ノードを使用して Viewport 2D ノード内のすべてのノードをレンダリングします。

      • Blit レンダーパスは、特定のマテリアルを使用して、1 つ以上の単一テクスチャまたはキューブマップテクスチャを画面にブリットします。

        デフォルトでは、この Blit レンダーパスは、Composition Target レンダーパスがコンテンツをレンダリングする最初のカラーテクスチャを画面に描画します。

        ../../_images/compose-and-blit-pass-create.png ../../_images/compose-and-blit-pass-library.png
    2. Node Tree で、ミラーにレンダリングしたいコンテンツを持つ Viewport 2D ノードを選択し、Properties で Render Pass Prefab プロパティを Compose and Blit Pass に設定します。

      Kanzi を設定して、Compose and Blit Pass を使用して Viewport 2D ノードをレンダリングします。

      ../../_images/scene-graph-for-infinity-mirror.png ../../_images/render-pass-prefab-set-to-compose-and-blit-pass.png
    3. Library の Compose and Blit Pass で 2 つ目の Composition Target レンダーパスを作成し、Blit レンダーパスをその Composition Target レンダーパスにドラッグします。

      2 つ目の Composition Target レンダーパスを使用して、1 つ目の Composition Target レンダーパスをコンポジションターゲットにレンダリングします。

      同じレンダーパスへの書き込みと読み取りを同時に行うとレンダリングの動作が未定義になるため、Composition Target レンダーパスを 2 つ作成します。

      ../../_images/blit-render-pass-for-infinity-mirror-moved.png
    4. Compose and Blit Pass で Default レンダーパスを作成します。

      Default レンダーパスには、最初に不透明ノードをレンダリングし、次に透明ノードをレンダリングする基本的な一連のレンダーパスが含まれています。

      このレンダーパスを使用して、Viewport 2D ノードのコンテンツを画面にレンダリングします。

      ../../_images/default-render-pass-for-inifinity-mirror.png
    5. Compose and Blit Pass で Material Setup レンダーパスを作成し、Properties で Material プロパティをこの手順の前半で作成したマテリアルに設定します。

      たとえば、それを Mirror Material に設定します。

      ../../_images/material-setup-render-pass.png ../../_images/material-setup-render-pass-material.png
    6. Properties で Texture プロパティを追加し、Library から 2 つ目の Composition Target レンダーパスを Properties ウィンドウにドラッグして、Material Setup レンダーパスの Texture プロパティにドロップします。

      ここでは、作成したマテリアルの Texture プロパティの値を設定し、Kanzi が Compose and Blit Pass を使用してコンテンツをレンダリングするときにその値を使用するようにします。これにより、Mirror Material を使用するノードに Composition Target render pass 2 をレンダリングするように Kanzi を設定します。

      ../../_images/material-setup-render-pass-properties.png
    7. Library で Compose and Blit Pass > Composition Target レンダーパス > Clear レンダーパスを選択し、Properties で Clear Color 0 プロパティを、ミラー内のシーンの背景色として使用する色に設定します。

      ../../_images/clear-render-pass-with-clear-color-l-162.png

Kanzi は、ミラー内で Viewport 2D ノードの内容を再帰的にレンダリングします。

../../_images/preview-infinity-mirror-completed.png

関連項目

レンダリング

キューブマップ反射の作成

マテリアルを使用する (Using materials)