Unity3D
Blender
UnityDay 12

BlenderでMecanimしようぜ(前編)

More than 5 years have passed since last update.

2回にわたってBlender+Unityの新機能Mecanimについて書かせて頂きます。

本稿(前編)はBlenderで人物モデルを扱うのならRigifyで楽しようという内容です。ある程度のリギングに関する知識やblenderの基本操作などを理解している方向けになっておりますので、その旨ご了承ください。後編ではUnity上にインポートした後の設定などについて書く予定です。

Rigifyというのは一言で言うと汎用的に使える人体リグで、下記のような特徴があります。

  • コントロールボーンがついてる
  • IKとFKが簡単に切り替え可能
  • MecanimのHumanoidを使うのにうってつけ(リグの構成がほぼ同じ)

Rigify自体はBlender用アドオンとして提供されており、最近のBlenderには最初から入っているので、まずはこちらを有効にするところから始めましょう。File / User PreferenceのAddonsを開き、左メニューのRiggingを選び、Rigifyにチェックを入れます。

image

これでRigifyが使えるようになりました。

次に人物のモデルデータを用意します。今回はおなじみの配管工のおじさんをインポートし、こちらにリグを入れ直してみることにします。が、unityで提供されている3Dデータは主にFBX形式で、残念ながらそのままではblenderにインポートできません。以下のどちらかの手順で読み込みます。

  • cheetar3DなどFBX形式を読み込めるソフトを介してからblender上に読み込む
  • 下記FBXインポートアドオンを使う(windows版のみ使用可能のようです)。 http://blenderfbx.render.jp/

形式を変えるとUVテクスチャが剥がれてしまったりするのでマテリアルやテクスチャの再設定をします。また、ポリゴンのつなぎ目がリッピングされた状態になりがちなので、そういった場合はMesh Tools / Remove Doubleなどで頂点の重複を解消すると隣り合うポリゴン同士がくっつきます。

読み込んだら元々入っていたリグは破棄します。

続いて追加コマンドshift + AからArmature / Human(Meta Rig)を選び、rigifyを呼び出します。

こちらを原点に置き、配管工の人体に合わせてボーンの位置調整を行うわけですが、この手順は下記のムービーがとても参考になります。

http://www.youtube.com/watch?v=Txl1X2WVX_E

ムービーの手順に従い、こんな感じになればオーケー

image

ここまでできれば、あとはオブジェクトパネル上のRigfy Buttons / Genetateを押せば、この骨格に合ったリッチな汎用リグが生成されます。いままで調整してきたアーマチュアはもう不要なので、目玉アイコンをクリックして非表示にしておきます。あるいは破棄してしまっても構いません。

生成されたボーンをよく見てみると、多くがレイヤーで隠されているだけで実際は多数のボーンを含んでいることに気がつくと思います。このあたりがこの手の汎用リグのわかりにくい部分だと思うのですが、とにかくやたらとボーンが多い。そしてどれがどのような役割を果たしているのか理解しにくいです。

そこで、ボーンの役割を下記のような5通りに分類して考えると理解の手助けになるのではと思います。

  1. オリジナルボーン(やや簡易化された基本的なボーン。名前がORGから始まる)
  2. デフォームボーン(実際にウェイトが与えられるボーン。名前がDEFから始まる)
  3. IK用に制限が掛けられたボーン(名前がMCHから始まる)
  4. FKコントローラ(upper_arm.Lなどシンプルな名前が特徴)
  5. IKコントローラ(4と同じくシンプルだがikと入る)

本体の形状に影響を与えるボーン本体は2. のみであることに注意してください。

コントロール系のボーンの表示・非表示は専用のパネルがあります。
該当するボーンを選択してNパネルを開くと下記のようなボタン群が出てきます。

image

レイヤーで切り替えるより、こちらのパネルで切り替える方がはるかにわかりやすいです。
また、IKとFKの切り替えもこの上のパネルで行います。

つづいてリグの有効範囲を決めますが、今回のおじさんのように比較的やせている体型のキャラクターはエンベロープでざっくり決めてしまい、その後バーテックスペイントに変換し、微調整するような形で行うのがいいかと思います。

指先のヒート設定などを生真面目に行うとかなりの作業工数になってしまいますので、不要な部分は適当にやってしまっても問題ないと思います。

ここまでできれば、もうUnity側にインポート可能です。

ということろで後編に続きます