背景
- glTF や,(リアルタイム)レンダリングエンジン側で deformer に対応していない
- rig のモデル自体は Maya で deformer を使って構築されているので, deformer 情報を消す(bake する)必要がある
Bake deformer tool
Maya には 2017 Update 3 から Bake deformer tool の機能がつきました.
試す
bake deformer tool では, mesh + skelton を入力としているため, deformer を joint と parenting してみます.
- CUBE + joint 2 個.
- cluster deformer を作成し, 先端の joint と parent して, joint を動かすと cluster deformer が動くようにする.
ここから, cube と joint を duplicate して bake 用 mesh + joint を作ります.
target は同じ個数の skelton である必要があります.
bake deformer tool に mesh/skelton のペアを記述して, apply します.
これで bake 先は, cluster deformer に依存せず, joint を動かすと cluster deformer の効果も出るようになります. 実態は skinCluster(smooth vertex skinning)なので, これをあとは glTF にエクスポートするだけになります.
問題点
-
bake では, parent した joint のみの対応のようなので, たとえば screenvideo のように, root joint を動かすと, 元メッシュでは cluster deformer の影響があるが, bake したほうは影響は消えてしまう.
-
どれくらいの精度で deform 効果を bake してくれるかが不明.
TODO
-
joint の階層でうまく deform 効果 が bake される方法を探す.
-
joint に deformer を parenting するのがよい方法なのだろうか?(deformer をどう扱うか推奨方法はドキュメントなどに記載は無い)
-
自前 bake tool の作成を検討してみる. たとえば Sampling-based Rig Conversion into Non-rigid Helper Bones https://mukai-lab.org/publications/i3d2018/ を実装してみるなど.
-
簡単な deformer であればレンダリングエンジン側で対応してみる.
-
direct delta mush skinning 対応してみたい Direct Delta Mush Skinning and Variants http://binh.graphics/papers/2019s-DDM/