Unityでたくさんのオブジェクトをシーンに並べたり、自作のオブジェクトを使った時に、シーンの読み込みや挙動が遅くなりカクカクになってしまったことはありませんか?
重たいCGデータや、フォトグラメトリのデータをUnityでサクサク扱いたい!そんな時に便利なUnityのアセット「Mesh Optimizer」を紹介します。
Mesh Optimizerとは
Mesh Optimizerは、3Dモデルのメッシュを軽量化できる無料のUnity Assetです。
Unity上で、シーン上にオブジェクトを表示したまま、ポリゴン数を削減できる便利なツールです。
以下の画像を見てみてください。
左が元々のポリゴン数の多いデータで右がポリゴン数を削減したデータです。
メッシュを示す三角形の数が大きく減っていることがわかると思います。
これによりUnityのゲームやアートを軽量化ができます。
こうした作業を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をインポートしてください。
UnityのAsset上に「Optimizer」というフォルダが増えたら、ダウンロード完了です。
CGデータのポリゴン数を軽くしてみよう
今回は、このモデルを軽量化してみます。
フォトグラメトリによって生成されたデータのようで、いかにも重そうなCGです。
以上のようなデータをSketchfabからダウンロードする方法はこちらの記事をどうぞ。
UnityではSceneウィンドウの左上のタブ(以下の赤枠の箇所を開くことでモデルの描画方法を変更できます)。
「Wireframe」を選択することで、モデルをポリゴンで表示することができます。
この表示で確認すると、たくさんのポリゴンで形成されたオブジェクトであることがわかります。
Mesh Optimizerの使い方は簡単です。
以下の手順で設定できます。
- オブジェクトをヒエラルキーに移動させ、シーンビューに表示します。
- 以下の画像のようにInspectorウィンドウを表示します。
- MeshRendererのコンポーネントがついたオブジェクトを探します。
- そのオブジェクトに、Asset>Optimize Mesh>AdditionalScriptsと開いた先にある、「OptimizeMesh」のスクリプトをアタッチします。
- すると下の画像のようにオブジェクトに、「Optimize Mesh」が表示されます。
これができればMesh Optimizerの設定は完了です。
Mesh Optimizerは、以下のように単純なボタンによって構成されています。
この、「Quality」の値を変化させることで、オブジェクトのポリゴン数を軽量化することができます。
下は、Qualityを0.1にして「Optimize Mesh!」を選択した画像です。
左が元のモデルで、右がメッシュを軽量化したモデルです。
Wireframe表示にすると、ポリゴン数が大きく減っていることがわかります。
具体的な数値としては、バーテックス(頂点数)を168418から33047に。
ファイルサイズを83Mbyteから約1Mbyteまで削減することができました。
今回は値を「0.1」と大きく減らしたため、見た目が少し粗くなっています。
ご使用になるオブジェクトに合わせて、値を調整しながら見栄えとオブジェクトの軽さのバランスを調整してみてください。
「0.9、0.8、0.7」と、だんだん値を下げていって、見た目の変化が気にならない程度まで下げるのが簡単です。
軽量化したオブジェクトを保存しよう
Mesh Optimizerでは、先程のポリゴン数を下げたデータを簡単に保存することも可能です。
上記のように軽量化が完了したら「Save Mesh!」のボタンを選択するだけで軽量化したオブジェクトを保存することができます。
「Save Mesh!」を選択すると、以下のように保存する前の名前の設定と保存先の設定が出てきます(今回はMacを使用した場合の表示です)。
Unity上に保存したい場合は、UnityHubで保存したいプロジェクトの右の縦3点リーダーボタンを押し「Reveal in Finder」を選択すると、そのプロジェクトが保存されているフォルダを選択することができます。
このFinderの中からAssetsを開き、そこに保存すると以下の画像のようにUnityのAssets上にデータが保存されます。
赤枠が保存された軽量化したデータです。
元のメッシュに戻したい時は
元のメッシュに戻したい時は、編集していたオブジェクトのインスペクターで操作できます。
Mesh Filterの「Mesh」を選択する箇所の右の右側にある円形のボタンのところから編集前のMeshを選択すると、元のモデルに戻すことができます。
画像の右の赤枠内の右が円形のボタンを押して開いたSelect 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にアップロードする方法
UnityからSTYLYにアップロードする方法
STYLYに関する質問、バグ報告、改善してほしい要望はSTYLY FORUMまで
https://jp.forum.styly.cc/support/discussions