MMDモデルへのRigify適用

はじめに

ありがたいことにRigifyの記事が増えており、Rigifyでもっと遊んでみたい。 MMD向けのモデルが大好きなので、Rigifyを適用してBlenderで使いやすくしてみる。

注意事項

レミリアモデルでしかテストしていないので、 他のモデルに使用するにはコード修正が必要と思われます。

MMD以外での使用を禁止しているモデルが多いので、 ご利用の際はモデルのREADMEをよくご確認ください。

MMDモデルのインポート

ここではフリック氏配布のレミリアモデルを使用する。

URL : http://seiga.nicovideo.jp/seiga/im2651527

MMDモデルのインポーターは、sugiany氏作成のものを使用する。

URL : https://github.com/sugiany/blender_mmd_tools ※2015/12/20時点での最新のものを使用。

インポート直後の画像はこちら。

img

インポート後の設定は好みだが、ここでは以下の5つの設定を行う。

  1. マテリアル設定 ツールシェルフ > mmd_toolsタブ > 「Convert Materials For Cycles」ボタンをクリックし、Cycles用マテリアルの設定をする。

  2. 剛体設定 ツールシェルフ > mmd_toolsタブ > Rigidbody「Build」ボタンをクリックし、剛体設定を完了させる。

  3. 白目修正 目に影が出来てしまうので、”目玉”のマテリアルを変更する。 MMDBasicShaderを切断し、放射シェーダーを接続する。

  4. オブジェクト分離 以下のマテリアルを選択し、オブジェクトを分離する。 (ショートカット : P)

    • 青ざめ
    • 魅了の眼
    • 口2
    • 頬紅
    • 照れ
    • 瞳2
  5. オブジェクト配置 まずはAlt+Hですべてのオブジェクトを表示させ、 各オブジェクトのレイヤーを変更する。 必須の設定ではないが、ボーン、メッシュ、それ以外でレイヤーを分けると楽。


ここまではインポーターの機能やモデル特有の設定なので特に自動化はしない。

Rigify適用

ここからはスクリプトを使用してRigifyを適用していく。 エラーに備え、Blenderのシステムコンソールを表示させておく。 (Window > Toggle System Console)

基本データ

まずはMMDとRigifyのボーン名の対応情報を持つスクリプトファイルをBlenderに作成する。 スクリーンレイアウトをScriptingに変更し、テキストを新規作成する。 ファイル名は”commons.py”とする。 ※この名前を使用してモジュールインポートしているので、ファイル名は固定で。

img

以下のコードをテキストエディタに貼り付ける。


このスクリプトは他のスクリプトから呼ばれるものなので、 ここではまだスクリプト実行を行わない。 貼り付け後の画像は以下。

img

metarig生成

テキストを新規作成し、以下のコードを張り付ける。 ※ファイル名は何でもよい。


MMDアーマチュアを選択した状態で、スクリプトを実行する。

img

スクリプト実行後、metarigが生成されていることを確認する。

img

Rigify生成

メタリグのアーマチュアタブの一番下、「生成」(Generate)ボタンをクリックし、 Rigifyアーマチュアを生成する。

img

必須ではないが、Rigifyアーマチュア生成後はmetarigをどこか適当なレイヤーに移動させておく。 ここではボーンシェイプオブジェクトが生成される19番レイヤーに移動しておく。

img

Rigifyボーン設定

以下のコードをテキストエディタに張り付ける。 ※metarig生成時のコードを上書きでOK


MMDアーマチュアと、生成されたRigifyアーマチュアを選択してスクリプトを実行する。 ※アクティブオブジェクトはスクリプト内で設定しているので、選択する順番は適当でOK

img

スクリプトを実行すると、MMDアーマチュアとRigifyアーマチュアが統合される。

img

ここでは大まかに以下の処理を行っている。

  • MMDボーンを24,25番レイヤーに移動
  • MMDアーマチュアとRigifyアーマチュアを統合
  • MMDボーンの親をRigifyボーンに変更
  • MMDボーンに付与されているコンストレイントのターゲット先をRigifyボーンに変更

頂点グループ名変更

以下のコードをテキストエディタに張り付ける。 ※Rigifyボーン設定時のコードを上書きでOK


モデルのメッシュを選択した状態でスクリプトを実行する。

img

スクリプト実行後、モデルの頂点グループ名がRigifyボーンの名前に置き換わる。

img

剛体設定

以下のコードをテキストエディタに張り付ける。 ※頂点グループ名変更時のコードを上書きでOK


剛体を選択した状態でスクリプトを実行する。 ※結構時間がかかるので、コンソールを眺めながらのんびり待つ。

img

確認

再生ボタンをクリックしてRigifyボーンを動かすと、 メッシュと剛体がボーンに追従して動くことが確認できる。

img

おまけ

Deformボーンの表示・非表示ボタンの追加は以下の記事を参考に。
URL : http://ch.nicovideo.jp/takosuke/blomaga/ar710878

おわりに

私自身は、今のところレミリアモデルしか使用する予定がないので、 他のモデルへの対応は未定。 また、Rigify Typeに応じた処理なども実装していないですが、 標準Rigifyボーンで満足してしまっているのでこちらも優先度が低いです。

各スクリプトファイルのpitchipoyプロパティをすべてFalseにすると、 pitchipoyでない方のRigifyアーマチュアの作成が可能です。

このページのソースコードはすべてライセンスCC0とします。 MMD x Rigifyのアドオンが増えることを願います。 (Rigify適用モデルを配布なんかしていただけたら・・・凄くありがたい!)

何かありましたら、@takosuke_twまで連絡下さい。