MRが楽しい

MRやVRについて学習したことを書き残す

ユニティちゃんをBlenderで読み込む その1(ボーン構造と顔の位置合わせ)

本日は Blender とユニティちゃんの調査枠です。
ユニティちゃんを Blender で読み込む手順について記事にします。
f:id:bluebirdofoz:20190425091322j:plain

ユニティちゃんのデータの取得方法は以下の記事を参照してください。
bluebirdofoz.hatenablog.com

Blender は 2.79b を利用します。
bluebirdofoz.hatenablog.com

ユニティちゃんをそのまま読み込んだ場合

ユニティちゃんのFBXファイルは UnityChan_1_2_1.unitypackage 内の以下のアセットフォルダから取得できます。
・Assets/UnityChan/Models/unitychan.fbx
f:id:bluebirdofoz:20190425091330j:plain

しかし、このFBXファイルをそのまま Blender に読み込むと、様々な問題が発生します。
・ユニティちゃんの顔と体が分離する
f:id:bluebirdofoz:20190425091340j:plain
・ボーンの構造や向きがおかしい
f:id:bluebirdofoz:20190425091401j:plain
・テクスチャが表示されない
f:id:bluebirdofoz:20190425091414j:plain

これらの問題を改善する手順を書き出します。

読み込みに必要なファイル

ユニティちゃんのFBXファイルを読み込む場合、テクスチャは外部ファイルなのでこれらのファイルも必要です。
FBXファイルからの相対パスでの参照になるので、フォルダ構成も Assets/UnityChan/Models 配下からそのままコピーします。
必要なファイルとそのフォルダ構成は以下の通りです。
・FBXファイル本体

unitychan.fbx

f:id:bluebirdofoz:20190425091426j:plain
・テクスチャファイル

UnityChanShader/Texture/body_01.tga
UnityChanShader/Texture/body_01_NRM.tga
UnityChanShader/Texture/body_01_SPEC.tga
UnityChanShader/Texture/cheek_00.tga
UnityChanShader/Texture/DEFAULT_NORMAL.tga
UnityChanShader/Texture/ENV2.tga
UnityChanShader/Texture/eye_iris_L_00.tga
UnityChanShader/Texture/eye_iris_R_00.tga
UnityChanShader/Texture/eyeline_00.tga
UnityChanShader/Texture/face_00.tga
UnityChanShader/Texture/FO_CLOTH1.tga
UnityChanShader/Texture/FO_RIM1.tga
UnityChanShader/Texture/FO_SKIN1.tga
UnityChanShader/Texture/guide.tga
UnityChanShader/Texture/hair_01.tga
UnityChanShader/Texture/hair_01_NRM.tga
UnityChanShader/Texture/hair_01_SPEC.tga
UnityChanShader/Texture/skin_01.tga

f:id:bluebirdofoz:20190425091435j:plain

ボーンの構造を合わせる

コピーした unitychan.fbx を Blender で読み込みます。
メニューから ファイル -> インポート -> FBX(.fbx) を選択します。
f:id:bluebirdofoz:20190425091444j:plain

FBXの読み込み画面が開きます。
このとき、[FBXをインポート]パネルの設定を以下の通り設定します。
・[メイン]タブ
 - デフォルト設定から変更無し
f:id:bluebirdofoz:20190425091455j:plain
・[アーマチュア]タブ
 - [リーフボーンを無視]にチェック
 - [子を強制的に接続]にチェック
f:id:bluebirdofoz:20190425091506j:plain

この設定で[FBXをインポート]ボタンをクリックして、FBXファイルを読み込みます。
これでボーン構造が Blender 上で綺麗に見える形に取り込まれます。
[データ]タブの[レントゲン]にチェックを入れると、体に埋まっているボーンも確認できます。
f:id:bluebirdofoz:20190425091525j:plain

顔と体を合わせる

次に顔と体の位置と大きさを合わせます。
FBXファイルを取り込んだ際に生成された以下のメッシュオブジェクトを複数選択します。
アウトライナーウィンドウで Shift + 左クリック することで同時に選択可能です。
・BLW_DEF
・EYE_DEF
MTF_DEF
・eye_L_old
・eye_R_old
・eye_base_old
・head_back
このとき、アーマチュアオブジェクトや EL_DEF は選択しないよう注意してください。
(EL_DEFは睫毛のオブジェクトで、これだけ位置がリセット済みのため)
f:id:bluebirdofoz:20190425091541j:plain

この状態で、3Dビュー上で以下のショートカットキーを実行します。
・ALT + Gキー(位置のリセット)
・ALT + Rキー(回転のリセット)

実行すると選択したオブジェクトの位置と回転がリセットされ、体の後方にまとまって配置されます。
リセットされると、プロパティシェルフの[位置]と[回転]が全て[0.0]になります。
f:id:bluebirdofoz:20190425091555j:plain

次に、先ほど選択しなかった EL_DEF のメッシュオブジェクトも Shift + 左クリック して複数選択に含めます。
f:id:bluebirdofoz:20190425091605j:plain

この状態で、3Dビュー上で以下のショートカットキーを実行します。
・Sキー -> 0キー -> .(ドッと)キー -> 0キー -> 1キー -> Enterキー(拡大縮小を 0.01 倍)
・Rキー -> Xキー -> 9キー -> 0キー -> Enterキー(X軸方向で90度回転)

すると、以下のように顔のメッシュオブジェクトが体のメッシュオブジェクトにピッタリ重なります。
f:id:bluebirdofoz:20190425091616j:plain

アーマチュアへの関連付けとトランスフォームの適用

顔のメッシュオブジェクトをアーマチュアオブジェクトに関連付けます。
[Character1_Reference]のアーマチュアオブジェクトを Shift + 左クリック して複数選択に含めます。
この時点で、全ての顔のメッシュオブジェクトとアーマチュアオブジェクトが複数選択され、アーマチュアオブジェクトがアクティブな状態になっていることを確認してください。
f:id:bluebirdofoz:20190425091625j:plain

この状態で Ctrl + Pキー で[ペアレント対象]ウィンドウを開き、[アーマチュア変形]を選択します。
f:id:bluebirdofoz:20190425091634j:plain

これでメッシュオブジェクトとアーマチュアオブジェクトが関連付けられました。
最後にこの状態の[回転]と[拡大縮小]を適用してデフォルトとします。
アーマチュアと顔以外のオブジェクトも含めた全てのメッシュオブジェクトを複数選択します。
f:id:bluebirdofoz:20190425091643j:plain

[3Dビュー]のメニューから オブジェクト -> 適用 -> 回転と拡縮 を選択して[回転]と[拡大縮小]の変更を適用します。
f:id:bluebirdofoz:20190425091652j:plain

これで[回転]と[拡大縮小]が適用されました。
適用されると、プロパティシェルフの[回転]が全て[0.0]、[拡大縮小]は全て[1.0]になります。
f:id:bluebirdofoz:20190425091703j:plain

長くなったので記事を分けます。
次はテクスチャの表示とウェイト設定です。
bluebirdofoz.hatenablog.com