LoginSignup
2
2

More than 1 year has passed since last update.

Houdini Engine経由でHoudiniのHeight FieldをUnreal EngineのLandscapeにする

Posted at

HoudiniのHeight Fieldで地形を生成し、Houdini Engineを使用してUnreal EngineのLandscapeとして読み込んでみます。

各ツールの使用しているバージョンは次のとおりです。

  • Houdini: 19.5.349
  • Houdini Engine for Unreal: 19.5.349
  • Unreal Engine: 5.0.3

この記事ではHoudini Engine for Unrealを使用しますが、セットアップの方法については特に解説しません。

HoudiniでHeight Fieldを作成する

ネットワーク全体は次のようになります。このネットワークをHoudini Digital Asset(HDA)として出力します。

地形の作成

今回は地形の生成自体が本題ではないので、シンプルなHeight Fieldを作成します。HeightField Noiseノードで大まかな地形を作成し、HeightField Distort by Noiseノードで地形にディテールを追加します。HeightField Erodeノードで地形らしさを追加します。

レイヤーの作成

Unreal EngineのLandscape Materialで使用するためのレイヤーを作成します。今回はgrass(草地)レイヤーとrock(岩場)レイヤーを作成します。Houdini側ではレイヤーを作成しませんが、grassでもrockでもない箇所は地面(ground)になります。

草地レイヤー

HeightField Mask by Occlusionノードでオクルージョンが小さい箇所のマスクを生成し、HeightField Blurノードで境界を滑らかにします。生成したmaskHeightField Copy Layergrassという名前のレイヤーにコピーします。作成したgrassレイヤーは次のようになります。

岩場レイヤー

rockレイヤーはHeightField Mask by FeatureノードのSlopeを用いて生成し、grassレイヤーと同じようにHeightField Copy Layerノードを用いてコピーします。作成したrockレイヤーは次のようになります。

ビジュアライゼーション

Unreal Engineへのエクスポートには不要ですが、作成したレイヤーを確認するためにHeightField Visualizeノードで色付けします。

色付けしたした結果、次のようになります。

不要なレイヤーの削除

HeightField Erodeノードで種々のレイヤーが作成されますが、Unreal Engine側では不要なのでDeleteノードで削除します。この操作は必ずしも必要ではありませんが、その場合はUnreal Engineで読み込んださいにLandscapeのレイヤーに不要なレイヤーも表示されます。

Non Weight Blended Layerの設定

通常、LandscapeのHDAをUnreal Engineに読み込むとレイヤーはWeight Blended Layerとして読み込まれますが、今回は他のレイヤーの重み付けに影響を受けたくないのでNon Weight Blended Layerとして読み込まれるようにします。そのためにunreal_landscape_layer_nonweightblendedattributeを設定します。

Unreal EngineでLandscapeを生成する

Houdiniから出力したHDAをUnreal Engineで読み込み、レベルに配置します。Landscapeが生成され、grassrockのレイヤーがNon Weight Blended Layerとして存在することが確認できます。

Landscape Materialを作成する

HDAから生成したLandscapeに適用するLandscape Materialを以下のように作成します。Groundレイヤーは最下層の地面になるレイヤー、GrassRockはHoudiniで生成したgrassrockのレイヤーに対応します。

今回は地面→草地→岩場という順でオーバーレイされるように地形を塗りたいので、Landscape Layer BlendノードのBlend TypeはすべてLB Alpha Blendにします。

作成したLandscape MaterialをLandscapeに適用します。GroundレイヤーのLandscape Layerオブジェクトが存在しないので、Non Weighted Blended Layerとして作成し、右クリックから「レイヤーを塗りつぶす」ですべて塗りつぶします。

完成

HoudiniのHeight FieldをUnreal EngineのLandscapeとして読み込むことができました。
ue_hda_with_material_2_2.png

参考

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2