Houdini 20.0 Unreal ランドスケープ

ランドスケープスプライン出力

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より大きい、または等しいです。

例: CP##マーカーで示されたコントロールポイント付きの単一カーブプリミティブ。各コントロールポイント間のセクションは、Unrealのセグメントに相当します。

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に設定します。

例: unreal_output_nameアトリビュートを使用して作成されたランドスケープスプラインアクター

World Partitionがレベルで有効になっていない場合、unreal_output_nameアトリビュートは作用せず、すべてのランドスケープスプラインがターゲットランドスケープアクターのULandscapeSplinesComponentに作成されます。

How-to: パイプラインを作成する

この例では、ランドスケープスプラインを使用してパイプラインを作成します。各コントロールポイントを、パイプラインを支えるパイロン(支柱)にします。セグメントでは、円柱状のメッシュを使用してパイプラインそのものを表現します。

コントロールポイント

この例では、各コントロールポイントでunreal_landscape_spline_control_point_mesh PointアトリビュートをStaticMesh'/Game/Meshes/Pylon.Pylon'に設定します。この Pylon は、スタティックメッシュアセットを表します。これをコントロールポイントメッシュとして設定することで、メッシュが各コントロールポイントの位置に作成されます。また、rotアトリビュートを設定してコントロールポイントの方向を制御することで、スプラインに沿った方向にすることもできます。

例: コントロールポイント名とメッシュが設定された、Houdiniのコントロールポイントアトリビュート

パイロンのスタティックメッシュは、シンプルな長方形のボックスで、上部にTopInTopOutの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つのソケット(TopInTopOut)があるので、unreal_landscape_spline_segment_connection0_mesh_socket_nameTopOutunreal_landscape_spline_segment_connection1_mesh_socket_nameTopInに設定します:

例: コントロールポイントとセグメントメッシュ付きのランドスケープスプライン。接続のソケットも適切に設定されています。

この時点で、コントロールポイントの位置と方向、コントロールポイントに使用するメッシュ、セグメントに使用するメッシュ、セグメントをコントロールポイントメッシュに接続するときに使用するメッシュソケットが設定されました。

編集レイヤー

ランドスケープスプライン出力では、スプラインの予約(Reserve for Splines)編集レイヤーの使用、編集レイヤーの作成、ランドスケープスプラインの指定した編集レイヤーへの適用がサポートされます。

Note

ターゲットランドスケープに、スプラインの予約(Reserve for Splines)に設定されたランドスケープレイヤーがある場合、アトリビュートで指定したランドスケープスプラインの編集レイヤーは無視され、常に“予約”のレイヤーが使用されます。

このパイプラインの例では、セグメントが地形と交差している領域があります:

例: 地形と交差しているランドスケープスプライン

ランドスケープスプラインで、これらの領域の地形を低くする必要があります。これを行なうには、ランドスケープに予約したスプラインレイヤーを設定し、セグメントのVertexまたはPrimitive unreal_landscape_spline_segment_lower_terrainアトリビュートを1に設定します:

例: ランドスケープスプラインは、もう地形と交差していません。スプラインは予約したレイヤーに適用され、地形が低くなっています。

予約したランドスケープスプラインレイヤーの使用は、おそらく最も非破壊のワークフローです。しかし、以下のアトリビュートを使用すると、編集レイヤーの作成をコントロールしたり、ランドスケープスプラインを編集レイヤーに適用したりできます:

アトリビュート名

アトリビュートオーナー

説明

unreal_landscape_editlayer_name

vertex, prim

スプラインを作成して適用する編集レイヤーの名前

unreal_landscape_editlayer_clear

vertex, prim

ランドスケープスプラインの変換中に初めて編集レイヤーを変更するとき、編集レイヤーをクリアすべきかどうか

unreal_landscape_editlayer_after

vertex, prim

unreal_landscape_editlayer_nameで指定された編集レイヤーが、このレイヤーの後に移動されます。

リファレンス

アトリビュート

ランドスケープスプライン出力は、Unrealでのスプラインの作成や設定に影響を与えるアトリビュートを多数サポートしています。

出力アトリビュート

このテーブルには、ランドスケープスプライン出力に影響を与える一般的なアトリビュートを載せています。

アトリビュート名

アトリビュートオーナー

説明

unreal_landscape_spline

point, vertex, prim, detail

プラグインにカーブプリミティブをランドスケープスプラインとして認識させるには、1に設定します。

unreal_landscape_spline_target_landscape

prim

ランドスケープスプラインを作成するランドスケープ。これをInputX (0, 1, …)に設定すると、HDAの入力ランドスケープをターゲットにすることができます。

コントロールポイントアトリビュート

このテーブルには、ランドスケープスプラインのコントロールポイントでサポートされるアトリビュートを載せています。

アトリビュート名

アトリビュートオーナー

説明

rot

point

コントロールポイントの回転

unreal_landscape_spline_control_point_id

point

コントロールポイントのid。有効なidは、値が0より大きい、または等しくなります。0より小さい値は、ポイントがコントロールポイントでないことを示します。

unreal_landscape_spline_control_point_lower_terrain

point

コントロールポイントの Raise Terrain プロパティ

unreal_landscape_spline_control_point_mesh

point

コントロールポイントのスタティックメッシュ

unreal_landscape_spline_control_point_mesh_material_overrideX

point

コントロールポイントのメッシュマテリアルオーバーライド

unreal_landscape_spline_control_point_mesh_scale

point

コントロールポイントのメッシュスケール

unreal_landscape_spline_control_point_paint_layer_name

point

コントロールポイントの Paint Layer Name プロパティ

unreal_landscape_spline_control_point_raise_terrain

point

コントロールポイントの Raise Terrain プロパティ

unreal_landscape_spline_end_falloff

point

コントロールポイントの End Falloff プロパティ

unreal_landscape_spline_half_width

point

コントロールポイントの Half-Width プロパティ

unreal_landscape_spline_side_falloff

point

コントロールポイントの Side Falloff プロパティ

セグメントアトリビュート

このテーブルには、ランドスケープスプラインのセグメントおよびセグメント接続でサポートされるアトリビュートを載せています。

アトリビュート名

アトリビュートオーナー

説明

unreal_landscape_editlayer_name

vertex, prim

スプラインを作成して適用する編集レイヤーの名前

unreal_landscape_editlayer_clear

vertex, prim

ランドスケープスプラインの変換中に初めて編集レイヤーを変更するとき、編集レイヤーをクリアすべきかどうか

unreal_landscape_editlayer_after

vertex, prim

unreal_landscape_editlayer_nameで指定された編集レイヤーが、このレイヤーの後に移動されます。

unreal_landscape_spline_segment_connectionX_mesh_socket_name

vertex, prim

セグメント接続0および1: セグメントコントロールポイント接続で使用するコントロールポイントのソケット名

unreal_landscape_spline_segment_connectionX_tangent_length

vertex, prim

セグメント接続0および1: セグメントの終端の接続ポイントの接線の長さ

unreal_landscape_spline_segment_lower_terrain

vertex, prim

セグメントの Raise Terrain プロパティ(スプラインの適用時、ランドスケープを高くするかどうか)

unreal_landscape_spline_segment_meshX

vertex, prim

セグメントメッシュ。最初のメッシュでXが除外され、その後1、2、3…と続きます。

unreal_landscape_spline_segment_meshX_material_overrideY

vertex, prim

セグメントメッシュのマテリアルオーバーライド

unreal_landscape_spline_segment_meshX_scale

vertex, prim

セグメントメッシュスケール

unreal_landscape_spline_segment_paint_layer_name

vertex, prim

セグメントの Paint Layer Name プロパティ(スプラインがランドスケープに適用される際にペイントされるレイヤー)

unreal_landscape_spline_segment_raise_terrain

vertex, prim

セグメントの Raise Terrain プロパティ(スプラインの適用時、ランドスケープを高くするかどうか)

ランドスケープ

はじめよう

ランドスケープスプライン

ワークフロー

ランドスケープを使用すると、プロシージャルなノードベースのワークフローを介して、Houdiniで地形や自然環境を作成したり操作することができます。その後、それをUnreal Engineに取り込んで、さらに編集、レンダリング、ベイクすることができます。Houdiniで生成されたランドスケープは、非常に詳細かつダイナミックで、複雑な地形を作成できます。

特長と機能

  • HoudiniのHeight Fieldツールを使用して、Hydro(水)、Thermal(熱)、Flow(流れ)といった侵食をシミュレートします。

このビデオは、Houdiniを使用して、ファークライ5で活用されているランドスケープ機能をいくつか紹介したものです:

  • Houdini Engine for Unrealは、ランドスケープをHeight Field、ポイント、またはメッシュとして読み込みます。

  • ランドスケープレイヤーの作成、テクスチャの作成、マテリアルの生成を行ないます。

  • Unrealからランドスケープを取り込み、Houdini Engineを使用してスタティックメッシュに変換します。

  • Houdiniのばら撒き機能

  • PDGを使用して、大規模なワールドをより小さなサイズに分割し、素早いシミュレーションやチームのコラボレーションに役立てます。

  • ランドスケープで入力と出力をエクスポーズ(アクセス可能に)して、他のHDA間でもシームレスにやり取りできるようにします。

    • 例えば、カーブで制御される川のツールを使用できます。ランドスケープがカーブに作用して、川の流れをガイドし、川のツールによってランドスケープが侵食されます。

関連情報

以下は、ランドスケープを作成する前に理解しておくべきノードおよびコンセプトです: