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まで連絡下さい。