すあまの備忘録

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

HoudiniからAlembicをインスタンスで書き出す

Houdini上のPackされたオブジェクトをTranslate, Rotate, Scale, Visibilityの情報として保存してファイルサイズと書き出し時間を削減する方法です。

大量、ポリゴン数多いの破片オブジェクトなどをAlembicで書き出す際に効果を発揮します。

ParticleのAgeや、Deleteノードで削除したものはVisibilityオフとして扱われます。

当然、インスタンスのため毎フレーム値が変わる情報は保持できません。

f:id:godofsuama:20191030005938p:plain
Mayaに読み込んだ状態

テストシーンでの比較
Default Instance
ファイルサイズ 491.1MB 1.7MB
書き出し時間 20秒くらい 1秒くらい

書き出し方法

Packした状態でAttributeやGroupを整理し、Rop Alembicの以下の箇所を設定します。

この際、設定するPath Attributeはidなどを使用して重複しないようにします。

重複すると読み込み時に自動でリネーム処理が走ったりするため、エラーの元になります。

f:id:godofsuama:20191030012405p:plain
Path Attributeを設定する
f:id:godofsuama:20191030012409p:plain
Transform Geometryに変更する


Mayaへの読み込み

Maya標準のAlembic Importでも読み込めますが、Shapeが大量にできるためMayaが非常に重くなります。

GPU Cacheの方で読み込むとシェイプが1つになるため読み込みやViewportは軽量ですが、 シェーダーのアサインが1つのみになることと、レンダリング時にGPUメモリが少ないとクラッシュします。

GPU Cache使用時はMake Instanceにチェックを入れます。

f:id:godofsuama:20191030011549p:plain
Make Instance

GPU Cache使用時にメッシュごとに違うマテリアルをアサインする場合は、以下の箇所をダブルクリックして指定したメッシュのみの表示にし

違うメッシュを表示したGPU Cacheをもう一つ読み込みます。

f:id:godofsuama:20191030011803p:plain
表示するメッシュの設定


おまけ1

Copy to pointsノードでも、instanceノードでも使用可能です。

Copy to pointsの場合はPack and Instanceのチェックを忘れないようにします。

ともかくPackされていればScatterでも大丈夫です。

f:id:godofsuama:20191030005213p:plain

おまけ2

最後に残すAttribute

f:id:godofsuama:20191030013403p:plain
残すAttribute