Instantiator ノードを使用する

Instantiator ノードがターゲットとする 3D ノードまたは 3D ノードツリーの見た目だけを複製するには、Instantiator ノードを使用します。

Instantiator ノードは、ターゲットノードまたはノードのツリーへの参照を含んでいます。Kanzi が Instantiator ノードをレンダリングするとき、Instantiator ノードがターゲットとしているノードの外観をコピーします。これは、ターゲットノードへのすべての変更が常に Instantiator ノードに反映されることを意味します。例えば、Instantiator ノードを使用して反射を作成することができます。

各 Instantiator ノードはユニークな変換を持っているため、同じノードをターゲットにするために複数の Instantiator ノードを使用できます。Instantiator ノード内の他のプロパティをオーバーライドすることはできないため、すべてのインスタンスは同一です。しかし、各 Instantiator ノードは個別にレンダリングされます。例えば、これにより、異なる位置にある Instantiator ノードに対してライトが異なる影響を与えることが可能になります。

ノードの真にユニークなインスタンスを作成するには、そのノードをプレハブに変換し、そのプレハブのインスタンスを使用します。ノードプレハブの使用 を参照してください。

Instantiator ノードはレンダリングのみに影響することに注意してください。Instantiator ノードのレイアウトサイズが 0 であるため、レイアウトで使用することはできません。インスタンス化されたノードはインタラクティブではありません。

Instantiator ノードの使い方を学ぶには、チュートリアルを完了してください。チュートリアル: リフレクションを作成する を参照してください。

../../_images/reflections-completed.gif

Instantiator ノードの作成

Instantiator ノードを作成するには:

  1. Instantiator ノードを使用して複製したいコンテンツを作成します。

    ../../_images/carscene-for-instantiator.png ../../_images/car-to-instantiate-in-preview.png
  2. Node Tree Alt を押しながら右クリック で、Instantiator ノードを作成したいノードを選択し、Instantiator を選択します。

    Instantiator ノードは、3Dノードでのみ作成できます。

    ../../_images/create-instantiator-node.png
  3. Node Tree で Instantiator ノードを選択し、Properties で Instantiated Node プロパティを、この Instantiator ノードで複製したいノードに設定します。

    Kanzi Studio はノードをインスタンス化します。

    ../../_images/instantiator-in-node-tree.png ../../_images/instantiator-instantiated-node.png
  4. Properties で Instantiator ノードの変換を設定します。

    例えば、インスタンス化されたノードをスケール、回転、位置決めするために、Render Transformation プロパティを追加して設定します。

    ../../_images/instantiator-render-transformation.png ../../_images/instantiator-in-preview.png

ノードから Instantiator ノードを作成する

ノードから Instantiator ノードを作成するには:

  1. Node Tree Alt を押しながら右クリック で、Instantiator ノードを表示し、Instantiate Into an Instantiator を選択するノードを指定します。

    Kanzi Studio は Instantiator ノードを作成し、その Instantiated Node プロパティを選択されたノードに設定します。

    ../../_images/instantiate-into-an-instantiator.png ../../_images/carrootnode_instance.png ../../_images/carrootnode_instance-properties.png
  2. Properties で Instantiator ノードの変換を設定します。

    例えば、インスタンス化されたノードをスケール、回転、位置決めするために、Render Transformation プロパティを追加して設定します。

APIで Instantiator ノードを使用する

Instantiator ノードを使用して反射を作成するには:

// Create an Instantiator node named Instantiator3D.
Instantiator3DSharedPtr instantiator = Instantiator3D::create(domain, "Instantiator3D");
// Set the node that you want the Instantiator node to reflect.
instantiator->setTarget(targetNode);
// To mirror the target node across the xz plane, set the scaling of the Instantiator node
// to a non-uniform value. This inverts all triangles, so you must disable the backface
// culling rendering for the Instantiator node.
instantiator->setRenderTransformation(SRTValue3D::createScale(Vector3(1.0f, -1.0f, 1.0f)));

詳細については、Instantiator3D クラスを参照してください。

Instantiator ノードプロパティタイプとメッセージ

Instantiator ノードで利用可能なプロパティタイプとメッセージのリストについては、Instantiator を参照してください。

関連項目

チュートリアル: リフレクションを作成する