MRが楽しい

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

ユニティちゃんをBlenderで読み込む その2(テクスチャの表示とウェイトの設定)

本日は Blender とユニティちゃんの調査枠です。
前回記事の続きです。
bluebirdofoz.hatenablog.com

ユニティちゃんを Blender で読み込む手順について記事にします。
今回はテクスチャの表示とウェイトの設定です。
f:id:bluebirdofoz:20190426085617j:plain

マテリアルの状態

FBXファイルはUnity上のユニティちゃんシェーダーの情報を保持していません。
このため、テクスチャの参照はあるものの、全てのマテリアルの設定が行われていません。
f:id:bluebirdofoz:20190426085628j:plain

Blender上でユニティちゃんシェーダーの見た目を再現するのは難しいので、ここではカラーテクスチャの反映のみを行います。
色の反映結果が[3Dビュー]上で分かるように、以下の設定を予め行います。
・[ワールド]タブの[環境照明]にチェックを入れて有効にする。
・[3Dビューのシェーディング]を[マテリアル]に変更する。
f:id:bluebirdofoz:20190426085637j:plain

テクスチャの表示

テクスチャを表示するには各メッシュオブジェクトから[テクスチャ]タブを開きます。
Assets フォルダの構成をそのままコピーしていれば、テクスチャの参照が設定されています。
一覧の一番上のテクスチャがカラーテクスチャです。
f:id:bluebirdofoz:20190426085650j:plain

カラーテクスチャを選択した状態で[テクスチャ]タブを下にスクロールします。
[影響]パネルの[ディフューズ:カラー]にチェックを入れて、テクスチャのカラーを反映します。
f:id:bluebirdofoz:20190426085704j:plain

全てのメッシュオブジェクトについて同様の作業を行います。
カラーテクスチャのカラーを全て反映させると、以下のような見た目になります。
f:id:bluebirdofoz:20190426085715j:plain

透過の設定

凡そ、それらしい見た目になりました。しかし、よく見ると頬や睫毛に白飛びが見られます。
これらのテクスチャは白飛びの部分を透過させる必要があります。
f:id:bluebirdofoz:20190426085752j:plain

試しに頬のメッシュオブジェクトの透過を設定します。
メッシュオブジェクトから cheek オブジェクトを選択します。
[テクスチャ]タブを開き、[影響]パネルの[ディフューズ:アルファ](透明度)にチェックを入れます。
f:id:bluebirdofoz:20190426085810j:plain

透明度の情報が反映されるようになったので、マテリアルの透過処理を有効化します。
cheek オブジェクトを選択したまま、次は[マテリアル]タブを開きます。
[透過]パネルにチェックを入れて有効化し、[Z値透過]で[アルファ:]の値を[0.0]に設定します。
f:id:bluebirdofoz:20190426085825j:plain

最後に[オブジェクト]タブを開き、[表示]パネルの[透過]にチェックを入れます。
これでテクスチャの透明度が設定された部分が透明表示されるようになり、自然な頬の色合いになりました。
f:id:bluebirdofoz:20190426085838j:plain

同じく透明度が設定されたテクスチャを利用する、以下のメッシュオブジェクトも同様の設定を行います。
・BLW_DEF
・EL_DEF
・eye_base_old
f:id:bluebirdofoz:20190426085856j:plain
これでテクスチャの表示は完了です。

ウェイトの設定

次にウェイトの設定を行います。
前回、アーマチュアとの関連付けを行った頭部オブジェクトはボーンとのウェイト付けが行われていません。

Unity上でユニティちゃんを確認すると、頭部オブジェクトは Character1_Head ボーンオブジェクトの子オブジェクトとすることで連動していたことが分かります。
これと同じ動きになるよう、頭部オブジェクトに Character1_Head ボーンのウェイトを設定します。
f:id:bluebirdofoz:20190426085909j:plain

試しに眉毛オブジェクトの BLW_DEF でウェイト設定を行います。
BLW_DEF オブジェクトを選択し、[データ]タブを開きます。
頂点グループの[+]ボタンを押して、新規グループを作成したらグループ名を[Character1_Head]に変更します。
f:id:bluebirdofoz:20190426085920j:plain

BLW_DEF を選択したまま[編集モード]に移行します。
全ての頂点が選択された状態であることを確認します。全ての頂点が選択されていない場合は Aキー(全選択) で選択します。
この状態で頂点グループの[Character1_Head]をウェイト[1.0]で[割り当て]を実行します。
f:id:bluebirdofoz:20190426085929j:plain

同じく顔オブジェクトである、以下のメッシュオブジェクトも同様の設定を行います。
・EL_DEF
・EYE_DEF
MTF_DEF
・eye_L_old
・eye_R_old
・eye_base_old
・head_back
f:id:bluebirdofoz:20190426085939j:plain

これでウェイトの設定は完了です。
頭部ボーンに頭部オブジェクトが正しく追従するか確認してみます。
アーマチュアオブジェクトの Character1_Reference を選択して[ポーズモード]に切り替えます。
f:id:bluebirdofoz:20190426085948j:plain

頭部ボーンを動かしてみて、頭部オブジェクトがボーンに追従すれば正しくウェイト設定が行えています。
f:id:bluebirdofoz:20190426090029j:plain

これで Blender にユニティちゃんを読み込むことができました。
次はこのユニティちゃんを Unity 側に逆反映してみます。
bluebirdofoz.hatenablog.com