僕のCGアカデミア

グラフィクス系(主にキャラクターアニメーションに関する)論文やアクティビティを簡単に紹介するログ

論文紹介: Learning Skeletal Articulations with Neural Blend Shapes

お久しぶりです、iwanao731です。 三か月ぶりの投稿です。最近仕事でDeep Learning始めました。2017年に卒業してからはしばらくはそれまでのアニメーション知識で何とかなっていたんですが、アニメーション分野もDLの流れに飲まれそうになってきたのでPytorchのチュートリアルやりながら論文の追実装等をしています。

色々と使いこなせるようになったらプライベートでも論文を書いて課外活動をしたいなと思っています。

Learning Skeletal Articulations with Neural Blend Shapes

youtu.be [ Project Page ] [ Paper ] [ GitHub ]

さて、今日は久々にリギングやスキニングのお話。 ここ1,2年でキャラクタやアタバーのスキニングに関する論文が増えてきています。その中で引用数を増やしているのが以前紹介したSMPLという論文。

iwanao731.hatenablog.com

概要

この論文では、人の体型をパラメトリックにしたものなのですが、実は体型だけでなく、姿勢に依存した変形も考慮したブレンドシェイプを再現しているんですね。 この体型モデルによって、動画から体型を推定しながらアニメーションさせて、自然なスキニングも再現できるのですが、一方で任意のキャラクタや4Dデータを入力として任意のアバターを作るようなケースでは、リトポロジーを行わなければならないといった大きな課題がありました。

本論文では、そういったリトポロジーを必要とせず、なおかつリギングも同時に行いながら、モーキャプのモーションを適用可能なセットアップを自動でやってくれる、といった至れり尽くせりな論文となっております。

手法

本手法が素晴らしいのはメッシュのトポロジーへの依存が少ないという点です。つまり、様々な頂点数のキャラクタ/アバターのメッシュに対して、リギング、スキニングを行うことができます。それを実現するためにMeshCNNと呼ばれる技術を使っています。MeshCNNは、Deep Learningの分野で画像に対して行われるCNNの処理に近いConvolutionをMeshに対してできる技術で、SIGGRAPH'19に発表されたものです。

トレーニング時にテンプレートとなるメッシュをMeshCNNでConvolutionし、Deep Vertexと呼ばれる洗剤空間とSkinning Weightをそれぞれ出力するようにし、最終的にそれらからDecodeしたモデルが、テンプレートをあるポーズにスキニングした結果になるようにするようにします。(Envelope Branch)

最終的には、任意のメッシュのテンプレートとスケルトンを入力するとジョイントの位置とスキニングウェイト、そしてポーズに依存した変形要素を生成し、ポーズ情報からそのブレンドウェイトを自動推定するといった流れになっています。

画期的な点

既存のリギング手法では、任意の任意のスケルトン構造で推定することができず、モーションリターゲットしづらいといった問題があったのですが、本手法ではモーションリターゲットをサポートできるように任意のスケルトン構造でリギングとスキニングを同時に行うことができる点がまず素晴らしいと思います。

また、ポーズに依存した変形をブレンドシェイプとしてassignし、ポーズ情報からそのブレンドウェイトを推定するというのも、現在のゲームエンジンプラットフォームに非常に溶け込みやすい技術として設計されています。

まとめ

自分もこれやりたかったので先にやられてしまいましたが、とにかく素晴らしい論文だなと思いました。 コードも公開されており試してみましたが、スキニングやリギングの精度はまだまだ改善点はありそうです。