LoginSignup
2
3

More than 1 year has passed since last update.

Unity - Simplygonでメッシュの結合をしてみる

Last updated at Posted at 2021-09-18

今回はUnityにて、Simplygonというツールを使って、メッシュの結合を行ってみようと思います。

メッシュを結合すると、扱いやすくなったりライトマップを焼く際に余計な場所まで焼かなくて良くなります。
また、今回のように見えなくなる部分のポリゴンを削減することで、メッシュを表示する際の負荷軽減にも繋がります。

Unityでメッシュの結合といえば、Mesh Bakerが有名ですが、Simplygonを使用するとメッシュ結合時に重なって見えなくなったメッシュを除去してくれます。

環境 Unity 2020.3.18f1 Simplygon 9 SDK 9.1.34800.0

・2021/09時点では、Unity 2021ではSimplygonは使用できません。 ・SimplygonはWindowsでのみ動作します。

Simplygonとは

https://www.simplygon.com/
3Dモデルの最適化ツールです。
できることは多岐にわたるので、詳しくは公式サイトを要チェックです!

今回取り上げるメッシュの結合(重なったメッシュの削減)の他にも、見た目をなるべく損なわない形でポリゴン数を下げるリダクションなど、様々な機能があります。

Simplygonには無料プランが有り、2021/09時点では1日200処理まで無料との事です。

導入について

導入方法については、詳しく解説してくれている記事があるので、そちらをご参照ください。
SIMPLYGON ( シンプリゴン ) を使ってリダクションをしてみる

自分がSimplygonを導入したときは、「SIMPLYGON_9_PATHが見つかりません」みたいなエラーが出ましたが、Windowsの再起動で直りました。

Simplygonでメッシュの結合をしてみる

モデルの下準備

今回はこの複数のメッシュを一つのメッシュに結合してみます。
image.png

ばらばらにすると、こんな感じです。
image.png

それぞれのゲームオブジェクトにはMesh RendererMesh Filterがアタッチされています。
image.png

一つの親オブジェクトを作成して子供に結合させたいメッシュが配置されるような形にします。
image.png

Simplygonの設定

次に、メッシュ結合をするためにSimplygonの設定を行いましょう。

設定ウィンドウを表示する前に、メッシュ結合を行いたいオブジェクトをヒエラルキー上で選択しましょう。
(ウィンドウ表示前というか、メッシュ結合の実行前にオブジェクトを選択しましょう)

次にUnityにて、Window → Simplygonで設定ウィンドウを表示します。
Add LOD Componentボタンを押して、Template → Basic → Aggregation を選択します。
Aggregationはメッシュ結合を行うための設定です。
(Simplygonは、基本的にここに設定を集めて、その分だけ処理が走るという仕組みのようです。)
image.png

下のような設定項目が出てくるので、チェックボックスをすべてオンにします(下記と同じ設定にします)。
image.png

ちなみに、ここのチェックをいじると処理実行時の効果を変えられます。 たとえばMergeGeometriesをオフ、他の2つをオンにした状態で実行すると、重なった部分は削減されたバラバラのメッシュが出力されます。

メッシュ結合の実行

ここまで設定できたら、Simplygonのウィンドウ下にある大きなボタンを押してメッシュ結合を実行します。
(Simplygonの黄色いロゴが付いたボタン。自分はいつの間にかロゴが消えて灰色の大きいボタンになってしまいました...)

image.png
少し待つとこんな感じになります。
一瞬びっくりしますが、メッシュの設定用オブジェクトが同じ座標に生成されただけです。
このオブジェクトは、プレハブとして出力されているのでヒエラルキーからは消してしまって問題ありません。

メッシュ結合した結果の出力物は、Projectの「Assets/LOD/オブジェクト名と同名フォルダ」に出力されています。
image.png
ここで大事な出力物は、

  • 結合後のメッシュ
  • USDアセットがアタッチされたプレハブ(後で触れます)

の2つです。
結合されたメッシュをインスペクターで見るとこんな感じです。
image.png

結合されたメッシュを見てみる

結合前のメッシュを見てみましょう。
before
image.png

after
image.png
実にわかりにくいですが、メッシュが重なっていた部分が削られています。

効果をまとめてみました。

項目 メッシュ結合前 メッシュ結合後
外見 image.png image.png
ポリゴン数 30059(各メッシュの合計) 22787
頂点数 14297(各メッシュの合計) 10918

見た目はそのままで、いい感じにポリゴンと頂点が削減できていますね。

出力後メッシュの設定について

ここまででメッシュの結合はできました。
Unityでは、FBX形式のモデルを取り込むとメッシュなどのインポート設定が行なえます。

Simplygonで吐き出されたメッシュには同じインポート設定はありません。
が、吐き出されたUSDコンポーネント付きのプレハブから同じような設定が行えるようになっています。

最後に、結合後メッシュでライトマップを焼けるように、ライトマップ用UVを生成するオプションを紹介します。

ライトマップ用UVの生成

生成されたプレハブをインスペクターで表示しましょう。
そして、Advancedタブをクリックします。
スクリーンショット 2021-09-18 164459.png

少しスクロールすると、Generate Lightmap UVsという項目があるのでチェックします。
スクリーンショット 2021-09-18 164747.png

最後に、設定をメッシュに反映させるために、インスペクター上の「USD Asset」と書かれているロゴの右側の更新ボタン(ぐるぐるマーク)をクリックしましょう。
設定を反映していいか聞かれるので、OKをクリックです。

スクリーンショット 2021-09-18 165446.png
その後このように、メッシュをインスペクターで表示したときに、UV2の表示が増えていればOKです。

まとめ

Simplygonを使用して、メッシュの結合を行ってみました。
いい感じに表に出ない余分なポリゴンを削ってくれた上で、メッシュを結合してくれました。

更にリダクションの設定を追加すれば、なるべく外観を保ったままポリゴン数を削減したりもしてくれます。
また、自分は試せていませんが、複数マテリアルのテクスチャを結合する事もできそうなので、試してみるといいかもです!

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3