PaperSloth’s diary

主にゲーム開発関連についての記事を書きます。

UE4 HoudiniEngine for UE4を使ってHDAをUE4で使う方法

目次

環境

UE4.23.1
Houdini Indie 18.0.287
Houdini Engine for Unreal 4.22.3/4.23.1

前準備

UE4とHoudiniはインストール済の前提で進めます。
Houdiniのインストール時にHoudini Engine for Unrealにチェックを入れておくと良いでしょう。
f:id:PaperSloth:20200503145953p:plain

また、Houdini Engineの機能はHoudini Apprenticeでは使用できません。
HDA(Houdini Digital Assetの作成までは行えたと思いますが、UE4側で使用できないはずです。

実際に制作してみる

今回は説明のためにSphereをHDA化してUE4に持っていきます。
パラメーターを吐き出す流れさえ理解すれば、あとは自由に応用が効くと思いますので非常に簡単な例としました。

少し凝ったものを作成したい方は以下のSideFXのサイトにUE4向けのチュートリアル動画が参考になると思います。
動画ではHoudini FX 15.0.299を使用しており、バージョンがかなり古くなっていますが大きく困るポイントは少ないと思います。
バージョン違いでは色々と問題が発生するため慣れていない場合は極力同じバージョンか近いバージョンのものを使用する方がよいでしょう。
https://www.sidefx.com/ja/products/houdini-engine/plug-ins/unreal-plug-in/

Houdini 側の作業

大まかな流れ
1. geometry作成
2. sphere作成
3. subnet化
4. exportするパラメーターの設定
5. HDAとして保存

1. geometry作成
Houdiniのいつもの流れですね。
Network Viewでgeometryを作成します。
f:id:PaperSloth:20200503151832p:plain

2. sphere作成
1.で作成したgeometryをダブルクリックか i キーで中に入ります。
中に入るとsphereを作成します。
f:id:PaperSloth:20200503152035p:plain

sphereのPrimitive TypeをPolygonに変更しておきます。
f:id:PaperSloth:20200503152555p:plain

3. subnet化
subnet化は複数のノードの塊を1つのパッケージにする機能ですが
HDAとして出力する際にも役立ちます。

sphereノードを選択してNetwork View右上の箱のアイコンからsubnet化できます。
ショートカットキーはShift + Cです。
f:id:PaperSloth:20200503152933p:plain

以下のようにsubnetノードが作成されます。
f:id:PaperSloth:20200503153048p:plain


4. exportするパラメーターの設定
subnetノードを選択してGearのアイコンのEdit Parameter InterfaceからexportするParameterを設定します。
f:id:PaperSloth:20200503153614p:plain

Edit Parameter Interfaceのwindowが開いたら
From Nodesタブに切り替え、sphereのFrequency (freq)を右のExisting Parametersにドラッグアンドドロップします。
パラメーターを選択してして -> ボタン押下でも可能です。
f:id:PaperSloth:20200503154015p:plain

パラメーターを反映できたことを確認したらAcceptボタンを押下して閉じます。
f:id:PaperSloth:20200503154114p:plain

subnetの中に先程設定した Frequencyが追加されていれば成功です
f:id:PaperSloth:20200503154236p:plain


5. HDAとして保存
subnetノードを選択して右クリック -> Create Digital Asset... からHDA化します。
f:id:PaperSloth:20200503154356p:plain

Operator Nameにsphereと入力します。
するとOperatar Labelも自動で変更されます。
Save to Libraryには保存したいパスにsphere.hdalcとしてAccpetを押下します。
f:id:PaperSloth:20200503154506p:plain

すると以下のようにEdit Operator Type Propertiesが開きます。
ここでは特に変更を行わなずSave to Libraryのpathが正しいことを確認したらAcceptを押下します。
f:id:PaperSloth:20200503154925p:plain

以上でHoudini 側の作業は終了です。

HDAをUE4にimportする

UE4側では4.23.1で新規にBlankのTemplateでプロジェクトを作成しました。
既存のプロジェクトでも特に問題ありません。

先ずプロジェクトを起動したらHoudini Engineがインストールされていることを確認しましょう。
Edit -> Plugins のInstalled 以下にHoudini Engineが存在し、Enabledになっていることを確認します。
f:id:PaperSloth:20200503155252p:plain
f:id:PaperSloth:20200503155313p:plain

有効になっていれば、特に設定することはありません。
先ほど作成したsphereのHDAをContent BrowserにドラッグアンドドロップするかImportボタンを押下してImportします。
f:id:PaperSloth:20200503155451p:plain
f:id:PaperSloth:20200503155615p:plain

ImportしたHDAをLevel上に配置したら完了です。
DetailsからFrequencyを変更してみて反映されることを確認しましょう。
f:id:PaperSloth:20200503160303g:plain

また、Houdini側で設定をしていない場合でもUE4側からMaterialを変更したりStatic MeshとしてBake(保存)することができます。
importしたHDAを選択してDetails内のHoudini Generated Meshes以下から可能です。
Bakeを押下すると現在の設定のMeshが別アセットとして保存されます。
Materialを変更すればもちろん見た目に反映されます。
f:id:PaperSloth:20200503163223p:plain

それぞれパラメーターを変更してStatic MeshとしてBakeしたものです。
f:id:PaperSloth:20200503163528p:plain

Bake後は通常のStaticMeshと同様ですので、UE4側の設定でLODを作成したりすることももちろん可能です。

Materialを変更した例
f:id:PaperSloth:20200503163854p:plain

おまけ
importかexportの設定に失敗していたり、Houdini Apprenticeだと以下のようにロゴのみの表示になってしまいます。
f:id:PaperSloth:20200503162513p:plain

追記 Unreal Materialの適用方法

Houdini 側でUE4のMaterialへの参照を持たせた状態でのHDAの作成が可能です。
HoudiniにはUnreal Materialというノードが用意されています。
f:id:PaperSloth:20200503171641p:plain
f:id:PaperSloth:20200503171711p:plain
f:id:PaperSloth:20200503171733p:plain

Stringの説明文にあるように、UE4のプロジェクト内での相対パスを設定してやればよいようです。
UE4側で使用するためのMaterialを用意しておきましょう。
Content直下にM_TestHDAというBaseColorに赤を割り当てたMaterialを用意しました。
f:id:PaperSloth:20200503171913p:plain
f:id:PaperSloth:20200503172018p:plain

再びHoudiniの作業に戻ります。
UE4のパスのContentはGameと解釈されます。
そのため、Material'/Game/(Materialへのpath)/(MaterialName.MaterialName)'
といったパスを設定してやります。
今回の例ではContent直下のため、以下のようになります。
「Material'/Game/M_TestHDA.M_TestHDA'」
f:id:PaperSloth:20200503172115p:plain

あとは先程同様にHDAとして保存し、UE4にImportします。
これで設定したMaterialが反映されていることが確認できました。
f:id:PaperSloth:20200503172640p:plain
因みにEngineContent以下のMaterialを適用したい場合のパスは/Game/ を/Engine/ と置換してやることで使用可能です。

追記 作成したHDAの更新方法

Houdini 側の作業
Assets -> Edit Assets Properties... -> subnet Name
これでEdit Operator Type Propertiesが開かれます。
そこで、Apply またはAcceptを押下することでHDAが更新されます。
f:id:PaperSloth:20200504173033p:plain

UE4側の作業
上記の更新を行った後にHDAを選択してDetails内からRebuild Assetを押下することで更新されます。
f:id:PaperSloth:20200504173254p:plain

参考資料

https://www.sidefx.com/ja/products/houdini-engine/plug-ins/unreal-plug-in/

https://www.sidefx.com/forum/topic/49570/


また、今回は紹介できませんでしたがSideFX Labs内に
NiagaraやTerrain関連のノードも用意されており、機会があれば紹介させていただきます。
f:id:PaperSloth:20200503173906p:plain