Search Unity

  1. Unity 6 Preview is now available. To find out what's new, have a look at our Unity 6 Preview blog post.
    Dismiss Notice
  2. Unity is excited to announce that we will be collaborating with TheXPlace for a summer game jam from June 13 - June 19. Learn more.
    Dismiss Notice
  3. Dismiss Notice

Mesh Baker by Digital Opus [RELEASED]

Discussion in 'Assets and Asset Store' started by Phong, Nov 20, 2012.

  1. Phong

    Phong

    Joined:
    Apr 12, 2010
    Posts:
    2,096
    Hello, thanks for the thoughtful feedback. I will look into StartAssetEditing and StopAssetEditing as well as batching the SaveAndImport operations. TextureArrays are tricky to create. The source textures must be in the exact format, size, and options as the texture array in order to copy data from the source to the target. This is why there is a lot of SaveAndImport. I will look into whether these can be batched.

    Regarding the error "Combined Material is null". Both of these fields need an asset assigned:
    upload_2024-4-26_9-50-47.png

    The "Build Texture Array Slices From Objects To Be Combined" populates the "Combined Material" field automatically if it is not assigned. You can assign it manually.
     
  2. DevCriel

    DevCriel

    Joined:
    Mar 11, 2021
    Posts:
    5
    Thanks for the quick answer. I'm sure that I set both of them which you marked with red circles. But still I got the error I said earlier.
    but to be honest, I couldn't understand about what that baker result Scriptable object do in this process. Because I just needed to create it and that was all. I could manged to baking textures.

    Here is what I did.

    1. Set Result type to Atlas(not TextureArray) and press the button "Build Source To Combined Mapping..."

    2. Now I got multiple materials. But I just ignore them, And changed to type TextureArray. Now I hit the button "build TextureArray slices from..."
    Then I see some similar information from the first step which is submesh. But this time it was wrapped in slice.

    3. And clicked "bake materials..." button
    from the below.
    4. In two hours, I could get texture arrays.
    Now only thing i had to do was, setting materials(shader, properties, etc)

    But the problem is, without the step 1, I get the error I mentioned earlier sometimes. Especially, after I deleted all of Baker Result SO, TextureArrays and combined materials by manual.
    I'm not well aware of whole process of mesh baker but I spent lots of times on it, eventually I figure out this.

    I have another question but I cannot access to computer at this moment, so I'll paste another post in a few days with some pic.

    PS. I can't 100% sure that I never made any undesirable result, but I could manage to deal with those 2 hours into 20min with editor batching without remarkable differences. So I hope that this can be included in the next update.
     
    Last edited: Apr 26, 2024
  3. Phong

    Phong

    Joined:
    Apr 12, 2010
    Posts:
    2,096
    I just checked and you don't need to do step 1. You can jump straight to step 2.

    Mesh Baker needs the combined material scriptable object because it stores information about the atlases (which source materials map to which rectangles in the atlases/textureArraySlices). This information is needed by the Mesh Baker when the meshes get baked so that the UVs can be adjusted correctly.
     
  4. DevCriel

    DevCriel

    Joined:
    Mar 11, 2021
    Posts:
    5
    I've been playing around with your advice, And I could solve the problem. I guess it went something wrong because of step one. I reset the Texture Baker component and followed the instructions that you provided, It worked magically. No needed first step, and everything looked fine. what I wanted to ask you also solved in this process. I couldn't figure out what was the exact cause, but I already spent too much time on it. so I'll just pass this time.

    Thank you for your help.


    Edit: I had to use MeshBakerTexturePaker_Fast_V2 to solve the wrong UV mapping. if you are having trouble with UV mapping and using URP or HDRP, check out this option.
     
    Last edited: May 2, 2024
    Phong likes this.
  5. rhodnius

    rhodnius

    Joined:
    Apr 11, 2012
    Posts:
    1,338
    Hi @Phong have been searching on this forum to see if someone else already asked something similar, but have not found any questions related to it, so here it goes:

    We are working with MeshBaker (on Unity 2022.1.24f1 with URP) to bake a scene full of cubes, this was done first at runtime but the scene loading time was pretty high, so we decided to take our small baker system (that uses Mesh Baker behind the scenes) that just creates the amount of needed MeshBakers based on cube material and amount of cubes per combined mesh, so this all is working fine at runtime, but when this is done in editor time and we try to remove any of the prebaked cubes at runtime we get an error


    Code (CSharp):
    1. Trying to add and delete to a combined mesh that was previously baked but the mesh vertex count is different. 36000 != 0
    2. UnityEngine.Debug:LogError (object)
    3. DigitalOpus.MB.Core.MB3_MeshCombinerSingle:_AddToCombined (UnityEngine.GameObject[],int[],bool) (at Assets/MeshBaker/scripts/core/MB3_MeshCombinerSingle.cs:659)
    4. DigitalOpus.MB.Core.MB3_MeshCombinerSingle:AddDeleteGameObjectsByID (UnityEngine.GameObject[],int[],bool) (at Assets/MeshBaker/scripts/core/MB3_MeshCombinerSingle.cs:1436)
    5. DigitalOpus.MB.Core.MB3_MeshCombinerSingle:AddDeleteGameObjects (UnityEngine.GameObject[],UnityEngine.GameObject[],bool) (at Assets/MeshBaker/scripts/core/MB3_MeshCombinerSingle.cs:1360)
    6. MB3_MeshBaker:AddDeleteGameObjects (UnityEngine.GameObject[],UnityEngine.GameObject[],bool) (at Assets/MeshBaker/scripts/MB3_MeshBaker.cs:115)

    So it seems like the bufferDataFromPrevious is not serialized even if the Clear Bufer Data After Bake is disabled on the inspector.

    To add a bit more info we are doing the bake at editor time by scripts using the AddDeleteGameObjects method from the Mesh Baker class, so maybe the Editor class of Mesh baker does something else that we are missing? Appreciate any help!
     
    Last edited: May 2, 2024
  6. Phong

    Phong

    Joined:
    Apr 12, 2010
    Posts:
    2,096
    I was able to reproduce the issue. It is a bug. I was able to fix the issue by adding [SerializeField] just before the "bufferDataFromPrevious" in MB3_MeshCombinerSingle.cs line 199:

    Code (CSharp):
    1.         ...
    2.         [SerializeField]
    3.         internal MBBlendShape[] blendShapes = new MBBlendShape[0];
    4.  
    5.         [SerializeField]
    6.         internal BufferDataFromPreviousBake bufferDataFromPrevious;
    7.  
    8.         /// <summary>
    9.         /// Needed for mesh disposal. We want to dispose of meshes that were created at runtime in a scene.
    10.         /// However it is very important that we NOT dispose of meshes that were baked in the editor and saved in the scene or as assets in the project.
    11.         /// </summary>
    12.         [SerializeField]
    13.         MeshCreationConditions _meshBirth = MeshCreationConditions.NoMesh;
    14.         ...
    15.  
    Note that even with this fix you will likely run into problems with baking in the editor and deleting at runtime. This is because Mesh Baker serializes the InstanceID of the objects that it bakes. It uses this instanceID to identify objects to delete. It does this so that it is possible to remove objects that have been destroyed from the bake. Unfortunately Unity sometimes changes the instance ID when a scene is saved and re-loaded. When this happens the objects cannot be deleted and re-created correctly.
     
  7. rhodnius

    rhodnius

    Joined:
    Apr 11, 2012
    Posts:
    1,338

    Yup i added the SerializeField attribute to fix the first issue, and also for the second one i tried using the GameObject reference you have on the combiner and getting the instance ID from there, but I still have issues (no errors at all) but the combined mesh when I try to remove any of the cubes gets like malformed, any idea what could be this other issue?

    So on line 258 of MeshCombineSingle I did this:


    if (mbDynamicObjectsInCombinedMesh.gameObject.GetInstanceID() == instanceID)

    Instead of:
    if (mbDynamicObjectsInCombinedMesh.instanceID == instanceID)

    Edit: Doing this change and also using the simple mesh API works just fine to prebake on editor and delete/add objects at runtime just fine, so i presume the issue comes from the New API not having all the data of the vertices, etc serialized and available at runtime.
     
    Last edited: May 3, 2024
    Phong likes this.
  8. Phong

    Phong

    Joined:
    Apr 12, 2010
    Posts:
    2,096
    I will need to take a look at what is happening with the new api, not sure what the issue is.
     
  9. HammadRiaz

    HammadRiaz

    Joined:
    Aug 23, 2020
    Posts:
    3
    Hello, I Recently bought Mesh Baker to deal with building optimization but as you can see on the right side (the one i Baked using Mesh baker) is clearly not giving the expected results, Kindly Help deal with this, or guide me to fix this
    Thanks

    upload_2024-5-14_17-8-25.png
     
  10. Phong

    Phong

    Joined:
    Apr 12, 2010
    Posts:
    2,096
    I would suggest watching these videos on Multiple Materials and Tiling.




    There is a lot of tiling on the building. You will need to handle this by either:
    • Using the consider UVs feature. (best if there is not a lot of tiling)
    • Using the multiple materials to map materials that tile a lot to their own submesh. (best for materials with a lot of tiling)
    Also materials that are different like window glass usually are best on their own submesh with their own combined material.
     
  11. Hyperion90

    Hyperion90

    Joined:
    Dec 12, 2014
    Posts:
    14
    Hello, I am facing the exact same scenario you described in the following video:
    . I am currently evaluating the possibility of purchasing this asset in order to replicate the solution you've presented in the video.

    I am also using Blender. Is the latest version of Mesh Baker requiring the same workflow in Blender so that the same result could be achieved? I tried looking through the newer tutorials but didn't see a detailed workflow representation for this specific scenario (did I miss one?)
     
  12. Phong

    Phong

    Joined:
    Apr 12, 2010
    Posts:
    2,096
    Hello,

    Yes the latest version of Blender will require the same or very similar workflow. The important concepts are:
    • All the different body part meshes must be bound to the same armature.
    • There are "seams" which are rings of vertices that are common to the different body part meshes. The seam-vertices on the different meshes must align. The seams will be the boundaries between the different body parts.
    • There is a special "seam mesh" that has the seam-rings marked. The seam mesh triangles should pass through all the seams. For example: the seam-mesh should include bicep vertices and chest vertices on each side of the shoulder seam. The seam-mesh is used to provide the normal, tangent and blend-weights for the seam-vertices so that there are no hard-edges or cracks at the seams when the body parts are joined.
    This workflow still works with the latest version of Mesh Baker. In includes an example scene illustrating this workflow.
     
  13. HammadRiaz

    HammadRiaz

    Joined:
    Aug 23, 2020
    Posts:
    3
    Hello.
    Im Facing an issue where I cant create a Game Build with the building that i Baked with Mesh Baker, While when i Build it with previous Not baked Buildings, There isnt any issue,
    What happens is that Unity Crashes While Creating a Game Build
    What i did
    - I baked buildings different meshes into a prefab
    - Then i Baked the texture into a single atlas for each building
    - Means before if i had a building with 4 Meshes having multiple material each
    Now i have one mesh for Building having one Atlas for that building
    - So i have about 20+ buildings with 20+ Atlases

    Kindly guide if i did anything wrong
     
  14. OfficialDeVel

    OfficialDeVel

    Joined:
    Oct 11, 2020
    Posts:
    11
    hello, im pretty new to mesh baker and huh first question, what happened here?
    Materials ale wrongly assigned after baking
     

    Attached Files:

    • mb.png
      mb.png
      File size:
      2.1 MB
      Views:
      5
  15. Phong

    Phong

    Joined:
    Apr 12, 2010
    Posts:
    2,096
    How big is the combined mesh (how many vertices)? Unity used to have a limit of 64k verts per mesh. Now that limit is 4 billion vertices. A mesh this big requires approximately. 200 Gigs of ram to hold the mesh in memory. My guess is that the combined mesh is very large and unity is running out of memory creating the mesh used in the build. You may need to split the combined mesh into several, smaller meshes.

    One thing to check is the Editor log after a crash:

    https://docs.unity3d.com/Manual/LogFiles.html

    What are the last few error messages of the log file? Often there is a clue as to the cause of the crash.
     
  16. Phong

    Phong

    Joined:
    Apr 12, 2010
    Posts:
    2,096
    Most likely your meshes use a texture tiling technique where UVs extend outside the range 0..1. This is very common.

    I would suggest watching these tutorial videos about tiling and using multiple materials. They explain what is happening and demonstrate several solutions:





    Please check back there if this does not solve your issue.
     
  17. ThatRaincoat

    ThatRaincoat

    Joined:
    Jul 12, 2017
    Posts:
    30
    I am working on a custom shader that needs to use the lightmap index of the mesh.
    I want to be able to encode the value of the lightmap index into the UVs when combining so that I know what vertices were associated each lightmap index.

    How would you go about writing a MeshAssignCustomizer that would be able to achieve this?
     
  18. Phong

    Phong

    Joined:
    Apr 12, 2010
    Posts:
    2,096
    Hello, I think what you want do do is this:
    • Renderer A uses lightmap 1
    • Renderer B uses lightmap 2
    • Renderer C uses lightmap 3
    You want to add a coordinate to the UVs so that the UVs array in the mesh looks like this:

    // uvs for Renderer A
    uvx, uvy, lighmapIndex
    uvx, uvy, lightmapIndex
    ....

    // uvs for Renderer B
    uvx, uvy, lighmapIndex
    uvx, uvy, lightmapIndex
    ....

    Is this correct?

    You might be able to write a MeshAssignCustomizer, but it would be tricky and limited because:
    • MeshAssignCustomizer's don't have easy access to the source game objects
    • MeshAssignCustomizer's only work with TextureArrays. This is a big limitation unless you are using texture arrays.
    Instead I would suggest you write a MonoBehaviour script that you add to the MB_MeshBaker game object. You would first bake the the combined mesh using Mesh Baker then you could run this script using it's ContextMenu.

    *** Note that this script acesses MB3_MeshCombinerSingle.mbDynamicObjectsInCombinedMesh which is private. You will need to edit the file MB3_MeshCombinerSingle.cs line 143 to make this public

    Code (CSharp):
    1.  
    2.         ...
    3.         [SerializeField]
    4.         public List<MB_DynamicGameObject> mbDynamicObjectsInCombinedMesh = new List<MB_DynamicGameObject>();
    5.         Dictionary<GameObject, MB_DynamicGameObject> _instance2combined_map = new Dictionary<GameObject, MB_DynamicGameObject>();
    6.         ...
    7.  
    New file: LightMapIndexAdder.cs

    Code (CSharp):
    1. using UnityEngine;
    2. using DigitalOpus.MB.Core;
    3.  
    4. public class LightMapIndexAdder : MonoBehaviour
    5. {
    6.     [ContextMenu("Add Lightmap Index To UVs")]
    7.     public void AddLightmapIndex()
    8.     {
    9.         MB3_MeshBaker mb = GetComponent<MB3_MeshBaker>();
    10.         Debug.Assert(!mb.clearBuffersAfterBake, "Must have baked with 'clear buffers after bake' disabled.");
    11.  
    12.         MB3_MeshCombinerSingle mc = (MB3_MeshCombinerSingle) mb.meshCombiner;
    13.         Mesh myMesh = mc.GetMesh();
    14.         Vector2[] oldUVs = myMesh.uv;
    15.         Vector3[] newUVs = new Vector3[myMesh.vertexCount];
    16.  
    17.         // Vist the source objects and get the lightmap index
    18.         for (int objIdx = 0; objIdx < mc.mbDynamicObjectsInCombinedMesh.Count; objIdx++)
    19.         {
    20.             MB3_MeshCombinerSingle.MB_DynamicGameObject bakedObj = mc.mbDynamicObjectsInCombinedMesh[objIdx];
    21.             GameObject sourceObject = bakedObj.gameObject;
    22.             MeshRenderer mr = sourceObject.GetComponent<MeshRenderer>();
    23.             int lightmapIndex = mr.lightmapIndex;
    24.             int uvsStartIndex = bakedObj.vertIdx;
    25.             int numUVsInThisBlock = bakedObj.numVerts;
    26.  
    27.             // Fill up the newUVs array with uvs + lightmapIndex.
    28.             for (int uvIdx = uvsStartIndex; uvIdx < numUVsInThisBlock; uvIdx++)
    29.             {
    30.                 Vector3 oldUV = oldUVs[uvIdx];
    31.                 Vector3 newUV = new Vector3(oldUV.x, oldUV.y, lightmapIndex);
    32.                 newUVs[uvIdx] = newUV;
    33.             }
    34.         }
    35.  
    36.         myMesh.SetUVs(0, newUVs);
    37.  
    38.         // If the mesh is saved in the scene then you should be done.
    39.         // If the mesh is an asset in the project database. Then you probably need to
    40.         // Save it using the AssetDatabase
    41.     }
    42. }
     
  19. ThatRaincoat

    ThatRaincoat

    Joined:
    Jul 12, 2017
    Posts:
    30
    Thanks for the response! This is extremely helpful!

    How would this work with a Multi-Mesh Baker?
     
  20. ThatRaincoat

    ThatRaincoat

    Joined:
    Jul 12, 2017
    Posts:
    30
    For further context what we are trying to do it make it so we can have multiple lightmaps on the same combined mesh.

    We are using the texture baker to bake all of our textures into texture arrays, and then are using mesh baker groupers to combine the meshes.

    We do light mapping before combining so we preserve the lightmap UVs.

    We had been then grouping the combines via lightmap index in the grouper.
    However this yields more meshes than if everything was in one lightmap group.

    So our current goal is that we put out lightmaps into a new texture array. Then modify our shaders to use this lightmap texture array instead of Unity's normal lightmapping.

    So in this way we could have everything combined into one mesh that uses multiple lightmaps, allowing us to reduce the number of meshes and maintain high quality baked lighting.

    The idea was if we could encode the lightmap index of the source objects into the uvs, our shader could use that as the texture index.

    So the UV0s would look like:
    uvx, uvy, textureArraySlice, lighmapIndex
     
  21. Phong

    Phong

    Joined:
    Apr 12, 2010
    Posts:
    2,096
    Interesting idea. If you are using TextureArrays you can probably do this with the MeshAssignCustomizer. Unfortunately I am about to finish for the weekend so I can't look into that right now. However you should be able to use the script we were working on yesterday.

    Re: The MultiMeshBaker, it is basically a collection of MeshCombinerSingle's. You would have an outer loop where you loop over the MeshCombinerSingle'sin the MultiMeshBaker like this:

    Code (CSharp):
    1.        
    2.         MB3_MultiMeshBaker mb = GetComponent<MB3_MultiMeshBaker>();
    3.         MB3_MultiMeshCombiner mmc = (MB3_MultiMeshCombiner) mb.meshCombiner;
    4.  
    5.         // Visit each MeshCombinerSingle in the MultiMeshCombiner
    6.         for (int i = 0; i < mmc.meshCombiners.Count; i++)
    7.         {
    8.             MB3_MeshCombinerSingle mc = mmc.meshCombiners[i].combinedMesh;
    9.  
    10.             ...
    11.             // The previous code can go here now that you have the MeshCombinerSingle
    12.             ...
    13.         }
     
  22. gmolk

    gmolk

    Joined:
    May 12, 2023
    Posts:
    1
    Hi! Thanks for making this asset, just purchased. It's awesome. I'm trying to test it out on a free character from the Unity Asset Store and running into an error when trying to Bake. I've gone through the tutorial videos (thanks for those btw) but I'm probably missing something obvious. Or it could be something to do with how the asset was built by the creators. The asset I'm trying to use is here.

    The steps I'm taking:
    1. Place avatar in a blank setup scene.
    2. Add a "Texture Baker and Mesh Baker" to the scene.
    3. Drag the avatar on the TextureBaker to populate the renderer array.
    4. Create Empty Assets For Combined Materials.
    5. Drop the Max Atlas Size to 2048 for Android.
    6. Enable Resize Power Of Two Textures.
    7. Bake Materials Into Combined Material (this step succeeds).
    8. On the MeshBaker, switch the Renderer dropdown to Skinned Mesh Renderer.
    9. Click Bake.
    I'm getting:

    Source mesh r had a 'null' bone. Bones must not be null: Starter_Belt (UnityEngine.SkinnedMeshRenderer)


    Full error:

    Code (CSharp):
    1. Source mesh r had a 'null' bone. Bones must not be null: Starter_Belt (UnityEngine.SkinnedMeshRenderer)
    2. UnityEngine.Debug:LogError (object)
    3. DigitalOpus.MB.Core.MB3_MeshCombinerSingle/MB_MeshCombinerSingle_BoneProcessorNewAPI:GetCachedSMRMeshData (DigitalOpus.MB.Core.MB3_MeshCombinerSingle/MB_DynamicGameObject) (at Assets/Peloton/Nomad/Plugins/MeshBaker/scripts/core/MB_MeshCombinerSingle_BoneProcessorNewAPI.cs:109)
    4. DigitalOpus.MB.Core.MB3_MeshCombinerSingle:__AddToCombined (UnityEngine.GameObject[],int[],bool,int,System.Collections.Specialized.OrderedDictionary,DigitalOpus.MB.Core.MB3_MeshCombinerSingle/IVertexAndTriangleProcessor&,DigitalOpus.MB.Core.MB_MeshVertexChannelFlags,System.Diagnostics.Stopwatch) (at Assets/Peloton/Nomad/Plugins/MeshBaker/scripts/core/MB3_MeshCombinerSingle.cs:822)
    5. DigitalOpus.MB.Core.MB3_MeshCombinerSingle:_AddToCombined (UnityEngine.GameObject[],int[],bool) (at Assets/Peloton/Nomad/Plugins/MeshBaker/scripts/core/MB3_MeshCombinerSingle.cs:608)
    6. DigitalOpus.MB.Core.MB3_MeshCombinerSingle:AddDeleteGameObjectsByID (UnityEngine.GameObject[],int[],bool) (at Assets/Peloton/Nomad/Plugins/MeshBaker/scripts/core/MB3_MeshCombinerSingle.cs:1222)
    7. DigitalOpus.MB.Core.MB3_MeshCombinerSingle:AddDeleteGameObjects (UnityEngine.GameObject[],UnityEngine.GameObject[],bool) (at Assets/Peloton/Nomad/Plugins/MeshBaker/scripts/core/MB3_MeshCombinerSingle.cs:1162)
    8. MB3_MeshBaker:AddDeleteGameObjects (UnityEngine.GameObject[],UnityEngine.GameObject[],bool) (at Assets/Peloton/Nomad/Plugins/MeshBaker/scripts/MB3_MeshBaker.cs:114)
    9. MB3_MeshBakerEditorFunctions:_BakeIntoCombinedSceneObject (MB3_MeshBakerCommon,bool,UnityEditor.SerializedObject&) (at Assets/Peloton/Nomad/Plugins/MeshBaker/Editor/core/MB3_MeshBakerEditorFunctions.cs:136)
    10. MB3_MeshBakerEditorFunctions:BakeIntoCombined (MB3_MeshBakerCommon,bool&,UnityEditor.SerializedObject&) (at Assets/Peloton/Nomad/Plugins/MeshBaker/Editor/core/MB3_MeshBakerEditorFunctions.cs:111)
    11. DigitalOpus.MB.MBEditor.MB3_MeshBakerEditorInternal:bake (MB3_MeshBakerCommon,UnityEditor.SerializedObject&) (at Assets/Peloton/Nomad/Plugins/MeshBaker/Editor/MB3_MeshBakerEditorInternal.cs:517)
    12. DigitalOpus.MB.MBEditor.MB3_MeshBakerEditorInternal:bake (MB3_MeshBakerCommon) (at Assets/Peloton/Nomad/Plugins/MeshBaker/Editor/MB3_MeshBakerEditorInternal.cs:478)
    13. DigitalOpus.MB.MBEditor.MB3_MeshBakerEditorInternal:DrawGUI (UnityEditor.SerializedObject,MB3_MeshBakerCommon,UnityEngine.Object[],System.Type) (at Assets/Peloton/Nomad/Plugins/MeshBaker/Editor/MB3_MeshBakerEditorInternal.cs:443)
    14. DigitalOpus.MB.MBEditor.MB3_MeshBakerEditorInternal:OnInspectorGUI (UnityEditor.SerializedObject,MB3_MeshBakerCommon,UnityEngine.Object[],System.Type) (at Assets/Peloton/Nomad/Plugins/MeshBaker/Editor/MB3_MeshBakerEditorInternal.cs:143)
    15. DigitalOpus.MB.MBEditor.MB3_MeshBakerEditor:OnInspectorGUI () (at Assets/Peloton/Nomad/Plugins/MeshBaker/Editor/MB3_MeshBakerEditor.cs:83)
    16. UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) (at /Users/bokken/build/output/unity/unity/Modules/IMGUI/GUIUtility.cs:190)
    17.  
    Any thoughts on what could be causing that? Thank you so much!
     
  23. Phong

    Phong

    Joined:
    Apr 12, 2010
    Posts:
    2,096
    Most likely this prefab was created from an imported skinned mesh model prefab and some of the transforms (bones) in the skeleton have been deleted from the prefab. Were there extra bones for hair, eyes, lips or something? These might have been deleted. These bones are probably referenced by bonewieghts in the mesh and the mesh won't deform properly without them. Also Mesh Baker doesn't know which bone it should assign those weights to.