すあまの備忘録

誰得内容の自分のための非営利目的備忘録ブログ(筆者がわかっても内緒にしてください)

HoudiniからMayaへAlembicを書き出す際のスケール関連の注意

MayaとHoudiniではデフォルトのシーンスケールが違う。 その為Maya -> Houdini -> Mayaの流れでジオメトリをレンダリングする際に注意が必要になる。

Maya Houdini
1 unit cm m

f:id:godofsuama:20191029013942j:plain
aiStandardでノイズのBump mapを張った状態

上記状態でAlembicでメッシュを書き出し、Houdiniに読み込む

f:id:godofsuama:20191029014553p:plain
obj階層でスケールをかけた

Houdini内で「importABC」をobj階層でスケールを掛けてMayaと大きさを合わせている。 そのメッシュをwork内で調整し、Rop Alembicなどで書き出すとする。

Rop Alembicはobj階層でスケールを掛けていない為、Mayaに読み込むと0.01倍された大きさがスケール1として扱われて読み込まれる。

わかりづらいが、緑でハイライトされているのがHoudiniから再度書き出したメッシュ。

f:id:godofsuama:20191029015347p:plain

スケールを合わせるためにこの書き出したメッシュを100倍にし、レンダリングする。

f:id:godofsuama:20191029015642j:plain
スケールを100倍にしたのでbumpも100倍になってしまった。

自分でシェーダーを調整できる場合はbumpのoffsetを0.01倍すれば解決するが、 分業などでシェーダーの担当が違う場合などで見た目が合わない問題が起きる。 シェーダー数が多い場合などでミスが起きたり、忙しい時に忘れる恐れもある。

解決するためには、Houdiniの書き出し時にTransformノードなどでMayaのスケールに合わせてから書き出す。

f:id:godofsuama:20191029020143j:plain
Transformノードで書き出し時に100倍したもの

bump, normal map, displacement(vector) map全てに影響するため、Houdiniからの書き出し時は必ずスケールを戻すこと。