MakeHuman1.1.1で作ったキャラクターをUnity2017とBlender2.78で使う

今回はMakeHuman1.1.1で作った3DモデルをUnity2017にそのまま取り込んで使用したり、

Blender2.78に取り込んでアニメーションを付けた3DモデルをUnityに取り込んで使用してみたいと思います。

Blenderは現在の最新バージョンは2.79ですが、Rigify関連でうまく出来ない為2.78を使っています。

MakeHumanでは簡単な設定だけで3Dキャラクターモデルを作成出来ますが、それをBlenderに取り込みアニメーションを付けた後にUnityに取り込むとなると色々作業が必要になってきます。(^_^;)

そんなわけでそれぞれの現時点でのほぼ最新バージョンで連携してみます。

スポンサーリンク

MakeHumanでモデルを作成し出力する

MakeHumanは

↑からダウンロード出来ます。

MakeHumanの使い方については

MakeHumanが1.1.0にバージョンアップされていたので3Dモデルを出力してUnityに取り込んでみました。

とほぼ同じなのでそちらをご覧頂くとして・・・(^_^;)

MHX2ファイルを出力する為にプラグインをダウンロードする

MakeHumanからファイルを出力する時にMakeHumanのプラグインが必要になるのでそれをダウンロードしておきます。

先ほどのリンク先でMakeHumanとは別にDownload MakeHuman Toolsというアイコンがあるのでそれをクリックした後、

blender_plugins_for_1.1.1.zip
makehuman_plugins_for_1.1.1.zip

の2つをダウンロードします。

blender_plugins_for_1.1.1.zipは後でブレンダーで使います。

makehuman_plugins_for_1.1.1.zipをダウンロードしたら、ファイルを解凍し9_export_mhx2フォルダをMakeHumanのソフトのフォルダ以下にあるpluginsの中にコピーします。

Mhx2変換プラグインを移動

9_export_mhx2はMakeHumanのファイルとしてデータを出力する為に必要になります。

これをMakeHumanのpluginsフォルダ以下に移動させるとMakeHumanのファイルの出力形式にMHX2が表示されるようになります。

適当なキャラクターを出力する

今回はモデルを作成するより連携をする為の処理をするだけなので、最小限の設定だけを行います。

Unityにそのまま取り込むモデルの作成

まずはUnityにそのまま取り込むようのモデルを出力してみます。

まずはポーズアニメーションタブを選択し、さらにスケルトンタブを選択します。

リグプリセットでGame engineを選択します。

Gameengineリグを選択

ファイルタブを選択しファイルを出力します。

メッシュフォーマットはfbxを選択し、ファイルの出力先を選択し名前をtounityとして出力します。

FBXファイルでモデルを出力

これでUnityでそのまま取り込むファイルの出力が出来ました。

Blenderに取り込むモデルの作成

Blenderに取り込むモデルはmhx2ファイル形式にし、単位をメートルにします。

Blender2.78に取り込む用のファイル出力

これでBlenderで取り込む用のモデルの作成が終わりました。

Unityでモデルを取り込む

先ほどMakeHumanで作成したFBXファイルをUnityに取り込んでみます。

UnityのAssetsフォルダで右クリック→Import New Asset…を選択し、先ほど出力したtounity.fbxファイルを選択します。

後は他のキャラクターモデルと同じ扱いなので、インスペクタのRigのAnimation TypeをHumanoidにしてApplyを押すだけです。

MakeHumanで作成したモデルをHumanoidにする

適当なAnimatorControllerを設定して動かすと、

MakeHumanキャラをUnityに取り込んで使った動画

↑のような感じに普通に動かすことが出来ました。

Blenderでモデルを取り込む

Blenderにモデルを取り込む理由はモデルにアニメーションを付ける為です。

まずはいくつか先にやる事があるので、そちらをやっていきます。

Unityで取り込む時の設定をしてくれるスクリプトのダウンロード

BlenderでRigifyを取り付けたモデルやアニメーションをUnityに取り込む為にはBlenderの知識が結構必要みたいです。

そこでUnityに取り込めるように変換してくれるスクリプトを作成している方がいましたので、そちらをダウンロードして使わせていただきます。

やり方も動画で紹介されています。

の動画からスクリプトのダウンロード先に移動出来ます。

スクリプトをマウスでコピー(ダウンロードの仕方がわからない・・・(^_^;))してデスクトップ等にpy(パイソン)の拡張子のファイルを作り名前をrigify4unity.pyとして、そこに貼り付けます。

Blenderでの設定

次にBlenderでの設定を行います。

最初にダウンロードしたblender_plugins_for_1.1.1.zipの取り込みとrigify4unity.pyの取り込みを行います。

3D Viewが表示されている所をUser Preferencesに変えます。

BlenderのUser Preferencesを開く

Add-onsタブを選択します。

install from fileを選択し、blender_plugins_for_1.1.1.zip、rigify4unity.pyの2つのファイルをそれぞれ選択し取り込みます。

Blenderのinstall from fileでファイルを取り込む

取り込んだらAdd-onsの左上の検索窓でrigiで検索し出てきた2つのRigify関連のチェックを入れます。

RigifyとRigifyToUnityにチェックを入れる

RigifyはBlenderでRigifyを使う為のアドオンでRigify To UnityはRigifyを取り付けたモデルをUnityに取り込む時に使用するアドオンです。

次に検索窓にimportと入れ、import-Runtime: MakeHuman Exchange 2にチェックを入れます。

mhx2ファイルを取り込めるようにする

これでBlenderにMakeHumanで出力したMHX2ファイルを取り込む事が出来るようになります。

次にFileタブを選択し、Auto Run Python Scriptのチェックを入れます。

Auto Run Python Scriptにチェックを入れる

これでBlenderでの設定が終了しました。

User Preferecesウインドウから3D Viewウインドウに戻してください。

Blenderでmhx2ファイルを取り込む

それではMakeHumanで出力したmhx2ファイルを取り込みます。

Blender2.78を開いたら、元々あるオブジェクトはいらないのでAキーを押して全選択したらXキーを押した後Enterキーを押して削除します。

BlenderメニューのFileからImport→MakeHumanを選択し取り込むファイルを選択します。

MHX2ファイルをインポート

ファイル選択画面が開いたら出力したMHX2ファイルを選択し、Override Exported Dataにチェックを入れます。

Override Expoted Dataにチェックを入れ取り込む

次にImport Human TypeをBaseにし、RiggingのRig TypeをRigifyを選択します。

Rigifyを取り付けた状態でモデルを取り込む

こうすることで、Rigifyの設定が済んだ状態の3Dモデルが取り込まれます。

MHX2ファイルを取り込むとRigifyが取り付けられている

既にRigifyの取り付けが終わっており、Poseモードでアニメーションを付けたりする事も出来ますがファイルを出力しUnityで取り込むとうまく出来ない為いくつかの処理を実行します。

プロパティウインドウで人型のアイコンをクリックするとRigify to Unity converter項目にConvert to Unity rigボタンがあるので押します。

Convert to Unity Rigを押す

するとUnityで取り込んだ時にうまくなるように変換されます。

ただ、この時人型モデルとRigとのウエイトが解除されるので、再度親子関係とウエイトの設定を行います。

眼球のオブジェクトを右クリックで選択しShiftキーを押しながら、人型モデルを右クリックで選択、最後にRigfyを選択し、Ctrlキーを押しながらPキーを押しWith Automatic Weightsを選択します。

↑のような感じで行います。

眼球もRigの子要素にしないと眼球が人型モデルと一緒に動きません。

アニメーションを付ける為の設定

Rigifyの設定とUnityへの出力の設定が出来たので後はアニメーションを付けて出力しUnityに取り込むだけです。

実際のアニメーションの作り方は

Unityで使用するキャラクター用のアニメーションをBlenderを使って作成していきます。作成方法を学べば自分のゲームに自前のアニメーションを使うことが出来ます。

を参照してください。

ここではアニメーションを付ける前の設定をしておきます。

Nキーを押してウインドウを開きます。

Rigのレイヤー部分を表示

ウインドウを下にスクロールすると↑のようにRigifyのレイヤーの表示・非表示を切り替えられるボタンが見つかります。

IKで操作するレイヤーのみ表示するようにし、右手、左手、右足、左足のIKのRigを選択し、FK/IKの切り替えで1にし、Auto-Stretch IKを0にしておきます。

IKで使うレイヤーのみ表示し設定を変える

FK/IKで1にすると完全にIKで操作出来、Auto-Stretch IKを0にするとIKをあり得ない位置に動かしても体が変に伸びないようになります。

3DモデルとアニメーションをFBXファイルで出力

3Dモデルとアニメーションを出力します。

BlenderのメニューからExportも出来ますが、Rigify to Unity converterの方が簡単にできますのでこちらを使います。

Rigify to Unity converterのメニューでExport fileの右のフォルダアイコンをクリックし、出力先のフォルダと出力ファイル名を指定します。

後はRigを選択した状態でExport to FBX fileボタンを押すと指定したファイル名でファイルが出力されます。

Unity用のFBXファイルを出力する

後はUnity側でこのFBXファイルを取り込みます。

取り込み方法はMakeHuman→Unityの時と同じです。

RigをHumanoid型に変更します。

これでBlenderから出力したモデルをUnityで取り込めました。

後は普通のキャラクターと同じように扱えます。

rigifytounityを使用して出力したキャラクターの階層

↑のようにボーンの名前もORGで統一されて綺麗になっていますね。(^^)/

終わりに

MakeHumanで作ったキャラクターをBlenderとUnityに取り込む方法をやりましたが、テクスチャの設定などは行っていない為そこは別途やる必要があります。

そこら辺はゴニョゴニュ適当にやってみてください・・・・( 一一)

動画内で紹介されているスクリプトはBlender2.79では動作しないのでBlender2.78を使いました。

PhythonとBlenderの使い方がわかればいいんですけどわからないのでね・・・・・(-_-)

スポンサーリンク

記事をシェアして頂ける方はこちら

フォローして頂くとやる気が出ます

コメント

  1. カル より:

    MakeHumanのソフトのフォルダ以下にpluginsがなかったのですが、この場合はどうすればよいでしょうか。

    • 過去バージョンの1.1.0や1.0.2でも試しましたが、pluguinsフォルダありました。

      なので、MakeHumanの圧縮ファイルの解凍を失敗している可能性があります。

      MakeHumanのフォルダの階層は

      MakeHumanフォルダの階層

      ↑のような感じになっています。

      MakeHuman自体の動作に問題ないのであればpluginsフォルダを作成し、その中に入れるようにすると動くかも?しれません。