On this page

Houdini Engine for Unrealは、ランドスケープの入力および出力の両方をサポートしています。 また、ランドスケープをWorld Compositionシステムに出力することもできます。

Note

現在のところ、Houdini Engineプラグインはマテリアル/ペイントランドスケープレイヤーに加え、 ランドスケープ編集レイヤー をサポートするようになりました。

入力

ランドスケープは、“World Input”を使用してHoudiniにインポートでき、ランドスケープをレベルから選択することができます。

ランドスケープの高さおよびレイヤーデータは、HoudiniではHeight Fieldと見なされます(ワールド入力でオプションを選択した場合は、選択に応じてポイントクラウドまたはメッシュ)。

ランドスケープをHeight Fieldとしてエクスポートすると、すべてのランドスケープレイヤーはHeightfieldノードでマスクになります。入力のランドスケープのタグはPrimitiveアトリビュートとしてインポートされ、接頭辞はunreal_uproperty_tag_、その後にタグの名前が続きます。これらのアトリビュートは、Height FieldをUnrealに再度出力する際、インポートされたタブを再作成します。

詳細は、ランドスケープ入力を参照してください。

出力

ランドスケープは、出力ノードにHeight Fieldプリミティブが含まれている場合、HDAによって生成することができます。出力内の各Height Fieldプリミティブは、プラグインによってランドスケープに変換されます。そのheightプリミティブは、ランドスケープジオメトリと、その他すべてのHeight Fieldプリミティブ(mask、mesa、cliffs)を ターゲットレイヤー として制御します。

詳細は、ランドスケープ出力を参照してください。

Unrealランドスケープレイヤー

Unrealは、Landscapeシステムで2種類のレイヤーを使用します:

  • ターゲットレイヤーは、ランドスケープの様々なプロパティを制御します。これらは、Paintレイヤー、Visibilityレイヤー、Sculpt(またはheight)レイヤーです。

  • 編集レイヤーは、様々なランドスケープレイヤーを、ユーザが構築可能なユーザ制御レイヤーに分割します。

    Note

    編集レイヤーは、スカルプトモードでのみ機能します。現在のところ、ペイント可能編集レイヤーはサポートされていません。

Houdini Engineプラグインは、クック時に編集レイヤーをフル活用して、Unreal Editorで表示可能な一時ランドスケープデータを構築します。旧バージョンのHoudini Engineプラグインでは、クック時に一時的なランドスケープアクターを使用しましたが、World Partitionを使用できないため、現在はサポートされていません。

クック後、プラグインはクック時に見つかったデータ向けに 編集レイヤー を生成します。 ベイク中、これらの一時的なレイヤーが削除され、最終レイヤーが生成されます。 ベイクされた編集レイヤー名は、unreal_landscape_editlayer_nameを使用して指定することができます。

各ターゲットレイヤーの名前は、Houdiniの各プリミティブの名前から直接取得されます。heightはheightレイヤーを指定するために使用され、visibilityはvisibilityレイヤーを制御し、他のレイヤーはpaintレイヤーとして見なされます。

Note

エディタで穴を表示するには、Opacityマスクとして Landscape Visibility Mask ノードを使用するランドスケープマテリアルを使用する必要があります。

Unrealは、すべてのランドスケープのLayer Info Objectをファイルに保存する必要があります。デフォルトでは、生成されたランドスケープのレイヤーは、コンテンツブラウザの HoudiniEngine/Temp フォルダに保存されます。レベルを保存する際、必ずこれらのランドスケープレイヤーアセットも保存するようにしてください。

既存のランドスケープのLayer Info Objectを指定/割り当てるには、unreal_landscape_layer_info文字列アトリビュートの値を、既存のレイヤー情報アセットの参照に設定します。

編集レイヤーをロックおよびロック解除する

デフォルトで、プラグインはロックされた編集レイヤーには書き込まず、クックおよびベイク後に変更された編集レイヤーをロック解除のままにします。

アトリビュートunreal_landscape_write_locked_layerが存在する場合、1に設定すると、プラグインはロックされたレイヤーに書き込みを行ないます。

アトリビュートunreal_landscape_lock_layerが存在する場合、1に設定すると、プラグインは編集されたレイヤーを処理後にロックします。

単一のレイヤーに対して、両方のアトリビュートを指定することができます。

ランドスケープを作成または変更する

デフォルトでは、Houdini Engineプラグインは、HDA内の各出力を、作成される独自のランドスケープとして処理します。プラグインは、既存のランドスケープを変更することもできます。これは、HDA出力の各プリミティブのアトリビュートによって制御されます:

unreal_landscape_output_mode0に設定すると、新しいランドスケープが生成されます。既存のランドスケープで編集レイヤーを変更するには、1に設定します。

両モードともにターゲットランドスケープアクターの名前は、unreal_output_nameを使用して指定できます。既存のランドスケープを変更する際、特別な名前Input<N>を使用して、出力が、HDAに<N>番目の入力として送信されるように指定できます。これが特に便利なのは、Houdiniを使用して既存のランドスケープを変更する場合です。デフォルトの名前は、Landscapeです。

Heightデータの変換

Unrealはランドスケープに16ビットint型を使用し、Houdiniは32ビットfloat型を使用して高さの値を表現しているため、データを変換する必要があります。このため、Height Fieldからランドスケープを作成するとき、精度が少し下がります。

デフォルトでは、Houdini Engineによって作成されたランドスケープは、使用可能な16ビット範囲の3/4を変換に使用します。これにより、Unrealで、最小/最大値を超えてランドスケープをスカルプトできるようになります。

データ変換に最大精度を使用したい場合は、 Geometry Marshalling セクションの Marshalling Landscapes Use Full Resolution 設定をオンにします。例えば、4 kmの高さのランドスケープの精度は、デフォルトで8.13 cm(Z軸で)になり、そのオプションがオンの場合は6.10 cmの精度になります。

Geometry MarshallingUse default Unreal Scaling オプションをオンにすると、プラグイン設定でデフォルトのUnreal変換値を使用することもできます。 この場合、変換中に精度が落ちる可能性があり、Height Fieldの値が高すぎるとクリッピングされることもあります。この結果、Z軸に“標準の”スケール係数を持つランドスケープが作成されます。

Height Fieldデータをランドスケープに変換する際、unreal_landscape_layer_minおよびunreal_landscape_layer_max Floatアトリビュートを追加することで、変換に使用する最小値および最大値を指定できます。これは、高さデータに加え、ランドスケープレイヤーに変換されるあらゆるマスクで機能します。これが便利なのは、タイル化されたランドスケープの出力時、すべてのタイルが同じように変換されるようにしたい場合です。

ターゲットレイヤーは、Houdiniの32ビットfloat型からUnrealの8ビット符号なしint型に変換されます。値は、Houdiniの(最小, 最大)からUEの(0, 255)に変換されます。

デフォルトでは、Height Fieldマスクはウェイトがブレンドされたランドスケープレイヤーに変換されます。Height Fieldマスクの一部をウェイトがブレンドされていないレイヤーとしてUnrealにエクスポートしたい場合、Primitive Stringアトリビュートをunreal_landscape_layer_nonweightblendedという名前でHeight Fieldに追加する必要があります。このアトリビュート値を、スペース区切りのマスクの名前に設定します(例: mask water debris)。

または、それぞれのHeight Fieldマスクはunreal_landscape_layer_noweightblendという名前のPrimitive Intアトリビュートを持てるため、それを使用してNo Weight Blendプロパティをオフ(0)またはオン(1)に明示的に設定することもできます。

Note

unreal_landscape_layer_noweightblendunreal_landscape_layer_nonweightblendedよりも優先されます。

ターゲットレイヤーのデータ変換

Unrealは、ターゲット(ペイントと可視性)レイヤーを8ビット符号なしの値として格納します。 Houdini Volumeレイヤー(マスク)は、自動的にUnrealで必要な範囲に変換され、0から1の範囲に収まるはずです。

デフォルトでは、0から1の範囲外の値はクランプされます。 しかし、Houdini内でレイヤー上のunreal_landscape_layer_normalizeアトリビュートを1に設定すると、このプラグインは必要な範囲に収まるようにレイヤーの値を正規化します。 マイナスの値は0に設定されます。

ランドスケープのサイズ

Unreal Engineでは、ランドスケープが特定のサイズである必要があります。ランドスケープはLOD/最適化のために、セクションとコンポーネントに分割されるためです。推奨されるサイズは以下の通りです:

  • 8129 x 8129

  • 4033 x 4033

  • 2017 x 2017

  • 1009 x 1009

  • 505 x 505

  • 253 x 253

  • 127 x 127

Height Fieldデータがこれらの推奨サイズのいずれとも一致しない場合、Houdini Engineはデータを自動的に再サンプルし、生成されたランドスケープがサイズ要件に合うようにします。

この場合、Height Fieldをタイルに分割する際、不要な変換が行なわれるため、問題が生じる可能性があります。また、標準以外のサイズを使用すると、必要以上のコンポーネントが使用されることになり、パフォーマンスの大幅な低下を招きます。生成されるタイルのボリュームサイズが、Epic社がランドスケープテクニカルガイドで推奨しているサイズと一致するよう、確認することをお勧めします。

クック時、生成されたランドスケープのトランスフォームは自動的にセットアップされるため、Unrealでの寸法、緯度、スケール、位置はHoudiniと同じになります。

ランドスケープをUnrealにインポートする際、プラグインが自動的にSection SizeおよびSetions Per Componentの値を選択します。しかし、これらは、unreal_landscape_section_sizeおよびunreal_landscape_sections_per_componentアトリビュートを使用して設定することもできます。両方のアトリビュートを設定する必要があり、片方しか設定されていない場合は無視されます。両方が設定されている場合、プラグインはランドスケープのサイズ変更を試みないため、ランドスケープのサイズがそのまま使用されます。

パラメータとタグ

Height Fieldにunreal_uproperty_tag_X Primitiveアトリビュートがある場合、これらのアトリビュートの値は結果のランドスケープアクターのタグに使用されます。

Note

Heightfield Erode といった時間依存のノードを使用している場合、時間を適切に設定するために、その後に必ずTimeShiftノードを使用します。プラグインでは、HDAが使用するフレームを設定することができません。TimeShiftノードのフレームパラメータはデフォルト値が$Fに設定されているため、そのキーフレームを削除してください。Houdini Engineはフレーム値を1に設定しているため、CTRL)を使用するか、 Channels and Keyframes コンテキストメニューで Remove Keyframe を選択します。

Height Fieldにunreal_uproperty_X Detailアトリビュートがある場合、タイルアクターおよび共有ランドスケープアクターに適用されます。Height Fieldにunreal_uproperty_X PointまたはPrimitiveアトリビュートがある場合、それぞれのランドスケープタイルアクターのみに適用されます。Point/Primitiveアトリビュートは、Houdiniで_heightfield_プリミティブ上にある必要があります。heightfieldでないプリミティブでのUPropertyアトリビュートは無視されます。

一般的なワークフロー

ランドスケープをトランスフォームする

ランドスケープは、HoudiniおよびUnreal Editorでトランスフォームすることができます。ランドスケープアクターは、親アクターに対して相対的にトランスフォームされます。

Note

HoudiniからのHeight Fieldの_translation_はサポートされていますが、Houdiniからのheightfield _rotation_はサポートされていません。

タイル化されたランドスケープ

Height Field Tile Split SOP ノードを使用して、Height FieldをHoudiniでタイルに分割できますデフォルトでは、各ランドスケープのタイルは単独のランドスケープとしてUEにインポートされます。旧バージョンのプラグインとは異なり、タイルのターゲットはランドスケープストリーミングプロキシではなく、ランドスケープアクターである必要があります

詳細は、出力アトリビュートを参照してください。

ランドスケープ

はじめよう

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

ワークフロー

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

特長と機能

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

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

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

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

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

  • Houdiniのばら撒き機能

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

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

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

関連情報

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