GameDev LOD Hierarchyを使ってLODをFBX出力


新年明けましておめでとうございます。篠島です。今年もなんとか頑張ってHoudiniブログを定期的に更新していきたいと思います。今回は自動的にLODグループを作ってFBXとして出力してくれるGame Development Tool の LOD Hierarchy について説明します。

 

LOD Hierarchyの使い方

Houdini 16.5.330 でFBXにアップデートがありまして、LODグループをHoudiniからFBXで出力できるようになりました。チュートリアルビデオではHoudini 16.5.343が必要と言っていますが、アップデートのログを見る限り恐らく16.5.330で大丈夫です。しかしインストールするのであれば最新のデイリービルドを入れましょう。そして LOD Hierarchy 自体も新しく追加された機能なので、Gave Development Tool をインストールし直します。インストールの方法はこちらの記事を参考にして下さい。

LOD Hierarchy はSOPレベルではなく、OBJレベルで作ります。

使い方は簡単で、LOD用に使いたいジオメトリをLOD Hierarchyノードに繋げるだけです。Number LOD Levels の部分でいくつのレベルのLODを作るかを設定します。LOD Hierarchy に複数のジオメトリが繋がっていたとしても、ここで設定した数だけLODが出力されます。下の図だと4つのジオメトリを繋げているので Number LOD Levels は4にしてあります。そして出力先を指定してExportボタンを押して完了です。

LOD Hierarchyを使わずにFBX出力する方法

ちなみに LOD Hierarchy を使わなくても手動でLODのセットアップをしてFBXで出力することも出来ます。方法としてはNullを作り、名前を「LODGroup」に変更。LODにしたいオブジェクトをNullの子供にし、名前の最後にLOD0、LOD1など0から始まる番号をつけます。これをしないとジオメトリをLODとして認識してくれません。FBXを吐き出す時に親のNullを指定して出力します。

 

Nullの名前を「LODGroup」以外の名前にすることも出来ますが、その場合パラーメーターにStringアトリビュートとして「fbx_node_attribute」というパラメーターを設定し、値を「LODGroup」にします。そして上と同様にFBXで吐き出す際に親のNullを指定して出力します。ちなみに「fbx_node_attribute」を指定して出力したFBXはUnityは問題なく読み込めたのですが、UnrealだとLODの順番が逆になってしまいました。不必要な問題を避けるためにも LOD Hierarchy  ツールを使いましょう。

 

 

Unityで読み込んでみる

普通にFBXを読み込むだけで特に設定などはありません。あえて言うならば距離に応じてどのオブジェクトを表示させるかの設定をするくらいです。

 

Unrealで読み込んでみる

UnrealでFBXを読み込む際にオプションが出てくるので、そこでImport Mesh LODs をONにします。ちなみにデフォルトはOFFです。もし Houdini 内部で作ったアセットなら、Unreal に読み込む際にスケールがかなり小さくなってしまうので、Import Uniform Scaleを100にします。それと LOD setting で LOD Number の数が合っているかどうかを確認して問題なければインポートします。

 

するとスクリーンサイズに応じてジオメトリが切り替わります。