Mesh Baker

bakerWithRockeCube-800x451

* NEW *  Vote for our new game EVA Infinity on Steam Greenlight!

If you care about performance… combine meshes, combine meshes, combine meshes! The Asset Store is full of great models to use in your scene, but each of those models generates its own draw call, unless they use the same material. Mesh Baker can combine multiple meshes together, as well as combine the materials on those meshes into a single combined material (including building atlases. See FAQ for explanation of atlases). Mesh Baker can also modify multiple meshes (adjust UVs) so that they can share a material for static/dynamic batching.

  • Objects to be combined do not need the same material or even the same shader
  • Works with any shader
  • Texture atlases are automatically generated
  • UVs, Normals & Tangents automatically adjusted
  • Tiled textures can have tiling baked
  • Only parts of source textures (atlases) used by source meshes are copied to the target atlas
  • Can map multiple materials to a combined mesh with multiple materials
  • Can create and swap parts of skinned meshes at runtime. Change clothing, add wounds, add armor.
  • Can combine many SkinnedMeshRenderers and MeshRenderers into a single SkinnedMeshRenderer
  • Animations on bones remain intact
  • Can customize SkinnedMeshRenerers by adding MeshRenderer objects (hats, glasses, weapons)
  • Can preserve lightmapping on source objects
  • Can generate lightmapping UVs so the combined mesh can be lightmapped
  • Control over which channels in the combined mesh are generated
  • Non-destructrive workflow. Does not touch source assets (creates new combined mesh and texture atlases)
  • If objects to combine exceed 64k vertices can bake into multiple combined meshes.
  • Choose between three different texture packers
  • No scripting required
  • Easy to integrate into existing workflow
  • Adjust meshes and prefabs so they can share a material (take advantage of static/dynamic batching)
  • Clustering tools to easily group meshes that are close in a large scene
  • Robust, fast, matrure, documented API with examples:
    • Bake materials and meshes at runtime
    • Runtime add, delete and update update objects in a combined mesh
    • Use the API in the editor to integrate meshbaker into your workflow

Evaluation Version

You can download the free evaluation version of Mesh Baker here.

The evaluation version uses DLLs (full version is a full source code release).

Limitations of the evaluation version:

  • Only works with Diffuse and Bump Diffuse shaders
  • Cannot save combined meshes or generate prefabs
  • Cannot Bake Mesh Assets In Place
  • Uses DLLs

The Free version may be several iterations behind the full version, as it is not updated as frequently.

Purchase

  • Please note that Mesh Baker requires Unity 4.3.4 or higher. It has not been tested in earlier versions of Unity.
  • Mesh Baker can be purchased for $55 through the Asset Store
  • Free updates are available with your purchase and full support via email and forums

Youtube Tutorial Videos

Limitations

  • Texture properties in the result material will be combined into atlases, but the other properties can’t be combined. There will only be one master set of non-texture properties that applies to the whole combined mesh.
  • Unity limits meshes to 64k vertices and atlases to maximum texture size.
  • Baking tiling can produce large atlases or exceed the maximum size of the atlas.
  • Some meshes are difficult or impossible to combine:
    • If meshes have channels (colors, or tangents) which others do not.
    • Submeshes that share vertices and have UVs outside the range 0,0..1,1
  • If you want to combine meshes and preserve existing lightmapping, then source meshes must use the same lightmap.
  • Mesh Baker cannot combine Skinned Meshes that have “Optimize Game Object” checked in the import settings (Rig tab). This is because the bones on these objects are not exposed to be combined.
  • Mesh Baker cannot combine Blend Shapes at this time.

Links

Mesh Baker was created by Ian Deane. Other assets by Ian Deane include:

Mesh Baker is available in the asset store

18 thoughts on “Mesh Baker”

  1. Good day.
    I wonder why it does not work with tropical nature pack There are alpha maps Could you make a small video tutorial. If it would support best nature packs that`s where it will shine sir. AAA looking forest with a few draw calls – that`s real blast
    Please help the crowd to get best of your brilliant software.
    Thanks

  2. Hey there Ian!

    I have a problem when loading mesh baker (version 2.1) into the project (utilizing unity 3.5.6f4). I get a red error message in the console, stating:

    Assets/MeshBaker/scripts/MB_TextureCombiner.cs(574,22): error CS0117: `System.IO.File’ does not contain a definition for `WriteAllBytes’

    Am I using the wrong version?
    Thanks for your help!

    Cheers
    Felix

    1. I am guessing the build target is web player which doesn’t have the function WriteAllBytes in System.IO.File. I fixed this problem somewhere along the way so if you upgrade to a more recent version this should be fixed. The function WriteAllBytes can exist in the Editor scope but not in the runtime scope. The fix I chose was to pass the WriteAllBytes function as a delegate to the function where I save the atlases. You may be able to accomplish something similar by wrapping the atlas saving code with #if UNITY_EDITOR tags.

  3. Hi,
    I am having one doubt since i heard about mesh baker. As i have tried this plugin(trial), it works fine with Skinned mesh renderer objects which have their parent position constant.
    Suppose i have 5 different characters with run animation playing on it. and i want 5 characters to run in different random direction. and draw call should be always 1 and other stuffs should work like as before.
    Can this thing will be possible with this plugin. If it works pretty easily then i am going to purchase this plugin from unity asset store.

    1. Yes, this works perfectly although there are two things to be aware of.

      1) You will need to set the animation culling setting to “Always Animate” or “Based on Clip Bounds”.

      2) You will need to add a script to the combined mesh to set the render bounds on the SkinnedMeshRenderer. The render bounds for SkinnedMeshes is normally fixed and is calculated by Unity when meshes are imported based on their animations. In the situation you are describing the render bounds cannot be calculated in advance so you will need to add a script to keep updating it. Mesh Baker includes two scripts that will do this.

      1. Can you name those scripts. And it would be better if you have the sample though for these random movement characters. And my main agenda is to support 250-300 characters in a scene and bake them using your plugin to support maximum performance. So whether it is possible. And any sample project would be better to send for these.

        1. The scripts are called:

          MB2_UpdateSkinnedMeshBoundsFromBones.cs
          MB2_UpdateSkinnedMeshBoundsFromBounds.cs

          Read the comments in the scripts to make sure you are using them correctly. The bounds version is preferable but you need to have the original meshes in the scene and give the script a list of these source objects. The bones version works more generally but is not as accurate and is slower.

          Yes it is possible. I for this many meshes I would take a look at Mesh Baker LOD. Watch the demo video about 6:30 in. It has features specifically designed to handle large mobs of skinned meshes.

          One thing to keep in mind is non-visible skinned meshes. You want to avoid combining non-visible skinned meshes with visible ones because Unity will spend CPU animating the non-visible ones. Try to bake them in clusters that will be grouped together.

          1. Hi, I have tried this plugin with 300 characters(each 650 vertices). And in iPad2 it was giving 10-15 FPS compare old state (3-4 FPS). That is good improvement. characters having random movement and random animation among 6 set. But, Still can we improve it to more FPS.
            And Your plugin gives error on Unity 4.3 for mecanim animation baking, and for Optimise game object option. If i get some were around 50-60 FPS for this much characters i will really appreciate this plugin.

          2. There are a couple of things that might help:

            1) try modifying the update bounds script so it is only called every 5 frames or so
            2) Make sure your animation culling settings are set to “clip bounds” not always animate
            3) Are all 300 characters visible at the same time? Is there some way to cluster them so Unity can cull non-visible ones?

            I suspect with 300 meshes you will need to use LOD. have you looked at “Mesh Baker LOD”. It is an add on for Mesh Baker that does LOD. It can do amazing things with skinned meshes. http://www.digitalopus.ca/site/mesh-baker-lod/ ? Check out the demo video http://www.youtube.com/watch?v=zhpyUUS3Lhs. 6:30 sec in is where I show how it works with Skinned Meshes.

            Thanks for the information about the errors with optimized meshes. I am investigating. Unfortunately I don’t see how I will be able to support these optimized meshes since the bones/animations are hidden. W

  4. Hi, Thanks a lot for your continuous help. I want to check mesh baker LOD. But I did not find any trial version available like i got for MeshBaker. Looks like LOD is very promising.!!

    And coming back to your 3 suggested key points :
    1) Can you name the scripts, where exactly i can get that “update-mesh” and “update-bound” method available.
    2) About animation culling setting : it has only 2 option – “Always animate” and “based on renderers”. And if i don’t check “Always-animate” option, it will not animate. and it will get frizzed.
    3) Yes, it is a ortho-3Dview, so in fully zoomed out state all 300 characters will be visible.

    And one more thing, baking skinned mesh renderer is not working for simple mecanim animation. When i try generic type animation will not work only. Please check this, and suggest me which animation i have to use. either Legacy or generic.

    And If i won’t get trial version of LOD, then i will buy it. but one doubt about it is, Whether it works for randomly moving animated characters, and if so how much easy it is. 🙂
    Thanks a lot. And you rocks with this much good plugin collection.

    1. Re: Scripts
      The scripts are called:

      – MB2_UpdateSkinnedMeshBoundsFromBones
      – MB2_UpdateSkinnedMeshBoundsFromBounds

      You need to put them on the combined mesh. The bounds version is more efficient but you need to give it a list of the source objects. The Bones version is easier to use. If your 300 characters are combined to a particular area then you could set the bounds to the size of this area and not touch it. This would be the most efficient.

      Re: Animation culling

      It looks like Unity removed the other animation culling settings in Unity 4.3. That is unfortunate since they are more efficient. You will need to use “Always Animate”.

      Re: Mecanim Animation

      You will need to use legacy for now. I am working on better support for Mecanim Animation.

      Re: Mesh Baker LOD

      I have used Mesh Baker LOD for randomly moving characters so I know that works. There is not trial version and I don’t plan to create one in the near future. If you buy through the Digital Opus website then I will refund you if you find you cannot use it for some reason. I am not sure if the Asset Store will refund you or not.

      Re: Mesh Baker LOD

      There is no trial version of Mesh Baker LOD unfortunately.

    1. Yes, Mecanim should work now. The only thing that does not work is support for meshes that have been imported as “optimized”.

Leave a Reply

Your email address will not be published. Required fields are marked *

 

Music & Games — What's your symphony?