Instantiator ノードを使用する¶
Instantiator ノードがターゲットとする 3D ノードまたは 3D ノードツリーの見た目だけを複製するには、Instantiator ノードを使用します。
Instantiator ノードは、ターゲットノードまたはノードのツリーへの参照を含んでいます。Kanzi が Instantiator ノードをレンダリングするとき、Instantiator ノードがターゲットとしているノードの外観をコピーします。これは、ターゲットノードへのすべての変更が常に Instantiator ノードに反映されることを意味します。例えば、Instantiator ノードを使用して反射を作成することができます。
各 Instantiator ノードはユニークな変換を持っているため、同じノードをターゲットにするために複数の Instantiator ノードを使用できます。Instantiator ノード内の他のプロパティをオーバーライドすることはできないため、すべてのインスタンスは同一です。しかし、各 Instantiator ノードは個別にレンダリングされます。例えば、これにより、異なる位置にある Instantiator ノードに対してライトが異なる影響を与えることが可能になります。
ノードの真にユニークなインスタンスを作成するには、そのノードをプレハブに変換し、そのプレハブのインスタンスを使用します。ノードプレハブの使用 を参照してください。
Instantiator ノードはレンダリングのみに影響することに注意してください。Instantiator ノードのレイアウトサイズが 0 であるため、レイアウトで使用することはできません。インスタンス化されたノードはインタラクティブではありません。
Instantiator ノードの使い方を学ぶには、チュートリアルを完了してください。チュートリアル: リフレクションを作成する を参照してください。
Instantiator ノードの作成¶
Instantiator ノードを作成するには:
Instantiator ノードを使用して複製したいコンテンツを作成します。
Node Tree Alt を押しながら右クリック で、Instantiator ノードを作成したいノードを選択し、Instantiator を選択します。
Instantiator ノードは、3Dノードでのみ作成できます。
Node Tree で Instantiator ノードを選択し、Properties で Instantiated Node プロパティを、この Instantiator ノードで複製したいノードに設定します。
Kanzi Studio はノードをインスタンス化します。
Properties で Instantiator ノードの変換を設定します。
例えば、インスタンス化されたノードをスケール、回転、位置決めするために、Render Transformation プロパティを追加して設定します。
ノードから Instantiator ノードを作成する¶
ノードから Instantiator ノードを作成するには:
Node Tree Alt を押しながら右クリック で、Instantiator ノードを表示し、Instantiate Into an Instantiator を選択するノードを指定します。
Kanzi Studio は Instantiator ノードを作成し、その Instantiated Node プロパティを選択されたノードに設定します。
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 を参照してください。