本日は Blender と Unity とユニティちゃんの調査枠です。
以下の記事の続きです。
bluebirdofoz.hatenablog.com
今回は Blender に取り込んだユニティちゃんのオブジェクトやマテリアルを結合してレンダリング負荷の軽減を試してみます。
メッシュの統合
前回記事で作成したユニティちゃんプロジェクトを開きます。
今回テクスチャの統合にベイク処理を利用します。
オブジェクト同士の交差を避けるため、cheek オブジェクトをY軸方向に -0.01 だけ動かしました。
全てのメッシュオブジェクトを統合します。
全メッシュオブジェクトをアウトライナーウィンドウで選択した状態で[Ctrl+Jキー]を実行します。
全てのメッシュオブジェクトが一つのメッシュオブジェクトに統合されました。
テクスチャの統合
次にテクスチャ統合を行うための新規オブジェクトを作成します。
[オブジェクトモード]で統合オブジェクトを選択した状態で[Shift+Dキー]でオブジェクトを複製します。
複製オブジェクトを bakemesh と名付け、全てのマテリアルを削除します。
操作対象が分かるよう一旦、元オブジェクトは非表示にしました。
UVマップを再作成するため、bakemesh のUVマップも削除します。
bakemesh の[編集モード]に入り、メニューから メッシュ -> UV展開 -> スマートUV投影 を実行します。
これで統合されたUVマップが生成されました。
ベイク画像を作成するため、[UV/画像エディター]で[新規]ボタンをクリックします。
生成するテクスチャのサイズを指定して[OK]ボタンをクリックします。
これでベイクの準備が整いました。
[オブジェクトモード]に戻り、元オブジェクトを再表示します。
元オブジェクトを選択状態、複製オブジェクトをアクティブ(文字強調)の状態にします。
この状態で[レンダー]タブを開きます。
[ベイク]パネルを開きます。
[ベイクモード]を[テクスチャ]に変更し、[選択→アクティブ]にチェックを入れます。
この状態で[ベイク]を実行します。
これで統合したテクスチャを出力できました。
[UV/画像エディター]のメニューから 画像 -> 画像を別名保存 でテクスチャを保存します。
Blender上での確認
元オブジェクトを削除し、複製オブジェクトにマテリアルを追加します。
テクスチャに統合したテクスチャを指定し、見た目に問題がないか確認します。
問題がなければメニューから ファイル -> エクスポート -> FBX でモデルを出力します。
Unityへの取り込み
Unityへの取り込み時のHumanoidリグなどの設定方法は以下の記事と同様です。
bluebirdofoz.hatenablog.com
透明度を有効にするため、Unit/TransparentCutout を利用したマテリアルを設定しました。
Batches と SetPass calls の値が 2 になっており、負荷が軽減できていることが分かります。
(うち、1 はバッファのクリアなのでユニティちゃん自体の Baches と SetPass calls は 1 です)