前提
Unity 2019.43f1
Houdini Indie 19.5.435
VRChat SDK 3.1.10
HoudiniのFBX出力はIndie以上のライセンスで可能。
FBXの出力
Rop FBX Outputを使うとSOP NetworkでFBXを出力できる。
階層付きFBX
Rop FBX Outputの設定で階層付きFBXを出力できる。
Build Hierarchy from Path attribute
を有効化し、Path Attribute
と同じ名前のstring型のアトリビュートをプリミティブに設定すれば階層付きのFBXが出力される。例えば、"/obj1/obj2/obj3"
という値のpath
アトリビュートをPath Attributes
に設定した場合、以下のような階層が出力される。ただし最上位の名前はOutput File
で設定した値になる。
上記の方法だと全てのオブジェクトが同一の座標系で表現されるため、個々のオブジェクトにピボット情報を付与できない。そのような構造を表現したい場合は以下の記事を参照。
スケールの調整
デフォルトだとUnity側は1/100倍のスケールで出力される。
Rop FBX OutputのConvert Unit
を有効化するか、Unity側のFBXのinspectorからModel>Convert Units
を無効するとスケールが一致する。前者はtransformのscaleを100倍して対応されるので、scaleを1に保ちたい場合は両方のConvert Units
を無効化する。あるいはHoudini側でスケールを100倍する仕組みを自力で作ってしまうのが良いかもしれない。
頂点情報の対応
対応する名前のアトリビュートを設定することで以下の頂点情報が出力できる。
種類 | 名前 | アトリビュート | 変数の型 | 備考 |
---|---|---|---|---|
法線 | N |
vertex | vector | vertex以外に設定しても出力可 |
頂点カラー | Cd |
vertex | vector | Unity側で[0,1]の範囲にクランプされる |
UV | uv |
vertex | vector | uv2以降は@uv2 ,@uv3 のように設定 |
マテリアル | shop_materialpath |
primitive | string |
-
@N
,@Cd
はpoint/vertex/primitiveそれぞれに設定できるが、出力する際はvertexに移してそれ以外のアトリビュートは消した方が安全 - Houdiniのuvはvectorで扱われるが、Houdini側でuv.zに値を設定してもunity側のuv.zは0になる
- Unityの頂点カラーの精度は8bit
- Unity側でどの頂点情報を持っているのかはメッシュのinspectorのプレビューウィンドウで確認できる
関連記事
- アバター(リグ付きFBX)を扱う方法を解説した記事
- 法線やマテリアルについてのより詳細な内容が書かれている