Javascript is required

TOP › マイページTOP ›
入稿ドキュメントMAP › テクニカルガイド ›
MeshBakerの使い方

MeshBakerの使い方

Mesh Bakerはテクスチャやメッシュの結合を行うことができるUnity拡張で、Ian Deane氏がAssetStoreにて販売しています。

UnityでVketの入稿を行う際、SetPassCallsやBatchesを減らして描画負荷を軽減する必要がありますが、Mesh BakerはUnity上でそれらの軽量化を行うツールとして使用することができます。

ここではMesh Bakerを用いて描画負荷軽減を行う手順について解説します。以下は2024年10月時点、Unity 2022.3.22f1を使用しての情報です。

AssetStoreのリンク

機能制限のあるFree版と、制限なしの有償版($86.9)があります。

Mesh Bakerでできること

Mesh Bakerは以下の用途で使うことができます。

  • テクスチャの結合
    複数のテクスチャを1枚に結合し、変化したUVを元のメッシュに反映します。
    マテリアルの数を減らすことで、SetPassCallsを減らすことができます。
  • メッシュの結合
    同じマテリアルを使っているがメッシュが分かれているような場合、メッシュを1つに結合することでSetPassCallsやBatchesを減らすことができます。

注意: Mesh Bakerでできないこと

Skinned Mesh Rendererを結合する場合、アーマチュアの変形(移動、回転、拡大縮小)の結果は元に戻ってしまいます。
例えば、アバターにポーズを付けているような場合が該当します。

SkinnedMeshBaker(別記事)を使うことで、Skinned Mesh Rendererからポーズ固定されたMesh Rendererに変換することができるので、併用してください。

Free版での機能制限

Free版でもVketの入稿に使うほとんどの機能は利用可能です。
機能制限は以下のような物があります。

  • テクスチャの結合時に使用できるシェーダーに制限があります。
    • 一部のシェーダーはテクスチャの内部プロパティ名がMesh Bakerから認識されず、使用できないようです。
      ユニティちゃんトゥーンシェーダー(UTS2)などが該当します。
    • その場合、一時的にStandardシェーダーに変更して結合を行った後、再度シェーダーを変更することで対応できます。
      ただし、メインテクスチャとノーマルマップ以外にマスクテクスチャなどを設定している場合は結合できません。
  • メッシュの結合時に結合結果をassetファイルに保存することができず、シーン(.unityファイル)に含まれた状態になります。
    • 入稿に使用するシーンと別のシーンで結合を行う場合など、シーン間で結合結果を移動する際に制限があります。

使い方

Mesh Bakerでテクスチャやメッシュを結合する手順は、大きく2段階に分かれています。

  • A. テクスチャのアトラス化とマテリアルの結合
    • アトラス化(複数のテクスチャを並べて1枚のテクスチャに統合する)
    • アトラス化の結果に従ってマテリアルを出力する
    • 処理は『TextureBaker』が担当する
  • B. メッシュの結合
    • 複数のメッシュを結合して、ひとつのメッシュに出力する
    • アトラス化されている場合はその結果を元に、UVをメッシュに再設定する

手順A→Bを続けて行うことも、手順Bのみ行うこともできます。

手順

A. テクスチャのアトラス化とマテリアルの結合

A-1. GameObject から TextureBaker and MeshBaker を Create する

アトラス化・マテリアル結合を行う TextureBaker と、メッシュの結合を行う MeshBaker のオブジェクトを作成します。

meshbaker

A-2. 結合する MeshRenderer や SkinnedMeshRenderer を D&D する

赤枠内にD&Dしてください。追加されたオブジェクトは Object To Be Combined から確認できます。D&D以外の方法、Open Tools For Adding Objects から追加しても同じです。

meshbaker

A-3. Create Empty Assets For Combined Material する

asset ファイルを保存するダイアログが開きます。ベイク結果を保存する先のファイル名を指定してください。

同じフォルダ内にテクスチャベイクの結果が保存されるので、出力用の一時フォルダを作成すると良いでしょう。

meshbaker

A-4. 結合するマテリアルの指定

結合するマテリアルを指定するために Multiple Combined Materials をチェックして Build Source To Combined Mapping From Objects To Be Combined ボタンを押す。

meshbaker

サブメッシュごとに『結合先マテリアル(Combined Material)』と『結合元マテリアル(Source Materials)』がリストアップされます。『結合元マテリアル』を組み替えることで結合対象を変更できます。同一のシェーダーごとに結合すると良いでしょう。

meshbaker

今回は同一シェーダーごとに、以下のように結合します。

meshbaker

A-5. テクスチャのアトラス化

Bake Materials Into Combined Material を押すと、アトラス化と結合が行われます。
この時点で、テクスチャとマテリアルのコピーが、指定のフォルダに格納されます。

meshbaker

もし、この段階でコンソールにエラー The free version of Mesh Baker only works with Diffuse and Bumped Diffuse Shaders. が出てしまった場合、Mesh Baker Freeで結合できないシェーダーを使用したマテリアルを結合しようとしています。
一旦シェーダーをStandardシェーダーに変更して結合を行った後、再度シェーダーを変更してください。

A-6. MeshBaker への設定引き継ぎ

TextureBaker オブジェクトの子供として MeshBaker オブジェクトが存在していると思います。メッシュ結合はその MeshBaker を用いて行いますが、出力設定はTextureBakerオブジェクトに用意されているMeshBakerGrouper で行うようになっています。

下図のように Use Shared Settings に設定されているオブジェクト側で、手順B-4を行うようになっています。Use Shared Settings の設定値をクリアしてしまえば下部の Disable も外れて個別の設定が可能です。

meshbaker

B. メッシュの結合

メッシュの結合のみ行う場合は、手順 B-1 から実施してください。 前段で TextureBaker を使用した場合は、手順 B-3 から実施してください。

B-1. MeshBaker の作成

テクスチャアトラス化せずメッシュの結合のみ行う場合は、GameObject から MeshBaker を Create してください

meshbaker

B-2. 結合する MeshRenderer や SkinnedMeshRenderer を D&D する

赤枠内にD&Dしてください。追加されたオブジェクトは Custom List Of Objects To Be Combined から確認できます。

meshbaker

B-3. 出力方法を指定する

Free版では Output Into Scene Object しか選べません。有料版は Bake Into Prefab にて mesh 情報をファイル保存しておくと扱いやすいのでおすすめです。

meshbaker

Output Into Scene Object の場合 Combined Mesh Object に Hierarchy 上のオブジェクトを指定します。

None 指定の場合、新しくオブジェクトが作成されて Hierarchy に追加されるのでそのままで大丈夫です。

Bake Into Prefab の場合、Combined Mesh Prefab には Project エクスプローラから Prefab ファイルを output に指定してください。同じフォルダにメッシュ情報を格納した asset ファイルも出力されます。

B-4. 出力設定を変更する

meshbaker

Renderer では、出力先を Mesh Renderer と Skinned Mesh Renderer のどちらかから選ぶことができます。Skinned Mesh Renderer に紐付けられているボーンは、結合前メッシュの Armature のままです。

Include Blend Shapes にチェックを入れて Skinned Mesh Renderer にて出力すると、シェイプキーも同時にコピーされます。ただしキー名重複を避けるためにキー名が変更されるため、Animation の再設定が必要です。

Lightmapping UVs はライトベイク対象のメッシュ(Lightmap staticのメッシュ)を結合する場合に設定します。

  • ライトベイクしないメッシュの場合
    • Ignore_UV2 で構いません。結合後メッシュにUV2はコピーされません。
  • ライトベイク対象かつ 結合前メッシュ がGenerate Lightmap UVsで自動生成されたUV2を持っている 場合
    • Generate_new_UV2_layout を選択してください。Mesh Baker が新たに UV2 を自動生成します。
  • ライトベイク対象かつ 結合前メッシュが独自のUV2を持っている場合
    • Copy_UV2_unchanged_to_separate_rects を選択してください。結合前メッシュとほぼ同じ UV2 が結合後メッシュにも設定されます。

B-5. メッシュをBakeする

Bake ボタンを押すとメッシュが結合され、指定の出力先・指定の設定にてメッシュが出力されます。
設定しなおして再結合する場合、そのまま残っている結合前メッシュなどから再実施できます。

入稿前の注意

テクスチャやメッシュの結合を行った後も、シーンに結合前のオブジェクトが残っています。入稿を行う際に、それらのオブジェクトが残っていると2重に重なった状態になるため、削除しましょう。

また、アセットフォルダー内に結合前のテクスチャやマテリアルのファイルも残っているため、必要に応じて削除してください。

関連リンク

公式ガイドラインの確認

入稿前に、必ず出展ガイドラインと入稿ルールを確認してください。入稿の手順は入稿ガイドをご覧ください。


↑ ページ上部に戻る