今回は無料3DCG作成&編集ソフトのBlenderを使ってMakeHumanのデータを取り込んでみます。
Blenderは上のサイトからダウンロードします。
Blender、Unity、MakeHumanが比較的新しいバージョンの場合は
上の記事も参照してください。
MakeHumanのデータを取り込む為のBlenderの設定
MakeHumanのデータをBlenderで取り込めるようにBlenderの設定を変更します。
上のようにFile→User Preferrencesで出来ればいいんですが、わたくしみたいに選択するとBlender自身が落ちてしまう人もいるみたいです。
グラフィックボードが関係してるやらなんやららしいですが・・・謎。
そういう方は下のようにUser Preferencesを選択しウインドウ内に設定を表示させてください。
Add-onsでImport-ExportのMakeHumanを探しチェックします。
これでMakeHumanで出力したmhxファイルの取り込みが出来るようになります。
設定が終わったら3D Viewにウインドウを直しておきます。
Blenderの設定が終わったらMakeHumanで3Dキャラクターを出力します。
MakeHumanで3Dキャラクターを出力する
ポーズ/アニメーションでhumanik.jsonを選択。
ファイル→エクスポートでメッシュフォーマットをBlender exchange(mhx)にしエクスポートボタンを押す。
これでファイルが出力されたので、次はBlenderに戻ります。
BlenderでMakeHumanのキャラクターの取り込みと出力
blenderのFile→Import→MakeHumanと選択します。
ファイル選択画面になったら、Override Default Settingをチェックし、下のScaleを0.1にして、右上のImport MHXをクリックします。
Unityに3Dキャラクターを取り込む時にScaleを合わせるため調整しています。
上のようにPose Modeとなっているところを選択し、Object ModeにしAキーを2回押し全体を選択した状態にします。
これらをExportで出力します。
File→Export→FBX(fbx)とします。
3D Viewで選択した項目だけを出力したい時は上のようにSelected Objectsにチェックを入れます。
人のメッシュとアーマチュアだけチェックを入れます(Selected Objectsの上)。
Armaturesを選択しOnly Deform Boneにチェックを入れておきます。
ここでチェックを入れないと余計なものがいっぱいついてきてファイルサイズが10倍近くになってしまいます。
あとは出力する場所を指定した後にExport FBXボタンを押します。
最終的にUnityでキャラクターを取り込む
最後にUnityに取り込みます。
UnityのAssetsメニューのImport NewAssetからファイルの選択も出来ますし、ファイルをUnityのProjectウインドウのAssetsフォルダにドラッグ&ドロップでもインポート出来ます。
インポートしたら
Rig→Humanoid→Configure→Apply→Save→Doneとし、人型キャラクターとして認識させます。
ここら辺はMakeHumanの記事でやったので同じように出来ます。
プレハブをシーンに配置し名前を「satosi」と変更し「masasi」君たちと同じコンポーネントを付ければ完成です。
3兄弟の出来上がり!(最初から記事を見てくれている方でないとわかりません・・・というか見ててもわからないかも)
MakeHuman→Blender→Unityとした理由
なんだか前回やったMakeHuman→Unityから比べると面倒くさい事が増えてる割にやってる事は同じじゃないか!と言いたくなる方もいるとは思いますが・・・・。
Blenderに取り込むのはBlenderでアニメーションを作成し、それをUnityで取り込むという事がしたい為です。
アニメーションを作るのにRigifyを使うとかなり楽に作成出来るのですが、
MakeHuman→BlenderまではうまくいってもそれをUnityに取り込むのがうまくいきません・・・・。
今回はそこまでやりたかったんですが、解説サイトを見て同じようにやってもエラーが出てうまく出来ないんですよね・・・。
キャラクターの取り込みの流れはこうするといいかも!?
----------以下追記----------
いろいろやっているうちにMakeHumanとBlenderとUnityをすべて使う場合は以下のようにするとうまくいきました。
MakeHumanで作ったモデルをUnityに取り込む場合はMakeHumanのジオメトリーのトポロジーをmaleにし、メニューのスムーズで
モデルを滑らかにする。
ボーンをxonotic.json、エクスポートする時は他はいじらずmhxにしてエクスポートする。
このまま使えればボーンの設定もうまく出来ていいんですが・・、服が破れてるような表示がされてしまうので、blenderで服のサイズの調整をします。(調整をするにはblenderの知識が必要になります。)
調整が終わったらfbxでエクスポートします。
その後Unityで取り込んでモデルとして使います。
モデル用のアニメーションを作成する場合はMakeHumanでジオメトリーのトポロジーをmake、ボーンの指定をせず、スムーズを解除、エクスポート設定でメートルにし、Wavefront objとしてエクスポートします。
そこにBlenderでボーンの設定をしリグ(Rigify)を作成してアニメーションを作成します。
Blenderでボーンを設定する方法は
を参考にしてください。
アニメーションの作成が終わったらfbxファイルでエクスポートし、それをUnityで取り込みます。
Unityでキャラクターを選択し、RigをHumanoidにしたらこのアニメーションを先ほどのモデルのアニメーションとして使えます。
MakeHumanで指定するボーンをhumanik.jsonでも出来ているかなと思っていたんですが、どうやら指先がうまく働いていませんでした・・・。
なのでこのやり方をお勧めします。(他にいいやり方があればそちらでお願いします)
正直なところここの連携部分がもう少し簡単にエクスポートやインポート出来たらいいなぁと思いました。