HOME

Maneki Pipeline

ゲーム開発のためのプロシージャル

HoudiniEngineで入力数が異なる場合のRefine待機

HDA Actor複数出力時のProxyMeshリファインの挙動について ニッチな話ですが。

出力数によるProxyMeshのRefine挙動の違いについて

Packによる複数出力を行うとRefine済みのメッシュが作成される

HoudiniEngineでメッシュを作成した場合、単一の出力の場合はProxyMeshで作成され、Refineすることで最終出力同様の見た目が確認できる。
ただし、複数の出力の際はProxyMeshでは作成されずにRefineがすでにされた状態で出力される。

テスト用に以下のように単一の出力とPackした複数メッシュ出力を行るようなHDAを作成し、

単一の出力と複数の出力を分けられるテスト用のHDA

単一の出力ではProxyMesh(Refineが表示されている状態)に対し、

ProxyMeshの出力なのでRefineができる

Packして複数のスタティックメッシュを出力するとProxyMeshではない状態で出力される。

Packして複数の出力にした場合、Refineができない状態で出力される

未RefineとRefine済みメッシュが出力される場合がある問題点

この挙動で問題になるのが「デリゲータで待機している場合」。
仮にRefineを待機している状態でリファインができないメッシュでリファインを待機してしまった場合、その後の処理に復帰することができなくなってしまう。

Refineを待機するような構成
単一の出力では問題なく、デリゲート後の処理に入る
複数メッシュの出力を持つ場合、RefineAllProxyを呼び出してもRefine対象が無ければバリデータの処理に移行しない

対策

PublicAPIにはリファインできるメッシュが存在しているかどうかの判定ができるノードがある。

ProxyMeshを持っている場合、Refineのデリゲータに移行するようにする

これを使ってリファイン対象がある場合のみデリゲータの待機に入力するとどちらの場合でも対応できるようになる。

複数メッシュでも次の処理に合流できた


ユーザーが作成データを確認したい場合処理内でRefineを実行することがままあるのですが、その時にデリゲータで待機すると上記のように次の処理につながらないという問題が発生する場合があります。

fish_ball

プロシージャル魚類