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の導入により以下のようなフローが構築できるようになります
- Houdiniで何らかの処理(プロシージャルモデリングなど)を作る
- UE4用に, StaticMeshやParameterなどを公開する
- アーティストがUE4上でStaticMesh, Parameterを指定してレベルデザインを行う
Houdiniの機能にUE4からアクセスすることができ, ソフトを行き来することなく, アーティストがUE4のみで, Houdiniの機能を利用したレベルデザインが可能となります
具体的には以下のような作業となります
- Houdiniでなんらかの処理を作る
- この処理を.hdaファイル(Houdini Digital Asset)に書き出し
- UE4にuassetとしてhdaをインポート
- レベルエディタでインポートしたhdaを配置
- 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の用語とさせていただきます
パラメーターからプロシージャル生成
まだConstructionScriptで出来る範囲です
StaticMeshをSOPで配置し最後にCleanSOPで頂点を結合しています
Splineからプロシージャル生成
こちらもまだUE4のみで可能な実装です
Splineを入力にとり,Boxを適当に配置しています
Houdini内に用意されているPrimitiveはそのまま使用することが可能です
Simulation
SOPだけでなく, TimeShiftSOPを使用することでDOPや$Fも扱うことができます
StaticMeshをソースとしてVolume経由でSimulationを行っています
Houdini Plugin for UE4のインストール
別記事にてまとめました
Houdini Plugin for UE4のインストール(Houdini Apprenticeユーザー向け) - #memo
また, Apprentice向けとなっていますが, Indieライセンスなどでも大体同様だと思われます
UE向けHDAの作成(Houdiniユーザー向け)
Houdini側でHDAを構築する際, UE4側からStaticMeshやSplineをインプットとして受け取ったり, HandleをUE側に公開することなどができます
ここではHoudiniユーザー向けの話となりますが了承ください
また公式によるドキュメントに目を通しておくのが確実であります
StaticMeshをInputにとる
FileノードはUE4内からは期待通りの動きになりません, 代わりにObjectMergeを使用します
この時, ObjectMergeのPathをHDAのParameterとして公開しておきます
またこの際OPFilterをAnySOPかAnyObjectにしておく必要があります, SOP内での参照であればAnySOPのままで問題ないかと思われます
このパラメーターをUE4側でGeometryInputとすることで, Contents内のStaticMeshが指定できるようになります
またFileノードも同様にPathを公開することでUE4から設定することができます
この場合は外部ファイルを直接参照しているため, パッケージングの前にMeshMergeを実行しておく必要があるかと思われます
SplineをInputにとる
InputをCurveInputとすることで, アクタにHoudiniSplineComponentが生成されます
これを操作することで, Houdini側でSplineに対しての処理が行えるようになります
また, ParameterNameに正規表現で*Curve*がマッチした場合, デフォルトのInputTypeがCurveになります, 詳細は以下のページにて
DOPを使用する
TimeShiftSOPのFrameパラメーターを公開することで, 指定したframeのシミュレーション結果がUE側で手に入ります
UE4のドキュメントにはDOPに関しての記述はありませんが, HoudiniEngineの方で確認することができます
HDAで生成したメッシュのマージ
レベルに配置されたHoudiniAssetのパラメーター欄にあるBakingより, UE4で言うところのMergeActorsが行えます
生成されるStaticMeshの場所は, 下にあるBakeFolderにて指定します
BakeToActorsを押すことで, StaticMeshの生成と,同座標への配置を行います, MergeActorsとは異なり, オリジナルのActorは消去されないので注意してください
また, 更に下にあるHoudiniGeneratedMeshesパネル内からも同様にStaticMeshの生成が行えます
こちらのボタンでは同座標のワールド配置を行わず, たんにStaticMeshを生成するのみです
また, UE4オリジナルのMergeActorsも使用することができます
終わり
このプラグインを使わずとも, ここ1年でHoudiniではどんどんゲーム用の機能が追加されています
UE4ではこのように既に強力な連携が可能となっていますので, 是非Houdiniでレベル制作の速をあげていきましょう
今回は機能紹介程度になってしまいましたが, Actorやumap入力などもそのうち書きたいと思います
次はDV7 Pavilionさんによる, 【UE4】ゲーム制作事例(The Rolling Ball) - Qiitaです