デカールのレンダリング

Z ファイティングを起こさずに 3D オブジェクトの表面にデカールをレンダリングするには、Pipeline State レンダーパスを使用します。Pipeline State レンダーパスによってレンダリングされる要素に適用するポリゴン深度オフセットを設定できます。

デカールをレンダリングするには、

  1. デカールをレンダリングしたい表面上に3Dコンテンツを作成します。

    例えば、Node Tree で Plane ノードを作成します。

    ../../_images/wall-plane-in-node-tree.png ../../_images/wall-in-preview.png
  2. デカールとしてレンダリングしたいコンテンツを作成します。

    例えば、前のステップで作成した Plane ノードで、Plane ノードを作成し、それに Decal という名前を付け、テクスチャを表示するように設定します。

    Preview では、ノード間のZファイティングを見ることができます。

    ../../_images/decal-in-node-tree.png ../../_images/decal-properties.png ../../_images/decal-z-fighting.png
  3. デカールとしてレンダリングしたいノードにタグを付けます。ノードにタグを付ける を参照してください。

    例えば、Decal ノードにタグ Decal を付けます。

  4. デカールとしてレンダリングしたいノードを選択する Tag Filter を作成し、デカールとしてレンダリングしたいノード以外のすべてのノードを選択する Tag Filter を作成します。Tag Filter の使用 を参照してください。

    ../../_images/decal-tag-filter.png ../../_images/wall-tag-filter.png
  5. レンダーパスを使用して、Zファイティングなしでコンテンツとデカールをレンダリングします。

    たとえば、Default レンダーパスプリセットを変更して使用し、コンテンツとデカールをレンダリングするには:

    1. Library で Alt を押しながら右クリック Rendering を選択し、Default レンダーパスプリセットを選択します。Kanzi Studio レンダーパスプリセットを使用する を参照してください。

      ../../_images/create-default-render-pass.png
    2. Default レンダーパスプレハブを使用するには、レンダリングしたい 3D コンテンツとデカールを含む Viewport 2D ノードを選択し、Properties で Render Pass Prefab プロパティを Default レンダーパスに設定します。

      ../../_images/decal-viewport-2d.png ../../_images/render-pass-prefab-set-to-default-render-pass.png
    3. Library の Default レンダーパスプレハブで Draw Objects Opaque レンダーパスを選択し、Properties で Objects Source プロパティを、デカールとしてレンダリングしたいノード以外のすべてのノードを選択する Tag Filter に設定します。

      この Draw Objects レンダーパスを、デカールノードを除く Viewport 2D ノード内のすべてのノードをレンダリングするように設定します。

      ../../_images/draw-objects-opaque-in-library.png ../../_images/draw-wall-properties.png
    4. Default レンダーパスプレハブで Draw Objects Transparent レンダーパスを選択し、Properties で Objects Source プロパティを、デカールとしてレンダリングしたいノードを選択する Tag Filter に設定します。

      この Draw Objects レンダーパスを、デカールノードのみをレンダリングするように設定します。

      ../../_images/draw-objects-transparent-in-library.png ../../_images/draw-decal-properties.png
    5. Default レンダーパス > Gather Lights レンダーパスで Pipeline State レンダーパスを作成し、デカールノードをレンダリングする Draw Objects レンダーパスを Pipeline State レンダーパスにドラッグします。

      ../../_images/pipeline-state-render-pass-for-decal.png ../../_images/drag-draw-decal.png
    6. Pipeline State レンダーパスを選択し、Properties で Polygon Depth Offset プロパティを追加して、そのフィールドを目的のレンダリング結果が得られる値に設定します。

      • Derivate Multiplier は、各ピクセルの深度変化の微分の乗数を設定します。

      • Constant Multiplier は、ターゲットプラットフォームに依存する深さの最小測定単位を乗算します。

      Kanzi は通常、負の深度オフセットを持つポリゴンをカメラに近い位置に表示します。

      ../../_images/pipeline-state-render-pass-in-library.png ../../_images/polygon-depth-offset-property.png ../../_images/decal-in-preview.png

関連項目

レンダリング

メッシュの使用

タグの使用

Tag Filter の使用

Kanzi Studio レンダーパスプリセットを使用する