On this page |
Warning
この機能は実験段階であり、変更される可能性があります。
プラグインは現在のところ、Houdiniのポリゴンカーブとしてのランドスケープスプライン出力を実験的にサポートしています。
ランドスケープスプラインとしてのHoudiniカーブ ¶
Unrealのランドスケープスプラインは、コントロールポイントとセグメントで構成されています。Houdiniのカーブプリミティブは、Unrealの1つまたは複数のセグメントに相当します。
プリミティブをランドスケープスプラインとして認識するには、unreal_landscape_spline
アトリビュートを1
に設定します。
unreal_landscape_spline_target_landscape
プリミティブアトリビュートは、ランドスケープスプラインを作成するためのターゲットランドスケープを設定します。詳細は、出力アトリビュートを参照してください。
コントロールポイントとセグメント ¶
デフォルトでは、カーブプリミティブのすべてのポイントは、コントロールポイントとして扱われます。カーブポイントを繰り返し処理すると、ポイントがコントロールポイントの場合、そのプリミティブの最終ポイントまで、ポイントとその前のコントロールポイントの間にセグメントが作成されます。
また、ポイントのサブセットのみをコントロールポイントとして扱うよう指定することもできます。これを行なうには、コントロールポイントとして使用したいポイントのunreal_landscape_spline_control_point_id
Pointアトリビュートを、0
以上の値に設定します。
ポイントをコントロールポイントから除外するには、そのidを-1
(または0より小さい値)に設定します。2つ以上のポイントが同じidを持つ場合、それらはUnrealで同じコントロールポイントとして扱われます。Unrealでコントロールポイントが作成される際、場所、方向、その他のプロパティは、そのidで処理された最初のポイントから設定されます。
個別のカーブプリミティブを使用して、ランドスケープスプラインを表現することができ、各カーブプリミティブがUnrealのセグメントを表します。これを行なうには、プリミティブ毎にポイントを2つのみにするか、プリミティブの最初と最後のポイントのみに有効なidを設定します。個別のプリミティブは、同じコントロールポイントidを持つ1つのポイントを共有している場合、1つのコントロールポイントによってセグメントとして接続することができます。
ランドスケープスプライン内のコントロールポイントの数は、Unrealでの問題が原因で1000個までに制限されています。 膨大な数のコントロールポイントは、Unrealではオープンワールドレベルを使用する時にメモリ不足になってクラッシュしてしまいます。
まとめると、HoudiniのカーブプリミティブからのポイントがUnrealでコントロールポイントとして作成されるのは、以下の場合です:
-
カーブプリミティブの最初または最後のポイントです。
-
unreal_landscape_spline_control_point_id
Pointアトリビュートが、ジオメトリに存在しません。 -
ポイントの
unreal_landscape_spline_control_point_id
アトリビュート値が、0より大きい、または等しいです。
Note
コントロールポイントの場所と回転(rot
)がUnrealのコントロールポイントに適用されますが、セグメントはカーブプリミティブとは完全には一致しません。様々な要因が、補間されたセグメントのスプラインポイントをUnrealで計算する方法に影響を及ぼします。Houdiniカーブからランドスケープスプラインへの変換は、必要なプロパティを使用してUnrealでコントロールポイントやセグメントを作成および設定するためのメカニズムとして考えるのが最適です。Houdiniカーブプリミティブのジオメトリを、Unrealで作成されたランドスケープスプラインに一致させようとするプロセスとしては考えないようにしてください。
HoudiniのジオメトリとUnrealのランドスケープスプライン間で大きな違いが生じる可能性があるケースとしては、セグメント接続にメッシュソケットを使用する場合などが挙げられます。詳細は、例をご覧ください。
World Partition ¶
ランドスケープスプライン出力は、World Partitionを使用するかどうかに関係なく、サポートされています。World Partitionを使用する際、ランドスケープスプラインはUnrealでALandscapeSplineActors
として作成され、ターゲットランドスケープにアタッチされます。unreal_output_name
アトリビュートは、出力ALandscapeSplineActor
の名前を設定することができます。
複数のアクターを作成し、特定のアクターにどのセグメント/スプラインが作成されるかを制御したい場合は、それに応じてunreal_output_name
Primitiveアトリビュートを設定します。例えば、道路を表現するスプラインと川を表現するスプラインがある場合、道路と川を個別のプリミティブとして作成し、道路のプリミティブではunreal_output_name
アトリビュートをRoads
、川のプリミティブではRivers
に設定します。
World Partitionがレベルで有効になっていない場合、unreal_output_name
アトリビュートは作用せず、すべてのランドスケープスプラインがターゲットランドスケープアクターのULandscapeSplinesComponent
に作成されます。
How-to: パイプラインを作成する ¶
この例では、ランドスケープスプラインを使用してパイプラインを作成します。各コントロールポイントを、パイプラインを支えるパイロン(支柱)にします。セグメントでは、円柱状のメッシュを使用してパイプラインそのものを表現します。
コントロールポイント ¶
この例では、各コントロールポイントでunreal_landscape_spline_control_point_mesh
PointアトリビュートをStaticMesh'/Game/Meshes/Pylon.Pylon'
に設定します。この Pylon は、スタティックメッシュアセットを表します。これをコントロールポイントメッシュとして設定することで、メッシュが各コントロールポイントの位置に作成されます。また、rot
アトリビュートを設定してコントロールポイントの方向を制御することで、スプラインに沿った方向にすることもできます。
パイロンのスタティックメッシュは、シンプルな長方形のボックスで、上部にTopIn
とTopOut
の2つのソケットが付いています。これらのソケットは、後でセグメント接続を設定するのに使用します(セグメント接続セクションを参照してください)。
コントロールポイントには、メッシュスケールやマテリアルオーバーライドの設定など、追加のPointアトリビュートが多数あります。詳細は、コントロールポイントアトリビュートセクションを参照してください。
Unrealのランドスケープスプラインでは、各コントロールポイントにパイロンメッシュが表示され、コントロールポイント間のセグメントは緑色のリボンとしてレンダリングされます。
デフォルトでは、Unrealは、セグメントおよびコントロールポイントメッシュ接続に使用するソケットを自動的に決定します(コントロールポイントメッシュにソケットがある場合)。これは、セグメント接続セクションのソケット選択で変更できます。
セグメント ¶
セグメントの設定では、多数のアトリビュートがサポートされています。カーブプリミティブ毎に複数のセグメントを使用するには、Vertexアトリビュートを設定して、セグメントプロパティを設定します。プリミティブ毎に1つのセグメントを使用する際は、Primitiveアトリビュートを設定して、セグメントを設定します。
パイプラインの例では、セグメントに使用するメッシュを設定します。このためには、各セグメントの最初の頂点(コントロールポイントに対応する各頂点)のunreal_landscape_spline_segment_mesh
アトリビュートを、StaticMesh'/Game/Meshes/Shape_Tube.Shape_Tube'
に設定します。
追加メッシュの設定、マテリアルオーバーライド、セグメントで地形を高く/低くするかどうかなど、セグメントの設定でサポートされるアトリビュートの詳細については、セグメントアトリビュートセクションを参照してください。
この時点で、サンプルにはパイロンと円柱状のメッシュがあります。しかし、セグメントとコントロールポイントの接続の方向が正確ではありません。
セグメント接続 ¶
各セグメント接続に、アトリビュートを介して、接線の長さとコントロールポイントメッシュソケット(接続の位置と方向のため)を設定することができます。これらのアトリビュートは、セグメントの最初の頂点、またはセグメントを表すプリミティブのいずれかに設定できます。
各セグメントには2つのセグメント接続があり、接続0
はセグメントの始端、接続1
はセグメントの終端です。unreal_landscape_spline_segment_connectionX_mesh_socket_name
アトリビュートは、接続Xのコントロールポイントメッシュのソケット名を設定します。
パイロンの例では、メッシュの上部に2つのソケット(TopIn
とTopOut
)があるので、unreal_landscape_spline_segment_connection0_mesh_socket_name
をTopOut
、unreal_landscape_spline_segment_connection1_mesh_socket_name
をTopIn
に設定します:
この時点で、コントロールポイントの位置と方向、コントロールポイントに使用するメッシュ、セグメントに使用するメッシュ、セグメントをコントロールポイントメッシュに接続するときに使用するメッシュソケットが設定されました。
編集レイヤー ¶
ランドスケープスプライン出力では、スプラインの予約(Reserve for Splines)編集レイヤーの使用、編集レイヤーの作成、ランドスケープスプラインの指定した編集レイヤーへの適用がサポートされます。
Note
ターゲットランドスケープに、スプラインの予約(Reserve for Splines)に設定されたランドスケープレイヤーがある場合、アトリビュートで指定したランドスケープスプラインの編集レイヤーは無視され、常に“予約”のレイヤーが使用されます。
このパイプラインの例では、セグメントが地形と交差している領域があります:
ランドスケープスプラインで、これらの領域の地形を低くする必要があります。これを行なうには、ランドスケープに予約したスプラインレイヤーを設定し、セグメントのVertexまたはPrimitive unreal_landscape_spline_segment_lower_terrain
アトリビュートを1
に設定します:
予約したランドスケープスプラインレイヤーの使用は、おそらく最も非破壊のワークフローです。しかし、以下のアトリビュートを使用すると、編集レイヤーの作成をコントロールしたり、ランドスケープスプラインを編集レイヤーに適用したりできます:
アトリビュート名 |
アトリビュートオーナー |
説明 |
---|---|---|
|
vertex, prim |
スプラインを作成して適用する編集レイヤーの名前 |
|
vertex, prim |
ランドスケープスプラインの変換中に初めて編集レイヤーを変更するとき、編集レイヤーをクリアすべきかどうか |
|
vertex, prim |
|
リファレンス ¶
アトリビュート ¶
ランドスケープスプライン出力は、Unrealでのスプラインの作成や設定に影響を与えるアトリビュートを多数サポートしています。
出力アトリビュート ¶
このテーブルには、ランドスケープスプライン出力に影響を与える一般的なアトリビュートを載せています。
アトリビュート名 |
アトリビュートオーナー |
説明 |
---|---|---|
|
point, vertex, prim, detail |
プラグインにカーブプリミティブをランドスケープスプラインとして認識させるには、 |
|
prim |
ランドスケープスプラインを作成するランドスケープ。これを |
コントロールポイントアトリビュート ¶
このテーブルには、ランドスケープスプラインのコントロールポイントでサポートされるアトリビュートを載せています。
アトリビュート名 |
アトリビュートオーナー |
説明 |
---|---|---|
|
point |
コントロールポイントの回転 |
|
point |
コントロールポイントのid。有効なidは、値が0より大きい、または等しくなります。 |
|
point |
コントロールポイントの Raise Terrain プロパティ |
|
point |
コントロールポイントのスタティックメッシュ |
|
point |
コントロールポイントのメッシュマテリアルオーバーライド |
|
point |
コントロールポイントのメッシュスケール |
|
point |
コントロールポイントの Paint Layer Name プロパティ |
|
point |
コントロールポイントの Raise Terrain プロパティ |
|
point |
コントロールポイントの End Falloff プロパティ |
|
point |
コントロールポイントの Half-Width プロパティ |
|
point |
コントロールポイントの Side Falloff プロパティ |
セグメントアトリビュート ¶
このテーブルには、ランドスケープスプラインのセグメントおよびセグメント接続でサポートされるアトリビュートを載せています。
アトリビュート名 |
アトリビュートオーナー |
説明 |
---|---|---|
|
vertex, prim |
スプラインを作成して適用する編集レイヤーの名前 |
|
vertex, prim |
ランドスケープスプラインの変換中に初めて編集レイヤーを変更するとき、編集レイヤーをクリアすべきかどうか |
|
vertex, prim |
|
|
vertex, prim |
セグメント接続 |
|
vertex, prim |
セグメント接続 |
|
vertex, prim |
セグメントの Raise Terrain プロパティ(スプラインの適用時、ランドスケープを高くするかどうか) |
|
vertex, prim |
セグメントメッシュ。最初のメッシュでXが除外され、その後1、2、3…と続きます。 |
|
vertex, prim |
セグメントメッシュのマテリアルオーバーライド |
|
vertex, prim |
セグメントメッシュスケール |
|
vertex, prim |
セグメントの Paint Layer Name プロパティ(スプラインがランドスケープに適用される際にペイントされるレイヤー) |
|
vertex, prim |
セグメントの Raise Terrain プロパティ(スプラインの適用時、ランドスケープを高くするかどうか) |