mixamoモデルにひねりボーンを追加する

ご存知の方も多いかと思いますが、Adobeがmixamoという3Dキャラクターのオンラインサービスをやっています。

mixamo

日本語ヘルプがわりとみつかりにくいとこにあるのでリンク貼っておきますね。

Mixamo を使用した 3D キャラクターのアップロードとリグ設定

Mixamo を使用した 3D キャラクターのアニメーション化

mixamoは人型の3Dキャラクターモデルにモーションキャプチャベースのアニメーションをつけられるサービスで、Adobe CCの一部かと思ってたらどうやらAdobe IDがあればタダで使えるみたい……?(詳細未確認)

キャラクターモデルは、サイトにある既存モデルを使うほかに、Adobe Fuseで作ったものをアップしたり(こちらはAdobe CCです)、あるいは自分のモデルをアップしたりして、mixamoサイト内で自動でセットアップさせることもできます。mixamoの自動スキニング(ジョイントウェイト設定)がかなりよくできていて、正直なところCinema 4Dの自動ウェイトよりずっといい結果になります(ただし人型しか認識できません)。既にスキニングが済んでいるキャラクターモデルをアップした場合は、スケルトンの構造がmixamoと互換性があればデフォルトの軸角度が違っていてもそのままモーションをつけてくれます。スゲエ!

mixamoのモーションは2千種類以上あり、「ブレイクダンス」とか「ライフルを持ってるアクション」とかの共通する要素を含むバリエーションが豊富なので、ノンリニアアニメーションでちゃんとつながりそうなのが多いです。モーションにいくつか調整できる項目がついてるものもあります。

ひねりボーンを追加する

と、いいことずくめのようなmixamoですが、難点がひとつありまして、四肢のひねりボーン(Twist Bone)が入ってないのです。なので、肩を大きく動かしたり手首をひねったりするポーズがあると、メッシュがあっさり破綻してしまいます。惜しい!

そこで、Cinema 4Dでひねりボーンを追加する方法を解説しました。54分もあるのでお暇なときにでもご覧ください。音声なし字幕のみなので、適当に一時停止したり巻き戻したりして見るとよろしいかと思います。

後からボーン(ジョイント)を足すと、ジョイントウェイトの配分を修正しなくてはいけないのですが、C4Dのウェイトマネージャにある便利機能を使えばわりと簡単です。ひねりボーンにはモーションデータが影響しないので自動で制御する必要がありますが、その方法についても説明しています。

最後の方におまけとしてmixamoのモーションを4つつなげたノンリニアアニメーションの例を挙げてあるので、「要するに何ができるんだよ」って人はそこだけ見てもいいかも。

ひねりボーンの自動制御について掘り下げた話

以下はキャラクタのリギングを自分でや人向けのこまかい話になります。

上記の動画の中で説明している「ひねりボーンの制御にIKの3Dソルバーを使う」という方法は、実は僕もわりと最近になって気がついたもので、こんな便利な機能あるなら先に教えてくれよとドイツに向かって叫びました(Cinema 4Dのヘルプを見ても3Dソルバーの説明は意味不明なのです)。

オブジェクトを狙った方向に向かせ、かつ「ひねる」動作は固定するという場合、コンストレイントの照準(Aim)とアップベクター(Up Vector)を併用するのがセオリーです。ただ、この動作を簡単に自動化できるのはあまり可動域が大きくない場合に限られます。アップベクターのターゲットが同位置で固定されている場合、エイムとアップベクターの向きが重なって「ひねり」が不定になったり、アップ方向が途中から逆転したりしてしまうのです。

似たような方法として「ロックタグ」で「ローカル角度B」を固定してしまうやり方もあるのですが、こちらも同様にピッチ方向プラスマイナス90°を超えると角度がジャンプします。やはり可動域が大きいときはあてにならない方法でした。

それに対してIKの3Dソルバーの場合、角度のHPBはいずれも変化するのですが、どれだけ動かしても見かけ上はねじれは起きません。「初期状態」と「ターゲット方向」の間をクオータニオンで補間して角度の変化を最小にしてから角度をHPBでオブジェクトに渡すような仕組みに見えます。なので、HPBの値だけ見てるとでたらめに見えますが、結果的にはひねりボーンはどっちを向いてもねじれず維持されます。

設定も3DIKを使う方法がいちばん単純です。ちなみに2Dソルバーの「ポールベクター」を空欄にしておいた場合もボーンが1個だけなら動作は3Dソルバーと同じになるみたいですが、お作法として明示的に3Dソルバーを選択するほうがよろしいかと思います。

これら3つの手法を比較した動画も上げました。物好きな方はどうぞ。

どうせmixamoの話をするなら、スケルトンの互換性の話とかC4Dのモーションシステム(ノンリニアアニメーション)の話のほうが需要あると思うのですが、今回は自分の興味を優先しました。C4Dのモーションシステム、機能的にはとても強力だしモーキャプデータ使うなら必須ともいえるので、そのうち紹介したいとは思っています。