ユニティちゃんのためにモーションを作成、適用する

Unity界隈では猫も杓子もユニティちゃん一色ですね。その点の真偽については心のなかに留めておいてもらって、ユニティちゃんを含めキャラクターにオリジナルのモーションを作成して自由に動かしたいと思うものです。そこで今回はBlenderでオリジナルモーションを作成し、ユニティちゃんに適用するまでの流れを紹介しようと思います。この際、UintyのMecanimというアニメーションシステムを利用します。

※ぴおさん( @p1o0 )にSDユニティちゃんでの動作を確認していださきました。

※これはイメージです

※これはイメージです

おことわり

Unity公式でRigifyのRigをインポートする方法が提示されていますが、私はどうしてもできませんでした。まずはこちらをおすすめします。

http://docs-jp.unity3d.com/Documentation/Manual/BlenderAndRigify.html

Blender と Rigify の使用 / Using Blender and Rigify
http://docs-jp.unity3d.com/Documentation/Manual/BlenderAndRigify.html

目次

  • はじめに
    • ターゲット
    • 準備
    • あると便利なもの
  • BlenderでRigのセットアップ
    • Rigifyを有効化
    • Rigifyの使い方
    • 人型モデルのインポート
    • metarigの生成と設定
    • Rigに細工をする
      • 不要なボーンを変形元の対象から除外する
      • 使わない項目を削除する
    • 頂点ウェイトを設定する
    • とりあえずUnityに読み込ませてみる
      • FBXでエクスポート
      • UNITYで読み込み
  • モーションを作成する
    • レイアウトを変更する
    • アクションを登録する
    • FBX出力する
    • Unityに読み込む
    • 早速動かしてみる
      • ANIMATION CLIPが気に入らなかったら
  • ユニティちゃんをオリジナルモーションで動かしてみる
  • おわりに

投稿:2014.08.09
更新:2014.08.11 ユニティーちゃんをユニティちゃんへ修正
更新:2015.09.10 ユニティちゃんライセンスの提示

はじめに

ユニティちゃんのオリジナルのモーション作成を思い立ち、無料で出来る環境で、最小の労力でできないものかと労力を注ぎ込んだ結果、BlenderのRigifyというアドオンを使うことで(少し手を加えて)可能なようでした。その際、多くの問題はモデル(メッシュ+Rig)をどのようにインポートするかという事が主題で、モーションに関して記述があまりありませんでした。その点がを踏まえ、モーションの読み込みまでを本記事に収録しています。

ターゲット

  • UnityのMecanimでオリジナルキャラクターにオリジナルモーションを追加したい方
  • ユニティちゃんを思い通りの動きをさせたいデュフフな方

私は後者です。

また、UnityとBlenderの基本的な操作方法を把握していることを前提とします。

準備

今回利用した環境は以下のとおりです。

ソフト名 バージョン
Unity 4.5.0f6
Blender 2.7.0a

ユニティちゃんはAssetStoreからダウンロードしてください。
ちなみに、MacOSXで作業していますがWindowsでも同じ工程が再現できるはずです。若干UIが違いますがその辺りは自分でなんとかしてください。

あると便利なもの

今回ダミーのモデルとして「MakeHuman」という人体モデル生成ソフトを利用しました。必要であればご利用ください。

http://www.makehuman.org/

Makehuman | Open source tool for making 3D characters
http://www.makehuman.org/

BlenderでRigのセットアップ

Unityでキャラクターモーションを割り当てるMecanimという便利なシステムがあります。このMecanimで利用できるようにCGソフトウェア側である程度、キャラクターの変形に利用するボーンの構造を定義しなければなりません。そこで今回はBlenderに最初から用意されているRigifyというRig生成アドオンを利用します。

Rigというのはボーンの構造とそれを操作するための一連のパッケージを示しています。この点で議論はしたくないので、正確な定義は各自で調べてください。

Rigifyを有効化

Blenderの標準ではRigifyは有効になっていません。そこで
File > User Preference > Addons
でRigifyにチェックを入れ、設定を保存してください。
rigify_activate

Rigifyの使い方

Rigifyの使い方を言及していては、先に進みませんので割愛します。

Quick Rigging With Rigify in Blender
http://www.youtube.com/watch?v=dYiAd_08-0k
こちらの動画はとてもわかり易く使い方を説明しているので、ひと通り試すことをおすすめします。

人型モデルのインポート

とりあえず、アクションをつけるにしても何かしらの人型を動かしたほうがイメージがつきやすいので、今回はMakeHumanから男性モデルを適当に出力してBlenderに読み込ませました。
makehuman_man

metarigの生成と設定

Rigfyを実行すると、まずはRigを生成するためのMetarigが生成されます。これを先ほど読み込んだ人型に合わせます。

合わせたら、PropetiesエリアのGenerateボタンを押して、Rigを生成します。

このMetarigの設定とRigの生成は、先ほどの動画「Quick Rigging with Rigify in blender」の〜14:10までを真似てください。

Rigに細工をする

RigifyのRigはMecanimが利用するボーンの構造より、かなり複雑になっています。そこでUnityが読みやすいように細工を施します。ここでやることは大まかに以下の2点です。

  • 不要なボーンを変形元の対象から除外する
  • 使わない項目を削除する

ぶっちゃけるとこの動画の通りやればいいんです!というのは無責任ですので後述します。また、以下の動画のyoutubeのページの概要欄に動画で利用しているスクリプトがあるのでダウンロードしてください。

Blender Rigify into Unity Mecanim
http://www.youtube.com/watch?v=lAwK19Ijq50

不要なボーンを変形元の対象から除外する

動画の[1:19]あたりのように、スクリプトをコピペして実行してください。このスクリプトが何をやっているかというと「ORG-」で始まるボーンのみを変形の影響を及ぼすように設定しています。ただし、「ORG-heel」で始まるボーンを無効にしています。
useDeform
上記の画像のように、Deformチェックボックスで有効、無効が確認できます。ORG-以外のボーンが無効になっていることを一応確認してください。

使わない項目を削除する

Rigを生成すると「WGT-」とついたメッシュが大量に生成されます。今回は利用しませんので、Outlinerから「WGT-」を全て削除してしまいましょう。この時、Outlinerの検索機能を利用すると効率的ですよ。
WGT-list

頂点ウェイトを設定する

細工が済んだら、頂点ウェイトを設定します。これでやっとモデルを変形できるようになります。
私が説明するより動画のほうがわかりやすいので、先ほどの動画「Blender Rigify into Unity Mecanim」の[1:30]あたりから見てください。
ひと通り、ボーンにウェイトが設定され、きちんとモデルが追従するか確認してみてください。思い通りに動いたら、セットアップは完了です。

とりあえずUnityに読み込ませてみる

上記のセットアップが完了したら、とりあえずUnityに読み込ませれば、例えばユニティちゃんの愛らしい動きをそのまま全裸男に適用することができます。

FBXでエクスポート

File > Export > Autodesk FBX (.fbx)
からエクスポート画面へ移行してください。もし、FBXの項目がない場合はAddonが有効になっていませんので、RigifyのAddonを有効にした手順でFBXAddonを有効にしてください。
エクスポート画面の左側のパネルで、出力する設定をすることができます。今回はメッシュとボーンを出力したいので、「Armature」「Mesh」の項目だけ有効にし、ファイル名を付けて「ExportFBX」ボタンを押して出力してください。
arm_mesh

Unityで読み込み

Unityを開いて、対象のプロジェクトの中に出力したFBXファイルをドラッグ・アンド・ドロップしてください。この際、少し時間がかかるかもしれません。
読み込んだアセット(FBXファイル)のアイコンをクリックすると、Inspectorに設定項目が表示されます。ここでRigタブのAnimation TypeをHumanoidへ変更して、Configureボタンを押してください。
anitype_human
このようにオールグリーンになったら大成功です!好きなようにアニメーションを適用してください。
all-green
Mecanimアニメーションに関しては、公式のチュートリアルが一番のわかりやすいので、そちらでお勉強してみてください。

Unity 4.0 – Mecanim Animation Tutorial
http://www.youtube.com/watch?v=Xx21y9eJq1U

一度インポートしたら、動作の確認をしてみましょうね。
musclesTest
ユニティちゃんのモーション「WAIT01」を適用してみたぞ。どうだ気持ち悪いだろ?
motionTest

モーションを作成する

設定したRigがちゃんとUnityのMecanimで確認できたところで、やっと後半戦のモーションに移りましょう。作業はBlenderへ戻ります。
Rigにポーズを付ける方法は動画の「Quick Rigging With Rigify in Blender」後半部分を参照してください。
なお、キーフレームアニメーションの原理や、Blenderでのキーの打ち方がわからない方は、それらを理解してから、この先に進んでください。

レイアウトを変更する

Blenderはレイアウトを自由に変更できますが、標準でいくつかのテーマを用意しています。登録されたレイアウトのテーマはBlender上部のInformationヘッダ中央のドロップダウンリストで変更が可能です。
layout_dlist
このドロップダウンリストを「Animation」へ変更すると、アニメーション用レイアウトになり、それぞれのエリアは以下のようになります。
anim_layout

アクションを登録する

通常、キーを打つと一連のアニメーションの中に直接キーを打ち込むことになります。もちろんそれでも問題ない場合もあるのですが、今回はアクションを一つ一つ切り離して記録し、Unity側でそれらを個別に扱いたいのでアクション単位でキーを打ちます。
Dope Sheetヘッダの中央部のドロップダウンリストを「Dope Sheet」から「Action Editor」へ変更します。
dopetoaction
Action Editorはその名の通り、アクション単位でキーを扱うエディタです。このActionEditorへ変更すると、ヘッダの項目に変化があったことに気づくと思います。このヘッダの中央部に以下のようなDopeSheetと同じアイコンのボタンと「+NEW」と書かれたボタンがあるはずです。前者は現在登録されているアクションのドロップダウンリスト、後者は新規アクションの追加ボタンです。新規追加すると、ボタンからアクション名を入力するテキストエリアに変更されます。ここでアクション名を変更がいつでも可能です。


今回は簡単なお尻を下ろすアクションを作成するので、アクション名を「shitdown」にしました。この点は突っ込まないでください。
action
このような20フレームのアクションを作成しました。我ながらセンスの無さに驚かされます。さぁ、これでアクションを作成できました。あともう少しです。必要ならもっとアクションを増やしてください。

FBX出力する

これはすでに説明したとおりなので、割愛します。

Unityに読み込む

これも前述した通りの手順です。今回はActionもといUnity側ではAnimation Clipがきちんと読み込まれていることが確認できるはずです。ちなみにDefault TakeはFBX出力の際に設定することができます。
animation_clips
この時、使うのはモーションだけだからといって、前述したRigの設定の手順は必ず実行してください。動きません。

早速動かしてみる

ではさっそく、Animation Clipを使って、動かしてみましょう。
macanim_shitdown
ちゃんとお尻をおろしていますね。よしよし。

Animation Clipが気に入らなかったら

Animation Clipには様々な設定、特にどこを中心にするかという設定が重要です。また、ループアニメーションにすることもできます。
詳しくは、公式の解説を御覧ください。

http://docs-jp.unity3d.com/Documentation/Manual/RootMotion.html

ルートモーションの仕組み / Root Motion – how it works
http://docs-jp.unity3d.com/Documentation/Manual/RootMotion.html
このような設定を変更したい場合、FBXから読み込んだAnimationClipを直接変更することはできません。必ず複製(Edit > Duplicate)しましょう。

ユニティちゃんをオリジナルモーションで動かしてみる

全裸男はちゃんと動きましたので、ユニティちゃんに適用して動かしてみましょう。


※クリックでアニメーションGIFに切り替わります
ちょっと動きがおかしかったので、AnimationClipに修正を加えました。何故そうなったのか、何故そうしたのかは前述した公式ドキュメントの「ルートモーションの仕組み」を参照してください。
以下のように修正を加えました。
ChangeAnimationClips

おわりに

ちょっと長かったですけど、これでオリジナルモーションが作成できるようになりました。一度この工程を経験すると、それ以降はダミーの人型を使ってモーションを大量に生産できるので、もっと効率的になるはずです。もし、ターゲットになるモデルがすでにあるならば、例えばユニティちゃんのモーションしか動かさないならば、Blenderにユニティちゃんのモデルを読み込み動かしたほうがより正確なモーションを作ることが出来ると思います。

それでは、良いユニティちゃんライフを!!

そのうち、ニコニコかYoutubeあたりに、一連の動画を投稿できたらいいなーと思っています。

参考サイト

ゲームは初心者にやさしく – Blender アニメーションの作業時間短縮
http://gamesonytablet.blogspot.jp/2012/08/blender.html

BlenderでMecanimしようぜ(前編)
http://qiita.com/ivoryfunc/items/22d770556978533ad554
BlenderでMecanimしようぜ(後編)
http://qiita.com/ivoryfunc/items/5c6fd959b31f803b856e

ライセンス

このコンテンツは
imageLicenseLogo
ユニティちゃんライセンス」で提供されています。

ユニティちゃんのためにモーションを作成、適用する” への1件のコメント

  1. ピンバック: Blenderで簡単にリグを入れてunityに持っていく方法 | 鼻ちょうちんの人

コメントは受け付けていません。