MMDモデルをC4Dで使えるようにする方法(ウェイト/モーフ/Mixamo対応)

f:id:Lethe_movie:20210124033843p:plain


※注意!※

この方法を試す前に試してみるMMDモデルのReadmeをしっかり読んでください!モデルの中にはMMD等ソフト以外に持っていっていけないものもあります。その場合はもちろんダメなのでMMDで使用しましょう。特に問題ないようであっても、しっかりと規約を守り、制作者さまからお借りしていることを忘れずに使用しましょうね!


目次

1. 自己紹介と動機
2. この記事でできるようにすること
3. リファレンス
4. C4Dへのモデルインポート
5. モデルの確認
6. ジョイント階層の整理
8. Mixamoでのモーションダウンロード
9. モーションシステムの使い方
10. 終わりに

1.自己紹介と動機

初めての人は初めまして、Letheと申します。映像を見ることとつくることが好きで、最近はCinema4Dでのキャラクター関連をずっと弄っています。
以前こういう記事も書いていたので、まだ見ていない方は是非見て頂ければ嬉しいです。MMDのダンスモーションをC4Dでレンダリングしたいという場合はこちらのやり方が適しています。

note.com

ただ、やはりC4D上でキャラクターモデルを自由に動かしてみたいなと思って、夏休み期間に死にそうになりながらC4Dを弄って、やっとその手法を確立しました。

このツイートが(思ってたより)反響が大きかったので、こちらに書こうと思います。
加えて、C4Dにおけるキャラクターについてのチュートリアル、特に日本語のものは非常に少なく、いざやってみようにもなかなか難しいのが実情です。私も非常に苦労しました。そこで、少しでもそういった人の助けになったらいいなという気持ちで書いています。知っておいた方がいい予備知識なども載せておこうと思うので、よろしくお願いします。
最後になりますが、私の文章かなり下手なので読みにくかったらすいません!分からない箇所あったらDMにてお気軽にお聞きください。

追記

Mixamoリグに対応させないで、MMDジョイント階層のままでインポートしたいという場合、最下の追記に、せむさんが紹介してくださった方法があります。そちらを参照してみてください!

2.この記事でできるようにすること

この記事でできるようにすること、到達点としては以下の三つにします。

①元のウェイトを保ったまま、ジョイントを動かしてモデルを動かせる

②元のモーフを維持しておくことができる

③Mixamoからモーションを持ってきて、それでモデルを動かせる
正直言うと上の二つはプラグインの問題なので特に面倒ではなく、③を重点的にやっていくことになります。

あともう一つ大切な工程で「シミュレーションを設定して自然に髪揺れ/スカート揺れなどを作る」というものがありますが、書こうとすると非常に膨大になりますので別記事に書こうと思います。

3.リファレンス

本編を始める前に、リファレンスを紹介します。私がこの手法を確立するにあたって、勉強させていただいたものです。
3DCGにおけるキャラクターの制御はけっこう難解で、初心者の方はある程度勉強しておかないと地獄を見ます(自分がそうだった)…ので、本記事に取り掛かる前に最低限の知識は取り入れておいたほうがいいです!「ウェイトとは何か」と聞かれて分からなかったら確実に積むので、下に挙げるウワンさんのチュートリアルは見ておきましょう。
また、困ったときにここから他記事を参考にすることのもいいと思います!

はじめてのCinema 4D
皆さんご存知のあの本です。後半でキャラクターにガッツリ触れているので、ここから勉強すると良いと思います。本記事では元々あるモデルをC4D用に変えていくことを主旨にしていますが、自作している方はこちらの方が役立ちそうですね!

キャラクターアニメーション基礎 - MAXON
MAXONが出している公式チュートリアル動画です。ウェイトペイントから細かいリグの設定まで一通り学べます。ただ、動画内で使っているバージョンが古く、UIが今と全然違う、使い方の説明だけで「何をしているのか」という説明があまりない、などがあります。困ったらこれを見てみるのも良いでしょう。またコントローラーリグについては非常に細かく説明されていてとても参考になります。

【Lecture:17 Blender】Blenderでリギング!モデルを動かしてみよう!~リグの基本編~【Medium】 - ウワン
こちらはウェイトについてしっかり説明されている動画です。これで私はウェイトについて理解できました…!ちなみに説明動画はBlenderなんですが、ウェイトについての根本的なものはC4Dと変わらないので問題ないです。というか、C4Dで、日本語で、丁寧にウェイトについて説明されている、チュートリアルはたぶん無いと思います…!

HK3D.jp
コンノヒロムさんのサイトです。C4DやUE4についての記事がたくさん投稿されています。C4Dでのキャラクターについて日本語で丁寧に解説されている貴重な資料なので、必ず目を通しておいた方がいいです!

Studio ヤクモレオ
ヤクモレオさんのサイトです。C4DやAEなどのいろいろ記事も投稿されています。C4Dのキャラクターまわりの記事もあるので見ておくといいと思います。他の記事もですが、とても読みやすいです!

4.C4Dへのモデルインポート

まずC4Dにモデルをインポートさせる方法です。これは、
(1)PMXモデル → Cats Blender Plugin → Blender → FBX → C4D
(2)PMXモデル → mmd_tools → Blender → FBX → C4D
(3)PMXモデル → MMD TOOL →C4D
の3通りがあります。それぞれ説明します。

(1)PMXモデル → Cats Blender Plugin → Blender → FBX → C4D

こちらは、Cat Blender Pluginというアドオンを使ってBlenderにPMXモデルをインポートし、そこからFBXでC4Dにインポートするという方法です。この方法が最も最適です。この記事も基本これに沿って進めていきます。

github.com

右上のアドオンのパネルから「モデルのインポート」を押して、モデルを読み込みます。読み込まれたら、最適化の「アトラス」を押します。処理が終わったらBlenderの上の帯から、ファイル→エクスポート→.fbxで出力してください。OBJとかだと必要な情報を共有できないので必ずFBXで出力してください!
f:id:Lethe_movie:20210121144519p:plain

C4DにそのファイルをD&Dして、以下のようになるはずです。ここで一旦終了です。一応オブジェクトパネルの構成もチェックしておいてください。
f:id:Lethe_movie:20210121151657p:plain

(2)PMXモデル → mmd_tools → Blender → FBX → C4D

こちらは、mmd_toolsという②と違うアドオンを使った方法です。
このアドオンの場合、Cats Blender Pluginのように最適化してくれないので、テクスチャパスからジョイントの階層修正、それに伴うウェイトの塗り直しなど自分で行わなければならないところが増えます。あまり推奨されません。

github.com

アドオンのパネルのModelのImportからモデルを読みこみ、Blender自体のエクスポートから.fbxで出力します。ちなみに、アドオンパネルのModelのImportの下のExportは、MMDモデルをエクスポートするためのボタンなので使えません。必ずBlender自体のエクスポートから出力してください。
f:id:Lethe_movie:20210121033126p:plain

C4DにそのファイルをD&Dしたら、以下のようになんかゴツゴツしていると思います。rigidbodysに入っているメッシュなんですが、これはColliderという物理衝突判定用の仮メッシュです。たぶん使わないので消してしまって問題ありません。要ると思うなら非表示にして邪魔にならないようにしましょう。あとjointsっていうのもありますが消します。 f:id:Lethe_movie:20210121163141p:plain

マテリアルのリンクまでつなぎなおして、この状態になると思います。ここでいったん終了です。一応オブジェクトパネルの構成もチェックしておいてください。
f:id:Lethe_movie:20210121164111p:plain

Cats Blender Pluginは、外部ソフトのキャラクターモデルをBlenderで簡単に扱えるようにするアドオンで、mmd_toolは、MMDモデルをBlenderで編集してMMDで使えるようにするアドオンのようですね。

(3)PMXモデル → MMD TOOL →Cinema 4D

他ソフトを介さないで行える唯一の方法なんですが、非推奨です。先ほど確認してみたところ、C4DR21、R22は動いたんですがR23でモデルインポートボタンを押しても反応せず、どうやら対応していないみたいです。また、使えたとしても色々とめんどくさいバグがあるので止めておきましょう。古くて更新も止まっているようなので仕方ないですね…一応リンクを貼っておきます。ちなみにバグとは、(R21で)インポートしたときに総ポリゴン数が元の何十倍にもなり、ポリゴン分割などポリゴンに再計算をかけるとそれは治って元のポリゴン数に戻るんですが、そうすると今度は選択範囲タグの選択範囲がおかしくなって色々なところで欠けるようになるというものです。手動で修正すれば治せますがとんでもなくめんどくさいです…(ならない場合もあります)

nitro4d.com

5.モデルの確認

ここでは、モデルが問題なくインポートできているかの確認を行います。地味に大切な箇所で、見落とすと一からやり直しになるのでしっかりやりましょう。
確認する内容は以下の四つです。
(1)ウェイトが問題なくインポートできているか
(2)モーフが問題なくインポートできているか
(3)初期ポーズが問題なくインポートできているか
(4)マテリアルが問題なくインポートできているか
それぞれ確認方法と、ダメだったらの打開策を書いていきます。

(1)ウェイトが問題なくインポートできているか

確認方法
まずは、C4Dのオブジェクトマネージャからメッシュのスキンデフォーマを見つけ、オンになっているか確認しましょう。そしてジョイントを動かしてみて、一緒にメッシュが動くかどうかを確認します。ここで、「選択フィルタ」というコマンドを使ってメッシュの選択をオフにしておくと操作しやすいです。是非ショートカット登録しましょう。

上手くいかなかったときの打開策
f:id:Lethe_movie:20210121164847p:plain
上の画像のようにメッシュが動かない場合、
Blenderアドオンのインポートが上手くいっていない
②Cats Blender Pluginのアトラスとモデルの相性が悪かった
Blenderの.fbx出力設定が間違っている
④C4Dの.fbx入力設定が間違っている
の四つが挙げられます。
①から確認していきましょう。もう一度Blenderにモデルをインポートしてみて、ジョイント(Blenderだとボーン)を動かして確認してみてください。ここで上手くいかなかったらアドオンを変えてみてください。
②アトラスをかけた後おかしくなっている場合は、アトラスをかけないでFBX出力してください。この場合マテリアルパスやジョイント階層整理の手間が増えます。
Blenderで上手く動く場合、FBXの設定が間違っていることになります。設定を確認してみてください。

(2)モーフが問題なくインポートできているか

まずメッシュのオブジェクトの子に「Poses : Body」というヌルとその子にたくさんのメシュが入っていることを確認してください。外からモーフのあるモデルをインポートした場合、モーフの変形がこことリンクするようです。一番親のメッシュのモーフタグを見つけ、パラメータを動かしてみてください。

上手くいかなかったときの打開策

f:id:Lethe_movie:20210121171551p:plain
ポーズモーフ「お」が100%なのに口が動いていない
上の画像のようにメッシュが動かない場合、打開策は(1)とほぼ同様です。とにかく試してみてください。

(3)初期ポーズが問題なくインポートできているか

ここでは、ジョイントが正常な向きになっていて、初期ポーズが問題ないかどうかを確認・修正します。パッと見て問題なさそうでも、次の手順は行っておいてください!
メッシュのオブジェクトのウェイトタグを開いて、「バインドした初期ポーズに戻す」を行ってください。ジョイントがインポート時にずれていた場合は、メッシュが動くはずです。動かなかったら何も問題ありません。
f:id:Lethe_movie:20210121192831p:plain

これは私の例ですが、Cats Blender Pluginのファイルはこんな風に足が曲がって入っていました。ウェイトタグでワンポチで修正できました!
f:id:Lethe_movie:20210122000412p:plain

(4)テクスチャパスが問題なくインポートできているか

モデルを確認してみて、テクスチャが入っていなかったりどう見ても違う場合は交換しましょう。ここは後からでも変えられるので、気づいたらでいいです。目の特殊モーフとか微妙に見つけにくいもので気づいたらテクスチャなかったってこともあったりします。


私の場合、Cats Blender Plugin 、mmd_toolsともにどの項目も問題なくインポートできました。Blender2.82、Cinema 4DR23です。 ウェイトタグの「初期ポーズに戻す」で、Catsだと足、mmd_toolsだと腕の捻じりと足が少しずれていたぐらいです。 ただ、こういうものはモデルとの相性もあるので、上手くいかなかったら原因を考えて何度も試してみて下さい。


6. ジョイント階層の整理

正常にインポートできたようなので、ここからはジョイント階層を整理していく工程に入ります。
Mixamoのモーションを流し込めるようにするには、Mixamoリグというジョイントにしなければなりません。ということは、現状の階層(Cats Blender Pluginの場合は補助骨も設定されているMixamoリグに近い階層 / mmd_toolの場合は準標準ボーンと呼ばれるMMDのジョイント階層のまま)をMixamoリグに変更していくということです。

ここでいうMixamoリグ/準標準ボーンというのは、単にジョイントの命名や個数、階層が違うだけでどちらもジョイントで構成されています。気になる方はこちらの記事を読んでみて下さい→note.comいろいろなキャラクターの骨構造を比べてみる2019【10キャラ】|ks|note

流れとしては、
①ジョイントを整列させる
②キャラクタージョイントとシミュレーションジョイントを分ける
③他のジョイントを調整する
となります。それぞれ説明します。

①ジョイントを整列させる

ジョイントを整列させます。一旦メッシュのスキンデフォーマをオフにしてください(やらなくても問題ありませんがモデルが爆裂する姿を見ることになります)。ジョイントをすべて選択して、「整列」を押します。
f:id:Lethe_movie:20210122022602p:plain

その後、メッシュのウェイトタグを選択して、「現在の状態をバインドポーズとして設定」を押します。忘れずにスキンデフォーマをオンに戻しておきましょう。
f:id:Lethe_movie:20210122022756p:plain

これは何をやっていたかというと、ジョイントを"正しい"位置に整列し直しています。
少し考えてみると分かりますが、ジョイント(一本鎖の場合)は長さ(位置パラメータ一つ)と角度PSRで位置を定義できます。ということは、逆に他の位置の値が入っていてずれていると少々扱いにくくなってくるんですね。 現状では問題ありませんが、後ほどシミュレーションなど設定するようになるとこれが重要になってきます。

そして、一旦Armatureヌルを消します。やらなくてもいいんですが、変なスケールが入っているのが気になるので...消すことでHipsのスケールと相殺されます。その後以下の画像のように少し整理します。ここで、作成するヌルは「ヌルオブジェクトを追加」コマンドで作成しましょう。「オブジェクトをグループ化」でヌルを作成すると、子の値が変わって親に引き継がれます。それは困るので親のヌルは位置と回転が0、スケールが1のクリーンな状態にしておきましょう。C4Dは階層を大切にしますが、キャラクターにおいてはより重要になっていきます。丁寧に扱っていきましょう。「Charactor Joint」と「Simuration Joint」は②で説明します。一番上のヌルはキャラクター名です。
f:id:Lethe_movie:20210123020655p:plain

またジョイントをすべて選択して、位置と回転のパラメータにキーフレームを打ちます(0Fであることを確認してください)。
f:id:Lethe_movie:20210124015713p:plain

これは、間違えてジョイントを動かしてしまった時でもすぐ元の初期値に戻せるようにしています。初期値というものは、ウェイトによって歪まされていない非常に重要なものなのです。
また、初期値の保存方法は他にもあります。例えばトランスフォームパラメータの下にある「すべてを固定」です。ここに初期値を保存することで、もしずらしてしまっても「PSRをリセット」コマンドですぐ元に戻すことができます。ただこれはあくまでC4D内で通用するので、Mixamoやトラッキングデータなど外部のデータを扱うときは位置・回転がおかしくなるのでやめましょう。自分で全部アニメーションつけるなら問題ないと思います。
ウェイトタグの「バインドした初期ポーズに戻す」もありますが、これは絶対値参照のようで一番親のヌルを動かした先で押してしまうと事故ります。最終手段としてとっておきましょう。
また、最後の方でモーションシステムによる初期値保存方法も行います。これは専らモーションシステムでアニメーションを扱う段階に入ったら、の話です。

②キャラクタージョイントとシミュレーションジョイントを分ける

ここで言うキャラクタージョイントというのは、実際に「骨」としてあるジョイントを指しています。つまり、頭、首、背骨、足、肩、腕、指です。シミュレーションジョイントは、その他の、髪、スカート、リボン、フリル、アクセサリなどの揺れもののために入っているジョイントです。また、胸(Bleast)ジョイント、ひねりジョイントもキャラクタージョイント階層に入っているとMixamoリグ的に邪魔になるのでシミュレーションジョイントの方に移動させます。

ひねりジョイントとは、補助ボーンと呼ばれるもので周りのジョイントが大きく回転したときにモデルの破綻を防ぐ役割をしています。 このモデルの場合では、大半がそうだと思いますが、腕と手首に入っていました(黄色のジョイント)。
f:id:Lethe_movie:20210123035028p:plain
詳しく知りたい方はコンノヒロムさんが丁寧に解説してくださっているのでこちらを見てみてください。 hk3d.jp

実際に、大体どのモデルにもある髪ジョイントで例を示します。まずその髪ジョイントの親であるHeadジョイントを選択し、「ヌルに変換」コマンドを押します(C4Dの上の帯の、キャラクター→変換→ヌルに変換)。すると、Headボーンの同階層にHeadヌルができました。
f:id:Lethe_movie:20210123014259p:plain

これをSimuration Jointの子にします。ただ、こうするとモーションさせたときにHeadジョイントに追随しないので、コンストレイントで繋ぎます。「PSRコンストレイントを追加」(C4Dの上の帯から、キャラクター→コンストレイント→PSRコンストレイントを追加)を押して、Headヌル→Headジョイントの順に複数選択するとコンストレイントが追加されます。Headヌルにコンストレイントタグがついていることを確認してください。Headジョイントについている場合は、選択順が逆です。私もよく間違えます… f:id:Lethe_movie:20210123021309p:plain

ここでなんですが、コンストレイントの設定で、X優先順位をエクスプレッションで「1」にしておいてください。これをやらないとモーションのプレビュー時にコンストレイントで繋げている階層の挙動がおかしくなります。 f:id:Lethe_movie:20210123021837p:plain

これはC4Dの計算順を変更しています。詳しく知りたい方はこちらC4D エクスプレッションの処理順位… X優先順位: 村人とC4Dを確認してみてください。実は私もよく理解していなくて、依頼先の人に教えてもらいました()

Headヌルが終わったら、Headジョイント以下の髪ジョイントを移動させます。一応ですが、Neckジョイントを回転させてちゃんとHeadヌルが追随しているか確認しておきましょう。
f:id:Lethe_movie:20210123042533p:plain

後は、他のスカート、アクセサリのジョイントなども移動させておきます。胸、目、ひねりジョイントも同様です。今回のモデルでは以下のようになりました。紫がキャラクタージョイント、緑が髪のジョイント、水色がスカートのジョイント、オレンジが胸周りのアクセサリのジョイント、黄色がひねりジョイントです。一応階層の方も見ておいてください。
f:id:Lethe_movie:20210123042342p:plain

③他のジョイントを調整する

ここでMixamoリグの仕様と同じにします。まず見本が必要なので、Mixamoからモデルを持って来ましょう。Mixamoは無料なのでAdobe CCなど必要ありません。リンクはコチラです。
www.mixamo.com
Charactorからお好きなモデルを選択して、Downroadで落として、C4Dに「プロジェクトをマージ」で入れます。このとき「含まれているテイクに再設定しますか?」と聞かれますが「いいえ」を押してください。
今回はXBotくんを召喚しました。
f:id:Lethe_movie:20210123041704p:plain

MMDでは基本Aポーズですが、MixamoはTポーズです。あまり気にしないようにしましょう。また、全体の大きさ、位置を変更したい場合は一番親のヌルで変更しましょう。
現状はジョイントの値を初期値から変えないでおきます。

では、現状のジョイント階層とMixamoリグを比較していきます。私の場合では、目と頭先、足先のジョイントが違いました。

f:id:Lethe_movie:20210123050810p:plain
Mixamoリグでは目先のジョイントがなく、頭先のジョイントがある

f:id:Lethe_movie:20210123051154p:plain
足先のジョイントが高さと方向が違う

目と頭先では、どちらもウェイト関係ないのでそのままジョイントを消したり増やしたりすることで整理しました。階層弄ったらキーフレームを打っておきましょう。

末端のジョイントについて
C4Dでは、末端のジョイントはビューポート上で1つ上のジョイントの先になり、実体はありません。整列済みであるなら、位置、回転のパラメータは0になっているはずです。
また、一般的にウェイトをふりません。ただ、MixamoリグのLeftEye/RightEyeジョイントはウェイトをふって末端は無しになっているので、それに合わせています。

ここからは足先はジョイントを増やさなければならない、つまりウェイトを弄らなければならないので、ウェイト弄りをちょっと書いていきます。
まずは下準備から。レイアウトをRiggingに変更してください。ウェイトマネージャ→表示→サーフェスカラー→ゼロの色を黒から少し明るくします。こうすることによって、ポリゴン線を表示したときに0のところでも見えるようになります。
f:id:Lethe_movie:20210123053557p:plain
また、ウェイトマネージャ→ジョイントフィルタ→「順に階層表示」にします。個人の問題かもしれませんが、「順にフラット表示」はとても見にくいです。
f:id:Lethe_movie:20210123054127p:plain
ジョイントを動かして、Mixamoリグと同じような位置に移動させます。このジョイント(Toe)の場合、親指の付け根あたりにします。ジョイントを動かしたら、忘れずに「整列」、「現在の状態をバインドポーズとして設定」、位置と角度にキーフレームを打っておきましょう! f:id:Lethe_movie:20210123055229p:plain
Bodyメッシュを選択した後、ウェイトマネージャ→ジョイントの上で右クリックして、「すべてロック」をしましょう。ロック機能を上手く使うことで、ウェイトペイントが少し楽になります。また、自動ウェイトをかけてもロックがついているものは変わらないので、任意のジョイントだけ自動ウェイトをかけることも可能になります。
f:id:Lethe_movie:20210123064819p:plain
これから編集する足先のジョイントだけロックを解除しました。元々Left_toe_endジョイントがウェイトタグに入っていなかったのでドラッグでオブジェクトマネージャから追加しています。
f:id:Lethe_movie:20210123065553p:plain
ウェイトを塗ります。塗る対象のジョイントを選択して、ウェイトツールで塗っていきます。ここは経験の差が出てくると思いますが、ウェイトツールはけっこういろいろな機能があるのでうまく使うとストレスなく塗れると思います。個人的にはモードの「スムーズ」が非常に使えます。今回の足先は、適当に加算した後はスムーズで整えてという感じでした。たまにジョイントを回転させて思うようにスキン変形しているかをチェックしましょう。忘れずに反対側も塗ります。ここが峠なので終わったら後は楽です!
f:id:Lethe_movie:20210123073614p:plain
最後に、ジョイントをまたすべて選択→整列→キーフレーム更新をしておきましょう。これが本当の最終的な初期値になります。また命名を見直して、(自分に)分かりやすいように変えておいてください。Mixamoの工程以降は、初期値や命名の変更はできません。

  1. ジョイント階層の整理 では基本Cats Blender Pluginのジョイント階層と仮定して話を進めてきました。
    mmd_toolsの方だとMMDのジョイント階層そのままで、Mixamoリグに直すまでかなり手間がかかると思います。リファレンスでも紹介したこちらの説明を見ながら頑張ってやってみてください...
    キャラクターアニメーション基礎 - MAXON

//

なぜこの工程以降ではジョイントの初期値や名称を変えてはいけないのか
まず初期値からですが、これはMixamoのシステムと関係しています。普通、モデルは体格など千差万別なので初期値はまたそれぞれ違います。しかしMixamoはすごいサービスなので、初期値を考慮して、そのモデルにあったアニメーションのキーフレームを作成してくれます。ただ、途中で初期値を変更してしまうと、初期値を変更する前のMixamoアニメーションと後のMixamoアニメーションで、キーフレームの辻褄が合わなくなります。そういう理由です。
また名称は、C4Dのモーションシステムと関係しています。モーションシステムでは、モーションソースを流し込む際に名称と階層順で判定します。なので、初期値と同じように齟齬が生じると上手く動作しません。また階層順については、完全に一致していなくても実は問題なかったりするんですが、ナメすぎると痛い目を見るので基本慎重にコンストレイントを上手く使って丁寧にいきましょう…

8. Mixamoでのモーションダウンロード

やっとここまで来れましたね!ここからはMixamoからモーションを落としてモデルに適用していく流れになります。まず今開いているプロジェクトファイルを一旦保存してから、Hips以下のキャラクタージョイント以外すべて消してしまってください。そして、そのジョイントだけになったファイルをFBX出力します。
FBX出力するときの設定ですが、FBXフォーマットの設定を「Version 7.1(2011)」にしてください。(この前最新のバージョンに対応したって聞いてたんですけど私の場合上手くいきませんでした)
f:id:Lethe_movie:20210123215418p:plain
Mixamoを開いて右の「APPROAD CHARACTOR」からFBXをアップロードしてください。問題なくアップロードできれば以下のような画面になるはずです(ここで上手くいかなかった場合、FBXのバージョンやジョイント階層の違いが考えられます。色々試してみて下さい)。お好きなアニメーションを適用して、「DOWNROAD」してください。これでここのパートは終了です。早いね!
f:id:Lethe_movie:20210123223504p:plain

9. モーションシステムの使い方

さてここからはモーションシステムを使って簡単にアニメーションを管理する方法を少し紹介していきます。まず先ほどMixamoからダウンロードしてきたファイルを新規ファイルで開きます。一応ちゃんとアニメーションすることを確認してください。そしたら、Hipsを選択して、C4Dの上の帯→アニメーション→モーションクリップを追加、でモーションクリップを作成します。

f:id:Lethe_movie:20210123224727p:plain

以下のようなウィンドウが出てくると思います。キャラクターアニメーションなので、角度以外はキーフレームは必要ないので角度のみ、名称はしっかり付けてOKしてください。

f:id:Lethe_movie:20210123225108p:plain

するとこのように、タイムラインがモーションモードに切り替わり、モーションクリップがHipsのモーションレイヤーに入ります。またオブジェクトマネージャのHipsジョイントにモーションタグが付きます。これでモーションシステムが使えます。

f:id:Lethe_movie:20210123225952p:plain

次に、このモーションクリップを保存して、他のPFでも使えるようにします。対象のモーションクリップを選択した状態で、右端を右クリック→「モーションソースを保存」です。.c4dsrcというのがC4Dのモーションソースの拡張子です。ちなみに、「モーションソースプリセットを保存」でも他ファイルと共有できますが、外部とのモーションソースのやり取りがある場合は保存場所が分かりやすい「モーションソースを保存」でいいと思います。お好きな方で…
f:id:Lethe_movie:20210123230131p:plain

モーションモードについて
キーフレーム単位ではなくアニメーション単位で管理できるので、キャラクターアニメーションを製作するには非常に便利な機能ですが、アニメーションを管理するものがキーフレームのドープシート以外にもう一つ増えることになるのでややこしくなり、そして事故も増えます。事故はできるだけ避けたいので、基本原則だけでも書いておきます。
・モーションソースがあるところは、キーフレームより優先されて、モーションソースのアニメーションが反映されます。
・モーションソースがないところはキーフレームが優先されますが、キーフレームもないところは、一番最後に入力されたポーズのままになります。
まぁいろいろ触って慣れていってください...詳しく知りたい方はこちら→
www.maxonjapan.jp

では、やっとメッシュのある本来のプロジェクトファイルに先ほどのモーションソースを適用していきたいんですが、その前に初期値の保存のためのモーションソースを作成します。メッシュまで入っているプロジェクトファイルを開き、まず0Fに初期値のキーフレームが打たれていることを確認してください。そこから前の手順と同様にモーションクリップを作成します。長さはあまりこだわらなくてもいいですが30Fほど、初期値なので位置と角度を記録します。

f:id:Lethe_movie:20210124025921p:plain

初期値のモーションソース化もできたので、やっとアニメーションを適用します。モーションモードの右端を右クリックして、「モーションソースを読み込み」で先ほど保存したMixamoアニメーションを読み込みます。読み込めたら、ドラッグでAポーズモーションクリップの横に置いてみましょう。ここで、最初のAposeとMixamoモーションを少し嚙ませるようようにします。これは、ジョイントの角度がジャンプすることを避けるためです。あまりに早く動かすとシミュレーションさせたときに良くない結果を出す原因になります。現時点ではシミュレーションしていないので問題ありませんが、まぁ…

f:id:Lethe_movie:20210123234840p:plain

ということで全行程終了です。お疲れ様でした!Mixamoから色々アニメーション落としてきて、遊んでみてください!

f:id:Lethe_movie:20210124030058p:plain

10.終わりに

 注意事項

実は今までのやり方には決定的な弱点がありまして、それは頂点を編集することができないということです。もうすでにやってみた方もいらっしゃると思いますが、モデルに「最適化(近接頂点をマージするやつ)」などをかけるとすごいことになります。
なぜこれが起こるかというと、原因はモーフにあります。外部からのFBXでインポートしたモデルは、モーフのアニメ―トがメッシュの子にある「Poses:Body」とリンクしているようなんですが、それが頂点編集によって齟齬が生じてしまい、あのような結果になると考えられます。現状どうにもならないので、モデルの改造でもしない限りあまり触らないようにしておくのがいいと思います…
どうしても頂点編集を行いたい場合、解決方法は3つほどあると考えられます。
1つ目はモーフタグを消してしまうこと。モーフを一度消してしまって自分でモーフを作れば問題なくなります。C4D内でモーフを作成する場合はこのような問題は起こりません。
2つ目はメッシュとPoses:Bodyのポイントを同じにすること。メッシュ側で頂点を弄るならば、Poses:Bodyも同じ頂点にすれば上手くいく…はずです。やってみたことないので誰か検証してみてください...
3つ目は「MMD TOOLS」を使うことです。ただこれはR23に対応していませんし、バグが起こる可能性があり、MMD階層のままなので調整に手間がかかります。R22以下が使えるようであったら試してみるのもいいかもしれません。

最後に

ここまで読んでくださってありがとうございます!今回は読みやすさなども結構頑張って、今年はプログラミングを勉強しようと思っていたのでマークダウン記法で書いてみました。これを読んでC4Dでキャラクターに挑戦してみる人が少しでも増えてくれるといいなと思っております。
そして今回の作例でセットアップしたモデルは、どっとライブ所属の「木曾あずき」さんです。是非チャンネル登録よろしくお願いします~!

www.youtube.com

追記

せむさんがUnityとBlenderを経由させる方法を紹介して頂きました。この方法だと、モデルの軸方向を保ち、ウェイト、モーフを維持し、最もファイルサイズが少なくなるという利点があります。 上記の注意事項のモーフについての件もある程度解消されています。 Mixamoリグに対応していなくとも、自前でアニメーションを作る方はこちらを参考にやってみるといいと思います!

note.com

Model Credit : (C)Appland, Inc.