【Unityアセット】Mesh Optimizerで3Dモデルのポリゴン数を下げてシーンを軽くする

Unityでたくさんのオブジェクトをシーンに並べたり、自作のオブジェクトを使った時に、シーンの読み込みや挙動が遅くなりカクカクになってしまったことはありませんか?

重たいCGデータや、フォトグラメトリのデータをUnityでサクサク扱いたい!そんな時に便利なUnityのアセット「Mesh Optimizer」を紹介します。

Mesh Optimizerとは

Mesh Optimizerは、3Dモデルのメッシュを軽量化できる無料のUnity Assetです。
Unity上で、シーン上にオブジェクトを表示したまま、ポリゴン数を削減できる便利なツールです。

Asset Storeにて Mesh Optimizer

以下の画像を見てみてください。
左が元々のポリゴン数の多いデータで右がポリゴン数を削減したデータです。

メッシュを示す三角形の数が大きく減っていることがわかると思います。
これによりUnityのゲームやアートを軽量化ができます。

Mesh Optimizerの使用前後のポリゴン数

こうした作業をUnity上で簡単にできる、Mesh Optimizerを紹介いたします。

Mesh Optimizerをダウンロードしよう

Mesh Optimizerは、一般のUnityのアセット同様Unity Asset Storeからダウンロードできる無料アセットです。

以上のリンクを開き「Add to My Assets」を選択したのち、Mesh Optimizerを使いたいUnityプロジェクトを開き、「Open in Unity」を選択してください。
すると、Unityでプロジェクト上で、PackageManagerが開くので、「Import」を選択し、Mesh Optimizerをインポートしてください。

Mesh OptimizerのImportのためのPackageManagerが開きました

UnityのAsset上に「Optimizer」というフォルダが増えたら、ダウンロード完了です。

CGデータのポリゴン数を軽くしてみよう

今回は、このモデルを軽量化してみます。
フォトグラメトリによって生成されたデータのようで、いかにも重そうなCGです。

今回ポリゴンを軽量化するモデル

以上のようなデータをSketchfabからダウンロードする方法はこちらの記事をどうぞ。

UnityではSceneウィンドウの左上のタブ以下の赤枠の箇所を開くことでモデルの描画方法を変更できます)。
「Wireframe」を選択することで、モデルをポリゴンで表示することができます。
この表示で確認すると、たくさんのポリゴンで形成されたオブジェクトであることがわかります。

シーンウィンドウの左上の設定をWireFrameにするとメッシュが表示される

Mesh Optimizerの使い方は簡単です。
以下の手順で設定できます。

  1. オブジェクトをヒエラルキーに移動させ、シーンビューに表示します。
  2. 以下の画像のようにInspectorウィンドウを表示します。
  3. MeshRendererのコンポーネントがついたオブジェクトを探します。
  4. そのオブジェクトに、Asset>Optimize Mesh>AdditionalScriptsと開いた先にある、「OptimizeMesh」のスクリプトをアタッチします。
  5. すると下の画像のようにオブジェクトに、「Optimize Mesh」が表示されます。

数字の順に確認してみてください

これができればMesh Optimizerの設定は完了です。

Mesh Optimizerは、以下のように単純なボタンによって構成されています。

Optimize Meshのコンポーネントが追加されます

この、「Quality」の値を変化させることで、オブジェクトのポリゴン数を軽量化することができます。

下は、Qualityを0.1にして「Optimize Mesh!」を選択した画像です。
左が元のモデルで、右がメッシュを軽量化したモデルです。

左が元のモデルで、右が軽量化したモデル

Wireframe表示にすると、ポリゴン数が大きく減っていることがわかります。

Mesh Optimizerの使用前後のポリゴン数

具体的な数値としては、バーテックス(頂点数)を168418から33047に。
ファイルサイズを83Mbyteから約1Mbyteまで削減することができました。

83Mbyteから約1Mbyteまで削減

今回は値を「0.1」と大きく減らしたため、見た目が少し粗くなっています。
ご使用になるオブジェクトに合わせて、値を調整しながら見栄えとオブジェクトの軽さのバランスを調整してみてください。
「0.9、0.8、0.7」と、だんだん値を下げていって、見た目の変化が気にならない程度まで下げるのが簡単です。

軽量化したオブジェクトを保存しよう

Mesh Optimizerでは、先程のポリゴン数を下げたデータを簡単に保存することも可能です。

上記のように軽量化が完了したら「Save Mesh!」のボタンを選択するだけで軽量化したオブジェクトを保存することができます。

Save Mesh!を選択します

「Save Mesh!」を選択すると、以下のように保存する前の名前の設定と保存先の設定が出てきます(今回はMacを使用した場合の表示です)。

保存先の選択画面

Unity上に保存したい場合は、UnityHubで保存したいプロジェクトの右の縦3点リーダーボタンを押し「Reveal in Finder」を選択すると、そのプロジェクトが保存されているフォルダを選択することができます。

「Reveal in Finder」を選択

このFinderの中からAssetsを開き、そこに保存すると以下の画像のようにUnityのAssets上にデータが保存されます。
赤枠が保存された軽量化したデータです。

Assetsにモデルが保存された

元のメッシュに戻したい時は

元のメッシュに戻したい時は、編集していたオブジェクトのインスペクターで操作できます。
Mesh Filterの「Mesh」を選択する箇所の右の右側にある円形のボタンのところから編集前のMeshを選択すると、元のモデルに戻すことができます。

画像の右の赤枠内の右が円形のボタンを押して開いたSelect Meshウィンドウから、元のMeshを選択してください。

元のMeshを選択する

Tips

今回は簡単な値の調整で、CGのポリゴン数を軽量化できるMesh Optimizerを紹介いたしました。
このアセットを幾らか扱ってみてのコツを簡単に共有します。

メインのキャラやアイテムでなく背景などを軽量化する

目立つものや、演出に関わるものではなくユーザーがあまり目を向けないようなものを軽量化するのがおすすめです。
樹木や岩などは背景では欠かせませんが、データが重い場合があるので、そういったものから軽量化するのがおすすめです。

丸みを帯びているものの方が軽量化しやすい

尖ったものや、細長いもののポリゴン数を減らすシミュレーションを行う際、尖っている箇所などが丸まったり、短くなったりしてしまうことがあります。
より丸みを帯びたものや、直線的なもののメッシュが多い箇所を減らすのに適しています。

できるだけメッシュを結合した方が調整しやすい

もし、MAYAやBlender等でオブジェクトを結合できる場合は、できるだけオブジェクトを結合しましょう。
Mesh Optimizerではオブジェクトがいくつかのメッシュで構成されている場合、そのそれぞれにOptimize MeshのScriptをつけ、値を変更しなければなくなります。
数個だったら問題はないかもしれませんが、数十個のパーツによって構成されているものを調整しようとすると手間が大きくなるので、3DCGソフト等で出力する前に統合しておいた方が簡単に処理することができます。

Skinned Mesh Rendererは非対応

ユニティちゃんなどのアバターに使われる「Skinned Mesh Renderer」ではMeshの処理の仕方が異なるため、Mesh Optimizerは使えません。

特にVRやARでは、シーンを軽くしユーザーの快適さを高めることが体験の向上にも繋がります。
VRでは、重たいシーンを用いるとVR酔いの理由にもなるとも言われています。
オブジェクトを軽くして、サクサクと気持ちよく体験できるxRを作っていきましょう!!!

STYLYにアップロードする方法

3DモデルをSTYLYにアップロードしてみましょう。
注意点:アップロードエラーを防ぐため「CGデータのポリゴン数を軽くしてみよう」の項で説明した、AdditionalScriptsを削除してからアップロードを行ってください。

STYLYアカウントを作成する

アカウント作成方法

STYLYにアップロードする方法

UnityからSTYLYにアップロードする方法

STYLYに関する質問、バグ報告、改善してほしい要望はSTYLY FORUMまで
https://jp.forum.styly.cc/support/discussions