#memo

indiedev太郎

Houdini Engine for Unrealの紹介

Unreal Engine 4 (UE4) Advent Calendar 2017 14日目の記事です.
Unreal Engine 4 (UE4) Advent Calendar 2017 - Qiita

ゲーム制作のパイプラインにおいて, Houdiniという単語を目にすることも珍しいことではなくなってきましたが, 今回はUnreal Engine内から直接Houdiniの機能を使用してレベルデザインができるようになる, Houdini Engine for Unreal についての簡単な紹介を行いたいと思います, UE4アドカレなのですが…

前書き

このPluginの導入により以下のようなフローが構築できるようになります

  1. Houdiniで何らかの処理(プロシージャルモデリングなど)を作る
  2. UE4用に, StaticMeshやParameterなどを公開する
  3. アーティストがUE4上でStaticMesh, Parameterを指定してレベルデザインを行う

Houdiniの機能にUE4からアクセスすることができ, ソフトを行き来することなく, アーティストがUE4のみで, Houdiniの機能を利用したレベルデザインが可能となります
具体的には以下のような作業となります

  1. Houdiniでなんらかの処理を作る
  2. この処理を.hdaファイル(Houdini Digital Asset)に書き出し
  3. UE4にuassetとしてhdaをインポート
  4. レベルエディタでインポートしたhdaを配置
  5. Houdini Engine for UnrealでStaticMeshを生成

Houdiniには無料評価版(Houdini Apprentice)があるのですが, UE4で扱える.hdaファイルの書き出しは, Indieライセンス(年$199)以上の機能となっています
非Houdiniユーザーには少々敷居がありますが, ApperenticeでもHoudiniPluginの有効化とサンプルファイルの読み込み, 30日間の試用による具合の確認はできるので, 以前からHoudiniに興味があったような方もお気に留めていただければと思います


OS Windows10
UE4 4.18.1
Houdini 16.5.268


できること

基本的にHoudiniで出来ることは大体できる感じになっております
また以下では青字はUE4の用語,赤字はHoudiniの用語とさせていただきます

パラメーターからプロシージャル生成

f:id:miyahuji111:20171213201419g:plain:w400

まだConstructionScriptで出来る範囲です
StaticMeshSOPで配置し最後にCleanSOPで頂点を結合しています

Splineからプロシージャル生成

https://i.gyazo.com/e51c8f6e806e1b6956c2915364f26dc6.gif

こちらもまだUE4のみで可能な実装です
Splineを入力にとり,Boxを適当に配置しています
Houdini内に用意されているPrimitiveはそのまま使用することが可能です

MeshReduction

https://i.gyazo.com/2eb34695214929e58a434287b67fd46a.gif

PluginのSampleにあるものです
UE4(Simplygon)側にあるものとは別で, レベルエディタからReduction量の指定ができます

Simulation

https://i.gyazo.com/60277d564dc9f6b0a70327c17ebbb7fa.gif

SOPだけでなく, TimeShiftSOPを使用することでDOP$Fも扱うことができます
StaticMeshをソースとしてVolume経由でSimulationを行っています

Pythonによる処理

https://i.gyazo.com/3a6d38de5d09c269d2c92996fde6ac47.gif

PythonSOP(hou)を使用することで, 処理をPythonにより記述しています
Planeをもとに建物を生成しています


Houdini Plugin for UE4のインストール

別記事にてまとめました

Houdini Plugin for UE4のインストール(Houdini Apprenticeユーザー向け) - #memo

また, Apprentice向けとなっていますが, Indieライセンスなどでも大体同様だと思われます


UE向けHDAの作成(Houdiniユーザー向け)

Houdini側でHDAを構築する際, UE4側からStaticMeshやSplineをインプットとして受け取ったり, HandleをUE側に公開することなどができます
ここではHoudiniユーザー向けの話となりますが了承ください

また公式によるドキュメントに目を通しておくのが確実であります

Houdini Engine for Unreal: Main Page

StaticMeshをInputにとる

Houdini Engine for Unreal: Inputs

https://i.gyazo.com/f9204dd4392af49801871f01f7ef92be.png

FileノードはUE4内からは期待通りの動きになりません, 代わりにObjectMergeを使用します
この時, ObjectMergeのPathをHDAのParameterとして公開しておきます
https://i.gyazo.com/a1803130edaa9232a911772e526e0a08.png
またこの際OPFilterをAnySOPかAnyObjectにしておく必要があります, SOP内での参照であればAnySOPのままで問題ないかと思われます

https://i.gyazo.com/c1078055dfe49428056960ded0412be5.png
https://i.gyazo.com/467541d3d9fce5acf1bddcad7b61f89b.png

このパラメーターをUE4側でGeometryInputとすることで, Contents内のStaticMeshが指定できるようになります

またFileノードも同様にPathを公開することでUE4から設定することができます
この場合は外部ファイルを直接参照しているため, パッケージングの前にMeshMergeを実行しておく必要があるかと思われます

SplineをInputにとる

https://i.gyazo.com/0222710a79bd5ed95475788060a78f08.png

InputをCurveInputとすることで, アクタにHoudiniSplineComponentが生成されます
これを操作することで, Houdini側でSplineに対しての処理が行えるようになります

また, ParameterNameに正規表現で*Curve*がマッチした場合, デフォルトのInputTypeがCurveになります, 詳細は以下のページにて

Houdini Engine for Unreal: Inputs

Parameterの設定

Houdini Engine for Unreal: Parameters

Houdiniで使用できるパラメーターが自動でUnrealのものに変換されます
注意点として, Pythonなどにより動的に生成されるパラメーターは扱うことができません

DOPを使用する

TimeShiftSOPのFrameパラメーターを公開することで, 指定したframeのシミュレーション結果がUE側で手に入ります
UE4のドキュメントにはDOPに関しての記述はありませんが, HoudiniEngineの方で確認することができます

Houdini Engine 2.0: Dynamics Simulations


HDAで生成したメッシュのマージ

https://i.gyazo.com/416b7cf1fe9a3a4cc73b78f1873d6f72.png

レベルに配置されたHoudiniAssetのパラメーター欄にあるBakingより, UE4で言うところのMergeActorsが行えます
生成されるStaticMeshの場所は, 下にあるBakeFolderにて指定します
BakeToActorsを押すことで, StaticMeshの生成と,同座標への配置を行います, MergeActorsとは異なり, オリジナルのActorは消去されないので注意してください
また, 更に下にあるHoudiniGeneratedMeshesパネル内からも同様にStaticMeshの生成が行えます
こちらのボタンでは同座標のワールド配置を行わず, たんにStaticMeshを生成するのみです

また, UE4オリジナルのMergeActorsも使用することができます

Houdini Engine for Unreal: Assets


終わり

このプラグインを使わずとも, ここ1年でHoudiniではどんどんゲーム用の機能が追加されています
UE4ではこのように既に強力な連携が可能となっていますので, 是非Houdiniでレベル制作の速をあげていきましょう
今回は機能紹介程度になってしまいましたが, Actorやumap入力などもそのうち書きたいと思います

次はDV7 Pavilionさんによる, 【UE4】ゲーム制作事例(The Rolling Ball) - Qiitaです