On this page |
このワークフローでは、Houdiniでランドスケープをセットアップし、それをUnrealにインポートする方法を説明します。この例では、崖のある山のランドスケープを作成します。
このワークフローで学ぶ重要な点:
-
Houdiniランドスケープの生成
-
Height Fieldの作成と編集
-
Heightfield Flow Field SOPと Merge Packed SOPを使用したシミュレーション
-
マスクの使用
-
Unreal Engineで編集できるようにHDAにパラメータをエクスポーズ(アクセス可能にする)
-
HDAとUnreal Engineの両方にマテリアルアトリビュートをセットアップ
基本的なランドスケープを作成する ¶
-
Geometry SOPを作成し、Surface Operatorネットワークビューで作業するためにその中に入ります。
-
Subnetwork SOPを作成し、
Landscape_Generation
という名前を付けます。そのフォルダで作業するために、そのノードをダブルクリックします。 -
Heightfield SOPノードを作成します。
-
Heightfield SOP ノードを選択し、Displayフラグをオンにしたら、 パラメータエディタ を開きます。
-
パラメータエディタ で、 Initial Mask パラメータを
1
に変更します。-
これにより、ランドスケープ全体をマスクとして使用し、ベースマテリアルなどを適用できるようになります。
-
-
Heightfield Copy Layer SOPを作成し、その入力を Heightfield SOPノード の出力に接続します。
-
Heightfield Copy Layer SOP ノードのパラメータで、 Destination パラメータに base と入力します。
-
後でこのレイヤーを使用して、Unreal Engineでベースマテリアルを作成します。
-
-
Heightfield Noise SOPを作成し、そのinput1を Heightfield Copy Layer SOPノード の出力に接続します。
-
Heightfield Noise SOP ノードのパラメータで、以下の操作を行ないます:
-
Amplitude パラメータで、
250
と入力します。 -
Element Size で、
800
と入力します。 -
Noise Type で、ドロップダウンメニューを Perlin Flow に変更します。
-
Max Octaves で、
3.5
と入力します。 -
これにより、わずかに角度とバリエーションが加わったランドスケープが作成されます。
-
マスクを使用して崖を作成する ¶
-
Heightfield Mask by Feature SOPを作成し、その入力を Heightfield Noise SOPノード の出力に接続します。
-
Heightfield Mask by Feature SOP ノードのパラメータで、以下の操作を行ないます:
-
Min Slop Angle パラメータで、
15
と入力します。 -
Max Slope Angle で、
90
と入力します。 -
このマスクによって、ランドスケープに崖や尾根を生成できます。
-
-
Heightfield Terrace SOPを作成し、input1とinput2を Heightfield Mask by Feature SOPノード の出力に接続します。
-
Heightfield Terrace SOP ノードのパラメータで、以下の操作を行ないます。
-
Min Height で、
-50
と入力します。 -
Fade で、
0.5
と入力します。 -
Max Step Size で、
15
と入力します。
-
-
Heightfield Layer Clear SOPを作成し、その入力を Heightfield Terrace SOPノード の出力に接続します。
-
これにより、マスク選択がクリアされます。
-
-
Heightfield Flow Field SOPを作成し、その入力を Heightfield Layer Clear SOPノード の出力に接続します。
-
Heightfield Flow Field SOP ノードのパラメータで、以下の操作を行ないます:
-
Rain Amount で、
0.5
と入力します。 -
Rain Density で、
0.25
と入力します。 -
Smoothing Iterations で、
20
と入力します。 -
Adjust Height で、チェックボックスをオンにして、
0.3
と入力します。
-
これで、層になった崖と侵食のあるランドスケープになりました。
侵食用のマスクを作成する ¶
-
Mask by Feature SOPを作成し、その入力と Heightfield Flow Field SOPノード の出力を接続します。
-
Heightfield Mask by Feature SOP ノードのパラメータで、以下の操作を行ないます:
-
Invert Mask をオンにします。
-
Mask by Occlusion をオンにします。
-
Minimum Occlusion で、
0.75
と入力します。 -
Maximum Occlusion で、
0.9
と入力します。
-
-
Heightfield Copy Layer SOPを作成し、その入力を Heightfield Mask by Featureノード の出力に接続します。
-
Heightfield Copy Layer SOP ノードのパラメータで、 Destination パラメータで erosion と入力します。
-
Heightfield Layer Clear SOPを作成し、その入力を Heightfield Copy Layer SOPノード の出力に接続します。
-
これにより、マスク選択がクリアされます。
-
レイヤーをクリーンアップする(オプション) ¶
Houdiniでは、name
と呼ばれるPrimitiveアトリビュートのHeight Fieldは、Unreal Engineでランドスケープレイヤーとして文字列を使用します。これらのアトリビュートをクリーンアップして、HDAを整理しておくとよいでしょう。
-
Heightfield Flow Field SOP を選択します。
-
Geometry Spreadsheetタブ で、プリミティブを選択します。
-
ワークフローの間に作成されたアトリビュート名のリストが表示されます。
Note
Unreal EngineにHeight Fieldを適切に転送するには、Houdini Engineの
height
nameアトリビュートをエクスポートする必要があります。 -
-
Blast SOPを作成し、その入力を Heightfield Copy By Layer SOPノード の出力に接続します。
-
Blast SOP ノードのパラメータの、 Group パラメータで、
@name=cliff @name=flowdir.x @name=flowdir.y @name=flowdir.z @name=mesa @name=water @name=flow
と入力します。-
これにより、不要なアトリビュート名が削除され、Unreal Engineはそれらのレイヤーを読み込まなくなります。
-
Note
マスクのname
アトリビュートを削除 しない ようにしてください。削除すると、Heightfieldノードが適切に機能しなくなります。
レイヤーを視覚化する(オプション) ¶
レイヤーをUnreal Engineにエクスポートする前に、 Heightfield Visualize SOPを使用して、表示されるレイヤーを視覚化しましょう。
Note
どのHeightfield SOPでも、レイヤーおよびカラーのセットアップはUnrealマテリアルにエクスポートおよび転送されません。これらは完全にHoudini内での視覚化用です。
-
Heightfield Visualize SOPを作成し、その入力を Blastノード の出力に接続します。
-
Heightfield Visualize SOP ノードのパラメータで、以下の操作を行ないます:
-
Layer 9 で、ドロップダウンメニューから
erosion
を選択します。カラーをorange
に変更します。 -
Layer 8 で、ドロップダウンメニューから
base
を選択します。カラーをgreen
に変更します。
-
様々なレイヤーと、それがランドスケープに与える影響を確認できます。
-
erosion
レイヤーは、浸食用のマスクの作成時に設定されます。 -
base
レイヤーは、ランドスケープ全体を選択します。
これで、 Heightfield Visualize SOPノード を削除することができます。
Unrealマテリアルを作成する ¶
Primにunreal_material
を追加すると、Unrealの既存のマテリアルを生成したランドスケープに割り当てることができます。その後、Unrealマテリアルパスを文字列としてソースに設定し、HDAに割り当てることができます。
詳細は、マテリアルを参照してください。
Unrealでマテリアルをセットアップする ¶
-
Unrealで、新しいマテリアルを作成し、
Landscape_Material
と名前を付けます。 -
マテリアルグラフで、⇥ Tabをクリックし、2つの
Constant3Vector
を作成します。-
1つ目の定数のカラーを オレンジ色 に変更します。
-
2つ目の定数のカラーを 緑色 に変更します。
-
-
⇥ Tabをクリックし、
LandscapeLayerBlend
を作成します。-
Detailsパネルで、 Layers の横の+記号を選択し、2つの配列エレメントを追加します。
-
インデックス0で、ドロップダウンタブを展開し、名前を
erosion
に変更します。-
Blend Type を LB Alpha Blend に変更します。
-
-
インデックス1で、名前を
base
に変更します。-
Blend Type を LB Alpha Blend に変更します。
-
-
-
オレンジ色の定数カラー の白の出力を、 Layer erosion 入力に接続します。
-
緑色の定数カラー の白の出力を、 Layer base 入力に接続します。
-
Landscape Layer Blend 出力を Emissive Color 入力に接続します。
-
-
コンテンツドロワーで、
Landscape_Material
をクリックし、 Copy Reference を選択します。-
これは後で、 Attribute Create SOP にペーストするのに必要です。
-
Houdiniでマテリアルをセットアップする ¶
-
Houdiniで、 Attribute Create SOPを作成し、その入力を Blast SOPノード の出力に接続します。
-
Attribute Create SOP ノードのパラメータで、以下の操作を行ないます:
-
Name で、
unreal_material
と入力します。 -
Class で、 Primitive を選択します。
-
Type で、 String を選択します。
-
String で、Unrealマテリアルパスをペーストします。
-
-
Houdiniで、 Output Geometry SOPを作成し、その入力を Attribute Create SOPノード の出力に接続します。
これでHoudiniのセットアップが完了し、HDAにエクスポートする準備が整いました。
HDAの設定をエクスポートする ¶
-
ジオメトリビューに入り、
Landscape_Generation
サブネットワークをクリックし、 Create Digital Asset を選択します。 -
ポップアップウィンドウで、 Asset Label 名を
Landscape Generation
に変更します。-
別の設定も好みに合わせて変更できます。
-
-
Edit Operator Type Properties ポップアップウィンドウで、 Existing Parameters タブを見つけます。
-
Heightfield SOPノードからパラメータをエクスポーズ(アクセス可能に)して、それらをUnreal Engineで変更することができます。
-
-
Heightfield SOP で、
Grid Samples
パラメータを Existing Parameters タブにドラッグします。-
Heightfield Noise SOP でも同様にして、
Amplitude
とElement Size
パラメータをドラッグします。
-
これで、3つのパラメータが追加されたはずです。
-
-
Acccept を選択します。
Unrealにインポートする ¶
Houdini Engine for Unrealセッションを実行していることを確認します。詳細は、セッションを参照してください。
-
Unrealで、
Landscape_Generation
HDAをインポートします。 -
HDAをクリックし、 Instantiate at the origin を選択します。
これで、Unrealでランドスケープが生成され、適切なマテリアルが割り当てられました。
また、Detailsパネルの Houdini Parameters セクションにエクスポーズ(アクセス可能に)したパラメータが表示されるので、Unreal Engine内でランドスケープをさらに編集することもできます。
See also |