キューブマップ反射の作成¶
Cubemap Render Pass を使用して、3Dノードの表面に環境の動的な反射を作成します。
Cubemap Render Pass は、リフレクションプローブとして機能する特定の Camera ノードを使用します。この Camera ノードを、環境を反射させたいメッシュを表示するノードの中心に配置します。
Cubemap Render Pass は、Cubemap Render Target Texture や Cubemap Render Pass の Result Texture などのアクティブなコンポジションターゲットに対して、自身とその子レンダーパスをレンダリングします。
ノードの表面に環境を反映させるには、これらのノードが使用するマテリアルのキューブマップテクスチャとしてキューブマップコンポジションターゲットを設定します。
各 Scene ノードには、1つのリフレクションプローブを持つことができます。
キューブマップレンダーパスを使用してキューブマップ反射を作成する¶
キューブマップ反射を作成するには:
Kanzi Studio プロジェクトの Scene ノードで、以下を作成します。
環境を反映させたいメッシュを表示するノード。
例えば、ボディ、窓、ヘッドライト、リムが環境を反映する車を作成します。
反映させたいノードを取り巻く環境。
例えば、Box ノードを作成し、キューブマップテクスチャをスカイボックスとして使用します。キューブマップテクスチャをスカイボックスとして使用する を参照してください。
環境を反映させたい各ノードについて:
Node Tree で、そのノードを選択します。
マテリアルの隣にある Properties で、
をクリックしてそのマテリアルに移動し、Material Type プロパティをキューブマップ反射をサポートするマテリアルタイプに設定します。
例えば、VertexPhongTexturedCube マテリアルタイプを使用します。プロジェクトに VertexPhongTexturedCube マテリアルタイプが含まれていない場合は、Library > Materials and Textures Alt を押しながら右クリック Material Types で、VertexPhongTexturedCube を選択します。
Kanzi のデフォルトのマテリアルタイプをキューブマップ反射をサポートするように設定するには:
Library で、そのマテリアルタイプを選択します。
Properties の Preprocessor Definitions で、KANZI_SHADER_USE_REFLECTION_CUBE を 1 に設定します。
Scene ノード内のすべてのノードをレンダリングします。
Library > Rendering の中で、Alt を押しながら右クリック Render Pass Prefabs を選択し、Group Render Pass を選択して、Cubemap Reflections と名付けます。
Group Render Pass を使用すると、レンダーパスを収集して、Viewport 2D ノード内で単一のレンダーパスプレハブを参照することができます。
Node Tree で、シーンを含む Viewport 2D ノードを選択します。Properties で、Render Pass Prefab プロパティを Cubemap Reflections レンダーパスプレハブに設定します。
Kanzi を設定して、Cubemap Reflections レンダーパスプレハブを使用して Viewport 2D ノードをレンダリングします。Cubemap Reflections レンダーパスプレハブには子レンダーパスがないため、Preview にはコンテンツが表示されません。
Cubemap Reflections レンダーパスプレハブ内で、Viewport 2D ノードのコンテンツを画面にレンダリングするレンダーパスを作成します。
例えば、Default Render Pass を作成します。
Default Render Pass には、透過設定のないノードを最初にレンダリングし、次に透過設定のあるノードをレンダリングする基本的なレンダーパスのセットが含まれています。
Cubemap Render Pass を使用して、環境をキューブマップコンポジションターゲットにレンダリングします。
環境に属するノードを選択するフィルタを作成します。
例えば、Car タグを使用して、車に属するすべてのノードを含むノードにタグを付けます。Library > Rendering > Object Sources で、Car タグを除外する Tag Filter という名前の Environment を作成します。
フィルタ を参照してください。
Cubemap Reflections レンダーパスプレハブで、Cubemap Render Pass を作成します。Cubemap Render Pass で、環境を描画するレンダーパスを作成します。
たとえば、作成します:
Clear Render Pass。
このレンダーパスは、深度バッファをクリアします。
Gather Lights Render Pass。
Gather Lights Render Pass は、シーン内の3Dノードを照らすためのライトノードをノードのリストから収集することを可能にします。
Gather Lights Render Pass で、Draw Objects Render Pass を作成し、Draw Environment と名付けます。Properties で、Object Source プロパティを環境に属するノードのみを選択するフィルタに設定します。
Object Source プロパティを使用して、Draw Objects Render Pass にどのノードをレンダリングするかを指示します。
Cubemap Render Pass は環境をキューブマップ構成ターゲットに描画するため、Preview で結果を見ることができません。
キューブマップの反射をレンダリングします。
Library で、Alt を押しながら右クリック Materials and Textures を選択し、Cubemap Render Target Texture を選択します。
Cubemap Render Target Texture を使用して、Cubemap Render Pass をキューブマップテクスチャにレンダリングします。
Properties で、Width and Height プロパティを Cubemap Render Target Texture に望む寸法に設定します。
この方法で、キューブマップ反射の精度を設定します。
Library > Rendering > Render Pass Prefabs で、Cubemap Render Pass を選択します。Properties で、Composition Target プロパティを追加し、作成した Cubemap Render Target Texture に設定します。
Library > Materials and Textures > Materials で、キューブマップの反射をレンダリングしたい各マテリアルを選択します。Properties で、TextureCube プロパティを作成した Cubemap Render Target Texture に設定します。
この方法で、Kanzi を設定して、これらのマテリアルを使用するノードで Cubemap Render Pass の結果をレンダリングします。
(オプション) 各マテリアルで、そのマテリアルの外観を調整するために使用したい他のプロパティを設定します。
例えば、反射の明るさを設定するために、CubemapColor プロパティ Lightness (L) プロパティフィールドを調整します。
キューブマップの反射を配置する:
環境を反映させたいノードを含む Scene ノード内に、Camera ノードを作成し、それらのノードの中心に配置します。
このカメラを反射プローブとして使用し、周囲の球面ビューをすべての方向でキャプチャします。
Library で、Cubemap Render Pass を選択します。Properties で、Override Camera プロパティを追加し、それを作成した Camera ノードに設定します。
この方法で、Cubemap Render Pass に環境のキューブマップをキャプチャしたい位置を伝えます。
Preview では、車を移動すると、車のボディ、窓、ヘッドライト、リムが周囲の変化を反映します。
(オプション) の Cubemap Render Pass をニーズに合わせて構成します。
例えば、Kanzi がキューブマップの反射を更新する速度を設定できます。キューブマップ反射のレンダリングを複数のフレームに分散する を参照してください。
キューブマップ反射のレンダリングを複数のフレームに分散する¶
フレームごとのレンダリング作業量を減らすために、Kanzi の更新頻度を設定できます。
Cubemap Render Pass がレンダリングするコンテンツ。
キューブマップテクスチャ内の面に、Cubemap Render Pass がそのコンテンツをレンダリングします。
キューブマップ反射のレンダリングを分散するために
Library > Rendering > Render Pass Prefabs で、キューブマップ反射をレンダリングするために使用する Cubemap Render Pass を選択します。キューブマップレンダーパスを使用してキューブマップ反射を作成する を参照してください。
Properties に追加して設定します。
Render Pass > Update Rate を、Cubemap Render Pass がレンダリングするコンテンツを更新したい速度に設定します。
コンテンツを毎フレーム更新するには、1に設定します。これがデフォルトの値です。
コンテンツを隔フレームで更新するには、2に設定し、4フレームごとに更新するには、4に設定します。
コンテンツを一度だけレンダリングするには、0に設定します。
Cubemap Render Pass の Result Texture で1フレームに更新したいキューブマップフェイスの数に Face Update Rate を設定します。
Result Texture は、Cubemap Render Pass 自身とその子レンダーパスをレンダリングするキューブマップテクスチャを含んでいます。
デフォルトで、Kanzi は Update Rate プロパティで設定した速度で6つのキューブマップ面すべてを更新します。
例えば、Face Update Rate を3に設定し、Update Rate を2に設定すると、Kanzi はこのレートでキューブマップの面を更新します。
フレーム (Frame)
キューブマップの面 (Cubemap faces)
n
+x、-x、+y
n + 1
-
n + 2
-y, +z, -z
n + 3
-
n + 4
+x、-x、+y
n + 5
-
n + 6
-y, +z, -z
n + 7
-
Render Pass > Update Rate Offset をレンダリングレートをオフセットしたいフレーム数に設定します。
この方法により、複数のレンダーパスのレンダリングを異なるフレームに分散させることができます。
例えば、Update Rate Offset を 1 に設定すると、Kanzi はフレーム n + 1 で最初のキューブマップフェイスを更新します。