In our last post, we showed you how to combine materials into a single texture. And, as part of our 3D model optimization guide, we’ll show you how to –literally- halve your poly count with… (drum-roll, please!)…Symmetric-runtime-mirroring (“What’s that?” you say? Well, read-on).
SRM (Symmetric-runtime-mirroring) is the art of “cutting” your model in half and mirroring the rest in the render. If you have half-a-brain, you should’ve had an “ah! Why didn’t I think of that!” moment (nothing? Give it a few seconds). If you’re still confused; all we’re doing is creating an “instance” of the same mesh (‘cus either way, both sides are the same) from within the game-engine. This massively reduces the number of polygons and lightens the load on your poor graphic card!
Excited? (No? read this to learn the difference between instances and objects) we’ll here’s how you can try it out yourself!
First, you’ll need a symmetric model (trees, houses etc. are not symmetric) like a car, for example. Can’t find one but you still wanna learn? Get this BMW M6 and follow along.
We’ll be using Blender and Unity for this demo (but feel free to use your own workflow) ‘cus both of ‘em are free and easy to use
Open your model in Blender (or 3ds MAX or Maya or Cinema 4D or anything you fancy!)
Notice how many triangles there are. If you do everything correctly, that number should halve at the end of this tut.
Now categories your model’s elements based on symmetricity (is that a word?). So on this model; the badges (BMW, M6) are NOT symmetric. Create a new collection and dump those elements into that collection.
Then hide that collection (untick the box next to it in the hierarchy). Now the real fun begins!
Combine everything into one giant mesh (Command + J) and set its origin to geometry (Object > Set Origin > Origin to Geometry > Bounds Center).
Blender 2.81 users, switch to single material mode if your model starts looking funny.
Go into edit mode (Tab) and cut the mesh symmetrically.
You can do this any way you want (BoxCutter, custom script, Bool etc.), but since this needs to be universally applicable, we’ll be using good ‘ol select ‘n delete!
Simply go into wireframe mode (Z)
Select the half you’d like to delete.
And delete only the faces (X > Faces).
Now inspect your model and see if there are any anomalies (broken mesh, lone edges etc.)
If you’re happy with the result (you found nothing wrong with it), give yourself a pat on the back, and look at the triangle count. Amazed?
With thoughts of polygon greatness (I know! Bad joke), separate the mesh by material, if you want to (Edit Mode > P > Material).
Now for part two; exporting and rendering: unhide that collection of unsymmetrical objects and export your model. Remember NOT to change its origin!
Import it into Unity
Select the symmetrical “half”, duplicate it (Command + D) and give a negative value on the X scale.
Viola! The missing half, at half the triangles!
Well, that wraps up this post. As always, all your doubts, questions, and suggestions are welcome in the comment box below.
⦁ Use orthographic view when selecting the “half”.
⦁ View the model from either the front or the top when selecting
⦁ You use this technique on individual meshes (not the whole model)
⦁ You might wanna consider creating symmetrical models in the future (or, if you don’t model yourself, tell your modeler to be symmetric!)
⦁ NEVER join the two halves in Blender using Command + J. it’ll invert all the Normals of your model!