I doubt anyone will be able to help me as I have a feeling that the way I'm doing things might not be the most common way, it's just a solution that I found to my problem but I'll go ahead and describe my issue.

I have a scene that has a lot of objects, however many of them are copies. I'm trying to export everything in my scene to Unity so I figured that I first need to create a texture atlas to reduce the draw call by only having 1 material.

What I did was make a copy of each unique object and dragged it aside. Once I had one of each I joined all of these objects that I dragged away from my scene. I created a new UV map, unwrapped everything and then baked all of my textures on a new image. I then deleted all the materials and only kept the new UV, created a new material and used my atlas texture as the texture image. So far so good.

I then grouped up all my duplicates from my scene using ctrl+g so it's easier to select them. I then went to my joined objects and separated each by selection. Then I selected the group of duplicates from my scene and the object that I just separated which was now using the atlas and I linked my materials and uv map with the others that were the same. I did the same for every single object in my scene so that all of them were now using an atlas texture. All the objects in my scene basically copied the UV map and the material from the objects that were dragged aside and joined to create the atlas map.

Once I did all of this, I then took all of the objects from my scene and pasted them into a brand new blender document. I joined them and then I moved forward to import the object into Unity. In blender it only shows me as having 1 UV, 1 Material and 1 texture for all of these joined objects. In unity however the object comes with around 250 separate materials, one for each object that I joined. How can I remove all of these materials and have unity only use my 1 material with the texture atlas?

Thanks!

  • What is the format used to export to unity. Blender Stack favors question bound to blender only. I am not too sure if the moderator will look kindly to questions that also involves other software package like unity. – hawkenfox Jan 8 '16 at 6:48
  • just a blender file... you can import those – stefanplc Jan 9 '16 at 1:32
  • This appears to be a question about Unity rather than Blender – Xtremity May 7 '16 at 21:44

I'm not quite sure if this will work but it's worth a shot...

In Unity, delete all the materials except the one you want to use with the texture atlas. Make sure the texture for that material is actually your texture atlas. You will then notice that the mesh render's on most of the objects in Unity will look like the following:

enter image description here

All you should have to do is drag the same material that your texture atlas is on, onto that slot. Make sure to do that with all of your objects selected so you can do that all at once.

  • Here's what I did and maybe you can tell me if I'm correct or not. I started filling in some of the materials within unity and whenever I would add the proper atlas texture to one, several other would also copy it so in the end I only needed to apply my texture atlas in unity to 10-15 objects. I then tested it out on an older tablet to see what my FPS is and the max FPS that tablet can handle is 60, with my scene it only dropped to 50. So what I'm thinking here is that the draw call is still low, even though there are multiple materials, because all point to the same atlas texture file. – stefanplc Jan 9 '16 at 1:35

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.