『VR空間のCGオブジェクトを軽くする方法 ~MeshBakerを利用したCGリダクション』 VRプロフェッショナルアカデミー/No1.VR/AR専門プロフェッショナルスクール

アカデミーブログ

Top  >   ブログ  >   『VR空間のCGオブジェクトを軽くする方法 ~MeshBakerを利用したCGリダクション』

『VR空間のCGオブジェクトを軽くする方法 ~MeshBakerを利用したCGリダクション』

2021/01/26

◇はじめに

VR空間で沢山のCGを表示するとどうしても重くなってしまいます。 そこで、見た目に影響せず、簡単にCGをリダクション出来る!VR開発で必須のツールMeshBakerの使い方をどこよりも丁寧に紹介します。

Unityで沢山のモデル、3Dオブジェクトをシーン上に置いたときに負荷が大きすぎて処理が重いといったことが起こります。

そういった時に負荷軽減を考えますが、その際に役立つ手段としてMesh Bakerを使ってテクスチャをアトラス化するという方法があります。

 

今回はそのMesh Bakerの使い方について確認していきます。

◇Mesh Bakerとは

ポリゴン数(頂点数)やバッチ処理数が多い3Dモデルを取り扱うときにその負荷の軽減に役立つのがMesh Bakerです。

 

Mesh Bakerはモデルのマテリアル(テクスチャ)をアトラス化して1つのテクスチャにまとめ、マテリアルを結合してくれます。

※アトラス化とは、複数のテクスチャを一枚のテクスチャにまとめることを指します。

<アトラス化の結果イメージ>

 

無料版と有料版の違い

以下の2点が大きな違いとなります

1.無料版は6.5万ポリゴンまでだが、有料版は無制限

2.無料版はシェーダーがDiffuseとBumpedのみ結合が可能という制限があるが、有料版はシェーダーに制限が無い

 

|注意したいこと

Mesh Bakerは指定したオブジェクトを全て一纏めにするため、背景や置物などのオブジェクトを一纏めにするイメージになります。

<Bake後の統合メッシュ画像>

 

何か動作などの処理を建物の一部に適用したい場合などはその対象と建物は別のオブジェクトにする必要があります。

 

◆例:建物の扉だけ開け閉めしたり触れたら色を変えたりしたい時

⇒扉のみでベイク、扉以外の建物全体でベイクして扉と建物は別のオブジェクトとして作成する。

 

◇使用するアセットと開発環境

Mesh Baker Free

・本記事で使用するモデルサンプル:Modular Building

Unity2020.1.6f1使用

Windows

 

◇使い方(操作方法)

では実際に手順を追ってみましょう。

準備:Mesh Baker Free及びモデルのダウンロードとインポート

まず上記のリンクからMesh Baker Freeをダウンロードしてマイアセットに追加してください

 

Mesh Baker FreeをWindow > Package Managerからダウンロード&インポートします

 

<Packages : My AssetsにしてMesh Baker Freeを探し、ダウンロードします>

 

<ダウンロード後インポートします>

 

全てインポートします

 

続いて今回テスト用に使用するモデルとしてModular Buildingを使います。

 

使用するモデルについては例なので何でも問題ありませんが、無料版はシェーダーがDiffuseとBumpedのみという制限がありますのでそれ以外のシェーダーを使用したい場合は有料版を使用してください。

 

<任意(使用予定のモデルが無い場合はModular Buildingも同様にインポートしてください)>

 

準備:Modular Buildingのサンプルシーン(Building Example)の編集

<モデルが別にある場合はこちらの工程はスキップしてください>

 

Modular Building > Assets > Scenes > Building Example を開きます。

カメラが無いのでカメラを追加します。

 

カメラの位置は適当に建物が映る位置に移動します。

 

この状態でのStatsを確認します。

Batches:387  SetPass Cells:43

 

以上で準備完了です。

ここから先は実際にMesh Bakerを使ってこの建物のモデルを軽量化していきます。

 

TextureBakerでまとめる対象のオブジェクトを選択し、テクスチャをアトラス化する

GameObject > Create Other > Mesh Baker > TextureBaker and Mesh Bakerを選択します。

 

するとTextureBaker(0)というオブジェクトがヒエラルキーにできます。

 

TextureBaker(0)を選択してInspector内の「Open Tools For Adding Objects」をクリックします。

 

するとウィンドウが表示されます。

 

まとめたいオブジェクト(今回はModular Building)を選択して「Search For Meshes To Add」を選択します。

「Exclude meshes with out-of-bounds UVs」のチェックを外します。

最後に「Add Selected Meshes To Target」をクリックします。

 

ウィンドウを閉じてInspectorを確認すると、「Objects To Be Combined」内に先ほど選んだオブジェクトが入っていることが確認できます。

 

ここで目的のオブジェクトが抜けている場合はSizeを増やしてオブジェクトを追加することができます。

 

続いて「Create Empty Assets For Combined Material」をクリックします。

すると追加したオブジェクトのテクスチャのアトラス化とマテリアルの結合が始まります。

 

処理が終わると以下のようにアトラス化されたテクスチャやマテリアルが作成されます。

<アトラス化結果画像>

 

結合したマテリアルを用いてMeshBakerでプレファブを作成する

続いてTextureBaker(0) > MeshBakerを選択します。

 

Inspector内のOutputでBake Into Prefabを選択して、Bake後のオブジェクトをプレファブに出力するように設定します。

 

Create Empty Prefabをクリックしてプレファブを作成します。

作成したプレファブにベイク後のオブジェクトが格納(ベイク結果のメッシュが適用)されます。

 

名前を決めて保存をクリックします。

 

プレファブが作成され、そのプレファブがCombined Mesh Prefabに適用されています。

 

<プレファブの名称変更について>

プレファブの名前はAssetsの方で変更すればCombined Mesh Prefab内も同じ名前で更新されるのでアタッチしなおす必要はありません。

デフォルトで「<指定したファイル名>0」という名前になるようです。

画像は「BakedBuilding0」から「BakedBuilding」に変更した後になります。

 

次にBakeをクリックします。

するとメッシュが作成され、先ほど作成したプレファブに適用されます。

 

 

meshが作成され適用されたことがわかります

 

作成されたプレファブをヒエラルキーにドラッグアンドドロップして確認します。

元のModular Buildingは非アクティブにしておきます。

非アクティブ化

 

これで負荷軽減が完了しました。

 

それではStatsを確認してみましょう。

Batches:14  SetPass Cells:14

 

元がBatches:387  SetPass Cells:43なのでかなり負荷軽減することができましたね。

 

Mesh Bakerの使用方法は以上で完了となります。

 

Tips:シーン内にオブジェクトとして出力する場合

プレファブとして出力せず、シーン内に直接オブジェクトとして出力する場合はBake Into Scene ObjectにしてBakeします。

 

その場合はシーン内にオブジェクトを作成してそのオブジェクトをCombined Mesh Objectに設定してBakeします。

 

こうして出力したオブジェクトをAssets内にドラッグアンドドロップしてプレファブ化もできます。

 

◇最後に

今回は負荷軽減の方法の1つとしてMesh Bakerの紹介でした。

Unityで沢山のオブジェクトがシーン内にある場合や、重い処理が苦手なVR用のアプリケーション作成時等に役に立ちます。

 

その他負荷軽減として「Occlusion culling」を適用する方法などもあります。


Occlusion cullingについてこちらに記載しています

UnityでOcclusion Cullingを使ってCGレンダリングの負荷を軽減する方法

 




◇アカデミーからのお知らせ

VRプロフェッショナルアカデミーでは受講生を募集しています。

VR開発に興味があるUnity初心者の方はVRアドバンスコースVRビギナーコースで一からUnityを学習し、VRアプリ開発まで学習できます!

 

Unityでの開発経験はあるけどVRについては開発したことが無い、けどVR開発してみたい!という方はVRエキスパートコースでより実践的なアプリ開発を学習できます。

 

 

また、VR以外にもARアプリ開発の学習ができるARビギナーコースARエキスパートコースをご用意しています。

 

現在注目されているVR・AR技術に興味があり開発を行ってみたい方は是非資料請求オープンキャンパスにご参加いただければと思います。

お悩みの方はお気軽に個別相談会にお申し込みください。

担当スタッフが丁寧にVRやUnityについてのご説明からさせていただいております。

 

皆様のご参加を心よりお待ちしております。