Website powered by

Optimizing Geometry

General / 13 November 2019

When thinking about optimizing geometry, it really helps me to focus on vertices. 

A general rule of thumb that I like to use is this: every vertex should have a function. If someone points at a random vertex and you can´t tell exactly why that vertex is there and its functions, you should delete it. 

So, what are those functions? Well, I made a list and here it is. Let me know if you find any additional reason why a vertex should be there:


It affects the silhouette.

Thanks to normal mapping, we can add a lot of detail to the inner parts of a model, making flat surfaces look more detailed than they already are. However, we can´t change the silhouette of the model using normal maps. That is the function of vertices, and probably the most important. 

A basic rule of thumb is: if a part of the model you are working on affects the silhouette, you should approach it with vertices in mind, and if it doesn´t, you can fake it using normal maps. 

It is needed for animation.

If your model deforms and bends, you probably need some extra geometry to ensure that no volume is lost during those transformations, and that you have enough vertices in your model to ensure a good silhouette when the model is bended. 

It helps me keep the symmetry of the model 

Symmetry is way more important that it may seem at first. It helps us optimize the UVs by mirroring the model and using the same textures on both sides, it will help you when editing the model later if its needed, and will help rigging in some cases. In general, the advantages of having a fully symmetric model with a middle loop outweighs the cost of having some extra vertices, even if they dont have any other function. 

Its helping the shading of my model

Like I said during my previous tutorials, hard edges in our lowpoly can give us bad normal maps, and soft edges may distort our lowpoly normals too much, and one solution is to add bevels to the model in order to improve the shading. 

This depends a lot on your game engine and your normal map workflow. For instance, Source engine gave me a lot of trouble with long triangles so I had to split them with extra vertices as they weren´t shading properly. This is specially true with triangles that are not part of a planar surface.

Someone specifically requested it

Sometimes, we need extra vertices for other reasons at very specific points. For instance, I was asked once to add vertices at some points of the model so that we had a vertex we could use to snap another model to the vertex. Another time, we made a particle system that emits particles from the vertices of the model so we had to add extra vertices. Sometimes we use vertex paint and we need more evenly distributed vertices so it looks better. 


When modeling, I also like to spend a moment to consider if a particular detail should be added to the model, or the texture. In general, you should always consider that you can only change the silhouette of your model using vertices (not considering material tricks and opacity effects), and all inside detail (details that don´t affect the silhouette) can be represented using this texture. keeping this in mind before even starting to model can really help you optimize your models and textures. 

Extra tip: all video game models are triangulated when imported. Sometimes the automatic triangulation can be unnappropiate, so I like to triangulate at least the parts of the model that may give me some trouble: mainly non planar polygons and pentagons (and other polygons with >5 sides)