ブログ移行
今度からNotionで書きます
Steam版Houdini Indieを他のバージョンやデイリービルドに変更する
Steam版のHoudiniIndieは特に設定していない場合は1~2日遅れくらいで最新版のアップデートが利用できるようになり他のSteamゲームと同様起動ボタンがアップデートボタンになって利用する前にアップデートされる。
ここでいう最新バージョンはProductionビルドでありデイリービルドはデフォルトだと反映されない。
過去バージョンのHoudiniに戻したい場合やデイリービルドを利用したい場合、アプリケーションのプロパティから利用するバージョンを変更することができる。過去バージョンなら2年分くらい前までなら選択することができる。

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

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


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

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



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

HDAの設定
コリジョン生成、データの保存先などを行うためにいくつか設定が必要になった
加えて今回はテスト用にコリジョンが更新できたことをわかるようにmountでぐちゃぐちゃにしている
①.出力メッシュをコリジョンとして設定する
コリジョンの更新を行うためにするのは collision_geo_○○ という名称のグループを割り当てたメッシュを出力すると、それはコリジョンとして判断されるので元メッシュからコリジョン用の形状を生成したメッシュに対してgroup名をつけ、同じoutputに出力する
○○にはいるのは元メッシュとの関連付けなどは必要ないようでコリジョンにだけつければ紐づけできた。○○を明示する必要のあるシーンは今のところ不明
②. 出力先と出力名を設定する
unreal_output_name に出力するスタティックメッシュ名、unreal_bake_folderに出力先を設定(相対パス)
③. コリジョンにノイズをいれてぐちゃぐちゃにする
更新したことがわかるテスト用で、コリジョン更新をしたいだけなら不要

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

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

BakeOutputを押すと出力先に指定した名称で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で作成される

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


コリジョンプリセットを変更
そのまま出すとコリジョンプリセットがBlockAllDynamicで出力される
そのため 生成したインスタンスにfoliageを生やそうとしても貫通してしまう(岩の上などに生えない)
出力されるStaticMeshの設定値を変更するには汎用的な設定値変更が可能なアトリビュート、unreal_uproperty_○○ アトリビュートを設定する
○○には変更対象のパラメータ名が入り、今回の場合は s@unreal_uproperty_CollisionProfileName となる


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

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


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なども消えてしまう


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

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

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

なので、Bakeをしてシーンからhdaを削除するという手順を踏むことでプロジェクト全員がHoudiniEngineをインストールしなくても、アーティストの環境だけでコンバータやエディットツールとしてhdaを利用することも可能
とはいえ、シーンに間違えてhdaを残してしまっている状態でpluginがない人がシーンを開くとUEがクラッシュするのでオススメはしない・・・
あくまでチームの理解が取れないけどアートメンバーだけでもツールとして使うととても便利だよね、みたいなシーンに限る話ではある