背景
deformer, 連番メッシュ(e.g. Alembic cache), blendhapes から, skinning を生成したい(主にリアルタイム描画向けや, スキャンしたモデルに骨格を入れたいとき)
同等のものとして, Maya とかで deformer を skin にベイクするなどの機能ありますが, ソフトに依存せず単体で処理したいときもあります.
dem-bones
https://www.ea.com/news/open-source-dem-bones
https://github.com/electronicarts/dem-bones
オフィシャルでは Windows, macOS の prebuilt がありますが, Linux で動かしたいように fork を作りました.
怪しいバグも直してあります(コードわかりずらくてつらかった...). また, Alembic, FBX を optional にしてビルドしやすいようにしています.
使う
使う分には, そんなに苦労しないはずです. サンプルがあるのでそちらが参考になります.
700 頂点 + TR 1950X でもそこそこ計算に時間かかります(OpenMP 有効 CPU).
頂点数が万単位だと処理時間結構かかってしまうかもしれません.
たいせつな dem-bones で mesh sequence からの skinning への変換検証業務 > An automated algorithm to extract the linear blend skinning (LBS) from a set of example poses https://t.co/YO2qjv4Mzu pic.twitter.com/ILwVUhzw3X
— Syoyo Fujita 🌸 RayWa(Ray and Peace) (@syoyo) March 3, 2020
階層構造は作ってくれないようです.
また, 既存の skinned model を最適化(少ない bone 数にするなど?)することもできます.
helper bone 生成とか
すでに先人がいました. Maya plugin ですが, dem-bones と RBF(radial basis function) https://lesterbanks.com/2015/04/skinning-converter-for-maya/ の自前実装を使っています. ありがとうございます.
Lots of videos on corrective joints lately so wanted to try with a twist. Using a modified version of DemBones, my RBF solver, and a base skeleton w/ corrective deformations on top, auto generate corrective joints to replicate the deformation #Maya3dhttps://t.co/tVL9UrzfPm
— Chad Vernon (@chadvernon) February 7, 2020
TODO
- .obj 連番メッシュに対応する
- glTF などで skin 情報をエクスポートする
- deom-bones を参考に, Example-based Helper Bone Rigging https://mukai-lab.org/projects/helper-bone-rigging/ を実装する