Unity Asset で Mesh を結合すると言えばこの Asset というところではないでしょうか?ということで、Mesh Baker(有償版) を使ってみました。
TL;DR
さすが有名な Asset ということもあり、Batches と SetPass Call の削減ができる Asset でした。オプションも、Bake 方法も複数あり、自動でやれることも、手動できめ細やかにやれることもある Asset だなと思いました。
今回は手動で Bake する対象を増やす方法として、さらに一歩踏み込んで使ってみる 紹介しています。
MeshBaker とはどういう Asset?
このアセットはUnity上でマウスをポチポチッとするだけで複数のメッシュを統合し1つに、更にテクスチャもアトラス化して1枚に、そしてマテリアルも1つにしてくれちゃうスグレモノです。
こちらの サイト がわかりやすいです。
使い方
慣れれば簡単です
いろいろなサイトで紹介されているので、ここでは割愛させてもらいます。
実際に使ってみた
Bake したものを比較してみる
左(1枚目)がBakeする前のもので、右(2枚目)がBakeしたものです。
Batches と SetPass calls は以下の通りになりました。Batches、SetPass calls 共に削減されていることがわかります。削減率もなかなかいい割合だと思います。
項目 | 結合前 | 結合後 | 削減率 |
---|---|---|---|
Batches | 161 | 59 | 36.6% |
SetPass calls | 58 | 33 | 56.9% |
※ Bake は柱と銅鑼を別々に実施しています。詳細は後述です。
近くで見てみる
左が削減前、右が削減後です。右側の銅鑼がの色がもっさりしているのがわかります。削減率が高かったとしても、これでは?となってしまいますよね。
もっさりを改善する
MeshBaker は大きく 4 つのやり方があります。
上記もっさりはしたものは4でやっていたので Texture も bake しています。そこで銅鑼は 2 を使って、Mesh だけ bake してみました。どうでしょうか?Meshのみ結合した(一番右)近くでの見た目も、結合前(一番左)と比較して遜色ないことがわかりますよね。
Batches、SetPass calls は以下の通りです。少し削減率が落ちていることがわかりますね。
項目 | 結合前 | もっさり | Meshのみ | 削減率 |
---|---|---|---|---|
Batches | 161 | 59 | 82 | 53.0% |
SetPass calls | 58 | 33 | 36 | 69.6% |
さらに一歩踏み込んで使ってみる
この鳥居は6か所にMeshがありますが、Torii(7)を選択して Mesh を Bake しても全ては結合されません。
柱(Gate)と銅鑼(Gong)と吊るす糸(Line)は別々のマテリアルを使用しています。
別の Mesh を Bake するときにマテリアルも結合してくれるのですが、
この関係からか別マテリアルの場合、自動で MeshBaker の対象にならないことがあります。
この場合は手動で追加していきます。
- ヒエラルキー上で TextureBaker を選択します
- MB3_Texture Baker の Objects To Be Combined を展開し、Sizer をメッシュの数に合わせて修正します。
(ここでは 4 から 6 に変更しています) - 増えた項目に追加したい Mesh をドラッグ&ドロップで追加します
ここから先は同じ手順です。実施した結果が下です。一番右が今回の手順で実施した鳥居です。他と比べると暗いですね。結果的に分割して Bake したほうが良かったみたいです。
(他は左から、未実施、別々にBake、銅鑼はMeshのみBake、今回の手順で実施、です。)
大きなオブジェクトを Bake する
(時間があるときに実施した結果は追記しようと思います。)
大きなオブジェクトを Bake すると、当然ですが大きなオブジェクトの Mesh が一つのものとして Bake されます。例えば家を Bake すると、その家が一つの Mesh として Bake されます。そうすると家の中にいるとして、ある一面の壁しか見えていない時でも、家全体の Mesh を描画計算する必要がでてきます。その結果、Batches などは減っているけど、Tris などの値が増えてしまい、結果処理が遅くなることもあります。ご利用は計画的にですね。
まとめ
Batches、SetPass Call を減らすためにはとても有用な Asset だと感じました。
- 操作も慣れれば簡単
- 簡単に Batches、SetPass Call を減らすことができる
- 見た目を変えずにBakeするには調整が必要な場合もある
- Texture は Bake しない
- Mesh を一度に Bake しないで、分割して Bake する
- 大きすぎるオブジェクトに使うときは本当に必要か考えてから