MRが楽しい

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

Blenderでユニティちゃんを編集してレンダリング負荷を軽減する

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

今回は Blender に取り込んだユニティちゃんのオブジェクトやマテリアルを結合してレンダリング負荷の軽減を試してみます。

メッシュの統合

前回記事で作成したユニティちゃんプロジェクトを開きます。
f:id:bluebirdofoz:20190601223650j:plain

今回テクスチャの統合にベイク処理を利用します。
オブジェクト同士の交差を避けるため、cheek オブジェクトをY軸方向に -0.01 だけ動かしました。
f:id:bluebirdofoz:20190601223700j:plain

全てのメッシュオブジェクトを統合します。
全メッシュオブジェクトをアウトライナーウィンドウで選択した状態で[Ctrl+Jキー]を実行します。
f:id:bluebirdofoz:20190601223710j:plain

全てのメッシュオブジェクトが一つのメッシュオブジェクトに統合されました。
f:id:bluebirdofoz:20190601223721j:plain

テクスチャの統合

次にテクスチャ統合を行うための新規オブジェクトを作成します。
[オブジェクトモード]で統合オブジェクトを選択した状態で[Shift+Dキー]でオブジェクトを複製します。
f:id:bluebirdofoz:20190601223733j:plain

複製オブジェクトを bakemesh と名付け、全てのマテリアルを削除します。
操作対象が分かるよう一旦、元オブジェクトは非表示にしました。
f:id:bluebirdofoz:20190601223744j:plain

UVマップを再作成するため、bakemesh のUVマップも削除します。
f:id:bluebirdofoz:20190601223754j:plain

bakemesh の[編集モード]に入り、メニューから メッシュ -> UV展開 -> スマートUV投影 を実行します。
f:id:bluebirdofoz:20190601223804j:plain

これで統合されたUVマップが生成されました。
ベイク画像を作成するため、[UV/画像エディター]で[新規]ボタンをクリックします。
f:id:bluebirdofoz:20190601223812j:plain

生成するテクスチャのサイズを指定して[OK]ボタンをクリックします。
f:id:bluebirdofoz:20190601223822j:plain

これでベイクの準備が整いました。
[オブジェクトモード]に戻り、元オブジェクトを再表示します。
元オブジェクトを選択状態、複製オブジェクトをアクティブ(文字強調)の状態にします。
この状態で[レンダー]タブを開きます。
f:id:bluebirdofoz:20190601223831j:plain

[ベイク]パネルを開きます。
[ベイクモード]を[テクスチャ]に変更し、[選択→アクティブ]にチェックを入れます。
この状態で[ベイク]を実行します。
f:id:bluebirdofoz:20190601223847j:plain

これで統合したテクスチャを出力できました。
[UV/画像エディター]のメニューから 画像 -> 画像を別名保存 でテクスチャを保存します。
f:id:bluebirdofoz:20190601223856j:plain

Blender上での確認

元オブジェクトを削除し、複製オブジェクトにマテリアルを追加します。
テクスチャに統合したテクスチャを指定し、見た目に問題がないか確認します。
f:id:bluebirdofoz:20190601223911j:plain

問題がなければメニューから ファイル -> エクスポート -> FBX でモデルを出力します。
f:id:bluebirdofoz:20190601223921j:plain

Unityへの取り込み

Unityへの取り込み時のHumanoidリグなどの設定方法は以下の記事と同様です。
bluebirdofoz.hatenablog.com

透明度を有効にするため、Unit/TransparentCutout を利用したマテリアルを設定しました。
f:id:bluebirdofoz:20190601223930j:plain

Batches と SetPass calls の値が 2 になっており、負荷が軽減できていることが分かります。
(うち、1 はバッファのクリアなのでユニティちゃん自体の Baches と SetPass calls は 1 です)
f:id:bluebirdofoz:20190601223941j:plain