リグとスキンと変形と

リグに関して主に映像寄りの視点で。
これは映像寄りの私的な考えなので
実際のプロダクションにおける様々な制約で最適解は変わります。

という前提で書いておこうとおもった。

さて自分はへっぽこリガーでもあるのですが、
リグの役割は大きく2パートに分割されると思ってます。

1、ボーンやコントローラを作って基本となるリグを作る。
(コンストレイント、回転制御、クオータニオン、行列などなどなど)

2、リグを使ってメッシュをいい感じに変形させる。
(スキン、DQ、Delta mush、Tension、セカンダリデフォーム、FEMなどなどなど)

根本的には2の「いい感じの変形」を達成するために1のリグを作ります。
(リニアスキン変形が上手くいくように各種補助ボーンを仕込むとか、
マッスル変形を前提に骨や筋肉を仕込むとか)

1と2が絡みあって、最適なボーンの配置や本数、
稼働なども変わってくるのですが、
ともすれば1だけにハマって2の探求や開拓が疎かになる場合があります。

具体的に言うと、
映像案件でリニアスキン縛りで、ボーンの可動や補助的なモーフの仕込みだけをアドホックで延々と入れ続ける、みたいな。
制約のあるゲームじゃないんだから。
いや映像であっても色々な理由があってそうしているなら良いのですが、
なんか最近メイキングとか見てて、ともすれば「リニアスキンとモーフ縛り」って思考に陥ってないかな?と感じたりしたので。

1の方は色々とチュートリアルや記事も出てるんですが
特に2の方が疎かになるケースが多い感。
まあ、分かるんですけどね・・
ボーンの仕込みは細かい工夫やリグ作りで何とか都合つくけど、
変形回りはプラグイン導入とか開発とかになりがちで手が出せない、とか。
しかしプリレンダリングの映像であまりに「ボーン頼り、リニアスキンだけ」というのはさすがに時代が・・ねえ・・。
今でもできる事は色々あるし、今後も探索は続けなきゃやばいと思ってます。ソフト問わず。

この辺りはハリウッドのアニマトロニクスを参考に考えると分かりやすいのですが
(恐竜とか人の顔とかを人形で動かすやつ)

あれも骨格のコントロールは意外とシンプルで、
上にかぶせたシリコンとかのやわらかい変形によって自然な皴や皮膚を表現してるんですよね。

現在のCGにおいてはFEMベースのsimとか使えばそれなりにちゃんとした変形もできるんですが重かったりするので、
ある程度近似するためのコストの軽い手法としてリニアスキニングを使いつつ、
色んな人が軽くていい感じに変形してくれる手法を色々考えているわけです。
Dual Quaternionsとかimplicit skinningとかプロシージャルな皴生成とか色んなのが出たり消えたり使い物になかったり発展したり羨望の的で見られたりしてるんですね。

あと、いろんな手法ついでなんですが、
例えばゴッドオブウォーみたいにポーズスペースデフォーメーションで補助的な変形をゴリゴリ仕込んでいく方式もとても良くできていますが、
あちらもあくまで現行の実機上でキャラクターを動かすうえでの
最適化としてこの技術を使った、
という前提は意識しておく必要があります。

また、アンチャーテッド4のTDなどが作成した、
補助ボーンを自動計算/配置してソフトボディやボディの高度な変形を近似させる、という方式も一昔前から話題ですが、
あちらもそもそも
「各DCCツールで作った複雑な変形を、リニアスキンに変換してゲーム実機で動くように落とし込む」
という制約から生まれた変換技術なので
色々と高度な変形を前提にした技術というのは踏まえておくべきでしょう。

各種変形をボーン+スキンに変換するツール
Skinning Converter
https://vimeo.com/123883474

こちらは同じ人が変形とか色々含めて作ってるデモリール
Plugin and Nodal Demo Reel 2014
https://vimeo.com/100010209

唇のくっつきやコリジョンとか高度な変形ツールを色々作りつつ、ゲームに落とし込むためのスキン変換ツールも作ってる形ですね。

技術発表として出てくるものも、リアルタイムのゲームという制約の中で必要だったものなのか、ハイエンドの映像表現の必要から作られたものなのか、
みたいな開発の由来はある程度意識した方が良いでしょう。
もちろん応用として様々に使える事もありますが。

えーと雑多に書いたのですが
まとめとしては
「世の中リニアスキンと補助ボーンとモーフだけじゃないんやで」
と言いたいだけです。
いやあたりまえなんだけどね。

で、ここから次どうするかなぁ、どうなるのかなあ、
というのは自分も日々探ってる所なんですが

海外大手はすでにFEMベースのシミュレーションで皮膚や筋肉表現する方向に行ってて、
自分のような主に日本のアニメ系CGやってる方からすると計算コスト的に間に合わず
完全に置いてきぼりにされちゃってる感があり、どうしましょうねほんと・・

事前フレームから計算していく時間依存のsim形式じゃなくて
簡易的でも現在のフレームで自己衝突とかを解決してくれる時間非依存(Time independent)な手法がいいんだけど・・・・
まあ時間非依存のパラメータ変形や自己衝突解消とか色々手立てはあるし、(maxとかでも以前genomeでキャラクターのスキン変形補助や衝突判定作ったりしました)
この辺りの時間非依存の処理はHoudiniEngine経由で比較的簡単に実現できるので
何か色々プラグイン買うよりはHoudiniEngine導入しちゃった方がいいんじゃないかな、と思いつつあります。
houdini側でも時間非依存でFEMできたりもするし、もうちょっと掘ってみようかなあというところ。

(ちなみに2021/05現在、HoudiniEngineは前後のフレームを参照できない仕様なので、
例えば現在のフレームで皮膚のめり込んでる個所を押し出すとかはできるけど
前フレームを参照して速度を計算して残像をメッシュで表現する、みたいなのは苦手。
この辺り解決されればほんと色々できそうなんだけど・・)


ついでに以下、最近見てておもしろかったの

パテントとってるので使えないけどsonyのOffset curve deformation
(動画でスキン回り色々説明してて参考になった)
https://dl.acm.org/doi/abs/10.1145/1401032.1401105

DesneyのEfficient Elasticity for Character Skinning with Contact and Collisions
https://www.youtube.com/watch?v=KDvfFzFIruQ

3ds maxのClothify Pro
https://mariussilaghi.com/products/clothify-pro