2014年5月3日土曜日

【Unity】【blender】blenderでunity用データ作成 その3

前回の続きです。

【目次】
blenderでrigify設置する。
②rigifyをunityのmecanimに乗せれるように設定する。
blenderでアニメーションをつくる。(準備中)
blenderで作成したアニメーションをユニティちゃんにやってもらう。(準備中) 

ちにみに今回は
1・rigifyへの重み付け(ボーンとモデルの関連付け)
2・rifigyの簡単な説明
3・unityに作ったモデルを乗せてみる
まで説明します。


前回、作成したrigifyアーマチェアをモデルに重ねるところまでやりました。



rigifyアーマチェアのアーマチェアレイヤーにはまあ色々とあるのですが、今回着目していただきたいのが下段の右から3番目と1番右のレイヤーです。

下段の右から3番目にはDEF-chestなどDEF-から始まるボーンが格納されています。
まあDEF(deformation:変形かな?)から始まるのでrigify的には変形用(重み付け)用に使ってほしいようです。でもごみです。


下段の1番右にはORG-chestなどORG-から始まるボーンが格納されています。
このボーン形状はまさにメカニム用に用意されたとしか思えないくらいメカニムの基準に沿っています。



それでは「自動のウェイト」で重み付けと行きたいところですが、その前に一つ大事な作業があります。
blenderでunity用データ作成 その1で参考にするといっていた動画でしようしている「Rigify_script.py」とかいうPythonスクリプトを実行する必要があります。

テキストエディタを表示して



「開く」ボタンを押下して

Rigify_script.py」を読み込んで
 「スクリプト実行」ボタンを押下する。

見た目なにも起こりませんね。
処理内容としては以下となります。
①すべてのボーンの「use_deform(変形)チェックボックス」をOFF
②ORG-から始まるボーンの「use_deform(変形)チェックボックス」をON
③「ORG-heel.L」など一部ボーンの「use_deform(変形)チェックボックス」をOFF

結果として上の画像では
【スクリプト実行前】
DEF-から始まるボーン:ボーンプロパティ→変形チェックボックスがONORG-から始まるボーン:ボーンプロパティ→変形チェックボックスがOFF

【スクリプト実行後】
DEF-から始まるボーン:ボーンプロパティ→変形チェックボックスが OFFORG-から始まるボーン:ボーンプロパティ→変形チェックボックスがON

となっています。
どうしてこのスクリプトをやるのかはいまいち自分もわかってないのですが、このスクリプトを走らせずに自動ウェイトを行うとDEF-から始まるボーンに重み付けがされてしまいます。
ORG-から始まるボーンに重み付けがされないといけないため、何気にこのスクリプトは必須です。
(まあ手動でチェックボックスにチェックを入れていけばいいんですがね)


DEF-から始まるボーンは用なし(まあ最初から用なしなのですが。。。)なので削除してしまいましょう。
アーマチェアの【編集モード】からDEF-から始まるボーン(アーマチェアレイヤーの下段右から3番目のすべてのボーン)を全選択(A二回)して削除。




そしてついに重み付けです。
【オブジェクトモード】でモデル→アーマチェアの順にShiftを押しながら選択して、Ctrl+Pメニューから「自動のウェイトで」を選択してください。


【ウェイトペイントモード】にしてORG-から始まるボーンに重み付けされていたら成功です。
ちなみに【ウェイトペイントモード】は
【ポーズモード】からモデルデータを選択してからでないと遷移できません。
ご注意を。
【ポーズモード】で動きを確認して重み付けがいまいちなときは適当に塗ってください。
(ちなみに自分は股と胸が真ん中でぱっくり割れてしまっていたので手直しをいれました。)


完成系はこんな感じ。


作成したモデルデータをFBX形式で保存します。
.blend形式でもunityは読み込んでくれるのですが、なぜかボーンが一部足りない事象が何回か発生したので一応FBX形式にしています。



後はunityに読み込ませるだけです!
ファイルをProjectウインドウにドラッグ&ドロップ(した画像ではunity_actionファイル)

投入したファイルを選択→Inspector上のRigタブ→Animation typeをHumanoid→Configure...を押下


Mappingタブがすべて緑色で、OptionalボーンがすべてORG-から始まるボーンになっていれば成功です。



またMusclesタブで間接の稼動範囲などを設定できます。
ここで色々動かしてみるとちゃんとインポートできたんだなーと実感できますよ。



今回はここまでです。
blenderのファイルにアニメーションをつけてunityにインポートすればunityで使えるアニメーション(モーション)となります。
そしてrigがhumanoidになっていれば、そのモーションがそのままunityちゃんに適用できるわけです。
すごいですねー。



1 件のコメント:

  1. この投稿にかなり助けられました。
    一つだけうまくいかなかったところをコメントにあげておきます:
    Unityに正しくモデルが追加するためには、本稿にのっている事項のほかに、Blenderにおいて
    Properties>ObjectData>Skelton の一番上の設定項目をRest Positionにする必要がありました。

    返信削除