22
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Houdiniから階層とトランスフォームを保持してFBXを書き出すHDAの配布

Last updated at Posted at 2020-04-07

概要

Houdiniで階層とトランスフォームを保持してFBXを書き出すHDAを作ったので、標準機能の問題点と使用方法についてまとめます。
HDAとサンプルファイルはページの最後に書かれたURLからダウンロード出来ます。

標準機能の問題点

例えばMayaで図のようなタイヤとボディで分かれた車のモデルがあるとします。
タイヤのピボットは中心、ボディは原点に置かれてます。

このモデルをHoudiniでリダクションし、FBXを書き出すと階層とトランスフォームが失われてしまいます。

この問題を解決するにはオブジェクトごとにGeometryノードを分け、それをSubnetにまとめたものをOutコンテキストから書き出さないといけません。

さらにLODとして持っていくにはLODGroupという名前でヌルノードを作成し、コネクションを繋げます。
この際、同じネットワーク内に同名ノードを作成する事が出来ない為、同名オブジェクトにしたい場合はfbx_node_namefbx_node_pathというパラメータを作り、パスと名前を設定する必要があります。
LODHierarchyDescription.png

メニューのFile > Import > Filmbox FBXでFBXをインポートすれば自動で階層を作ってくれますが、これらの方法は編集がしづらく、ファイルの更新もしづらくなってしまいます。

この程度の階層であればなんとか出来ますが、もっと複雑な階層になるとかなり面倒です。

HDAの実装方法

配布するHDAではアトリビュートから階層のパスとトランスフォームを読み取り、FBX書き出し時にPythonで自動構築します。

階層とトランスフォームのアトリビュート

では、階層とトランスフォームのアトリビュートをどのように作るかと言うとFileノードでFBXを読み込んだ場合、自動でnameアトリビュートに階層、fbx_translationに位置、fbx_rotationに回転、fbx_scaleにスケール値が読み込まれます。

HDAではデフォルトでこれらのアトリビュートから値を読み込むようになってるので、元の値を残す事で階層とトランスフォームを保持して書き出せます。
アトリビュート制御なので、Houdiniで一から作ったモデルでも簡単に階層とトランスフォームを持たせる事が可能です。

LODの作成

LODを作成するには図のようにnameアトリビュートにLODGroupという名前の階層を持たせる事でLODとして書き出されます(画像はLOD0とLOD1が同じ位置に重なっています)。
NamePreview.png

それをMayaで読み込むと図のような階層とLODGroupを持ったモデルとして読み込まれます。

このモデルをUnreal Engineで直接インポートしてもLODが適切に読み込まれてるのが確認出来ます。

HDAのUIとパラメータ

UI

パラメータ

パラメータ名 説明
Render                                               FBXを書き出します。
Build Hierarchy From Attributeにチェックが入ってる状態で、階層用のアトリビュートが見つからない場合はボタンが押せないようになっています。
Hierarchy                                         
Build Hierarchy From Attribute 階層用のアトリビュートを基に階層を構築します。
Path Attribute 階層用のアトリビュート名
Transform From Attribute トランスフォーム用のアトリビュートを基にトランスフォームを設定します。
Translation Attribute 位置用のアトリビュート名
Rotation Attribute 回転用のアトリビュート名
Scale Attribute スケール用のアトリビュート名
Export                                              
FBX SDK Version エクスポートするFBXファイルのSDKのバージョンを指定することができます。
Export in ASCII Format チェックを付けると、エクスポートするFBXファイルは人が解読できるASCIIフォーマットになります。チェックなしの場合、バイナリフォーマットになります。
Output File ジオメトリを保存するファイル(拡張子を.fbxにしてください)。

HDAとサンプルファイルのダウンロード

下記からHDAをダウンロードしてHDAが認識されるフォルダにコピーしていただくとSopRopFBX Exportというノードが追加されます。

Sop Rop

最後に

今後、公式でこういった機能がFBXに付く可能性や、そもそもUSDなどFBXを使わないフローに代わる可能性がありますが、このHDAが皆さんの制作に少しでも役に立てば幸いです。

バグや機能要望等あればコメントに書いていただけると助かります。

22
14
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?