猫とゲームエンジン

今日も猫に面倒みられながら生きてる

Steam版Houdini Indieを他のバージョンやデイリービルドに変更する

Steam版のHoudiniIndieは特に設定していない場合は1~2日遅れくらいで最新版のアップデートが利用できるようになり他のSteamゲームと同様起動ボタンがアップデートボタンになって利用する前にアップデートされる。
ここでいう最新バージョンはProductionビルドでありデイリービルドはデフォルトだと反映されない。

過去バージョンのHoudiniに戻したい場合やデイリービルドを利用したい場合、アプリケーションのプロパティから利用するバージョンを変更することができる。過去バージョンなら2年分くらい前までなら選択することができる。

プロパティ/ ベータ/ ベータへの参加からバージョンの指定

デイリービルドを利用したい場合は「daily_20.5 - Daily Houdini 20.5 builds」などのモードを選択する

デイリービルドの選択

ベータへの参加を選択すると過去バージョンへのアップデート待ち状態になる

過去バージョンへのアプデ待ち

過去バージョンのSteam版Houdini Indie

元の最新版を利用する状態に戻したい場合はベータへの参加を「なし」に戻すとプロダクションビルドの最新版を利用する状態に戻る

SteamHoudiniIndieのバージョンをもとの状態に戻す

HoudiniEngine20.5.278でベイクフォルダ指定できない不具合

unreal_bake_folderを指定してもBakeFolder以下にフォルダ構造を無視して作成されてしまう。
20.0.547にバージョン落としてベイクしたらフォルダの指定はできたので不具合と思われる。

Bug Reportに報告しました。

hdaの中身
ベイクで出力フォルダが指定できない
20.0.547では同様の設定でフォルダ指定ができている

HoudiniEngineを使ってスタティックメッシュのコリジョンを更新する①

シーン内のLandscapeをhda の Houdini Inputs/ World Inputに設定するとfolliageを生やしたりエディットレイヤー、ペイントレイヤーを調整したりすることができた。 この Houdini Inputs を Geometry Input にするとコンテンツブラウザからスタティックメッシュなどをアサイン可能で、情報更新やコリジョンの設定に利用できる

HoudiniInputs/ GeometryInupt

HDAの設定

コリジョン生成、データの保存先などを行うためにいくつか設定が必要になった
加えて今回はテスト用にコリジョンが更新できたことをわかるようにmountでぐちゃぐちゃにしている

①.出力メッシュをコリジョンとして設定する
コリジョンの更新を行うためにするのは collision_geo_○○ という名称のグループを割り当てたメッシュを出力すると、それはコリジョンとして判断されるので元メッシュからコリジョン用の形状を生成したメッシュに対してgroup名をつけ、同じoutputに出力する
○○にはいるのは元メッシュとの関連付けなどは必要ないようでコリジョンにだけつければ紐づけできた。○○を明示する必要のあるシーンは今のところ不明

②. 出力先と出力名を設定する
unreal_output_name に出力するスタティックメッシュ名、unreal_bake_folderに出力先を設定(相対パス

③. コリジョンにノイズをいれてぐちゃぐちゃにする
更新したことがわかるテスト用で、コリジョン更新をしたいだけなら不要

HDAの設定

UE上での操作

上記のノードをhda化し、UE上でGeometryInputを設定するとシーン上では利用できるがまだこの段階ではコンテンツブラウザ上に存在していない
RefineProxyというボタンが表示されるのでクリック

refine proxy ボタン

refine proxy というボタンを押すと仮メッシュがHoudiniEngine/ Tempいかに生成され、新たにBake Outputボタンが表示されるので再度クリック
コリジョンメッシュもStaticMesh(InvisibleComplexCollider)という名称で表示されるがそちらではなく通常のStaticMeshの方を押す

Bake Outputボタン

BakeOutputを押すと出力先に指定した名称でStaticMeshが生成され、確認するとコリジョンがテスト用のコリジョンになっていることが確認できる

出力されたStaticmesh

出力名称を既存のメッシュ、つまるところ入力と同名のスタティックメッシュと同名にすると既存のスタティックメッシュのコリジョンを更新することができる

次回目標

タイトルを①した理由は不明点があったので。
複雑なコリジョンは更新できたが単純なコリジョンの設定がうまくいかなかった点
それと合わせて②以降の取り組みとして、入力ジオメトリの名称から上書をする機能と一括処理について考えてみたい

HoudiniEngineのTerrainワークフローを考えてみる⑦

インスタンシングをもう少し追ってみる

環境

Houdini Indie 20.0.688
Unreal Plugin 20.0.688
Unreal Engine 5.3.2

static mesh componentで生成

StaticMeshをunreal_instanceで作成するとHierarchical Instanced Static Meshで作成される

hierarchycalInstancedStaticMeshで作成される

個別にStaticMeshとして生成する方法もあり、unreal_split_attrというアトリビュートを設定することで分離することができる
ひとまとめにするグループをなんのアトリビュートで分類するかを指定するアトリビュートで、例えば位置で指定するとすべてが別々のStaticMeshとして生成してくれる

unreal_split_attrにPを指定して保存

static meshとして生成

コリジョンプリセットを変更

そのまま出すとコリジョンプリセットがBlockAllDynamicで出力される
そのため 生成したインスタンスにfoliageを生やそうとしても貫通してしまう(岩の上などに生えない)

出力されるStaticMeshの設定値を変更するには汎用的な設定値変更が可能なアトリビュートunreal_uproperty_○○ アトリビュートを設定する
○○には変更対象のパラメータ名が入り、今回の場合は s@unreal_uproperty_CollisionProfileName となる

unreal_upropertyで設定値を変更

コリジョンプリセットがBlockAllで出力できる

「uproperty」なので注意
あとfoliageもHoudiniEngineから作る場合、 i@unreal_foliage_attachment_type=1; を設定していないとstaticmeshに生えないので注意

foliageの設定

モニタ前に猫スペース作った

机を模様替えしてキーボードとモニタの間に猫用のスペース作ったら割と来てくれるので幸せになっています

2024_0527モニタ前猫スペース1
2024_0527モニタ前猫スペース2

HoudiniEngineのTerrainワークフローを考えてみる⑥

Houdini Engine 生成物の依存性を調べる

環境

Houdini Indie 20.0.688
Unreal Plugin 20.0.688
Unreal Engine 5.3.2

bakeボタン

Houdini Engineで生成したものはそのままだと生成元のhdaと紐づいており、hdaを削除すると生成したlandscapeなども消えてしまう

delete_hda_01
delete_hda_02

hdaを選択し、詳細を確認するとbakeというボタンがある これを押すと生成したものをシーンに存在するオブジェクトとして確定することができる

bake ボタン

ベイクすると紐づけは外れるので生成元のhdaを削除してシーンから取り除くこともできるようになる ※注意点として、リビルド前なら生成するhdaを更新してリビルドすることで生成物の更新がされていたが、ベイク後は新しいLandscapeが生成されるようになる

ベイク後にhdaを削除

この紐づけが外れた状態のLandscapeなどは完全にUEのオブジェクトとして存在しているため、HoudiniEngineプラグインをアンロードした環境でも動作してくれる

HoudiniEngineをアンロード状態

なので、Bakeをしてシーンからhdaを削除するという手順を踏むことでプロジェクト全員がHoudiniEngineをインストールしなくても、アーティストの環境だけでコンバータやエディットツールとしてhdaを利用することも可能

とはいえ、シーンに間違えてhdaを残してしまっている状態でpluginがない人がシーンを開くとUEがクラッシュするのでオススメはしない・・・
あくまでチームの理解が取れないけどアートメンバーだけでもツールとして使うととても便利だよね、みたいなシーンに限る話ではある