3D Modeling Artifacts - Flow Check Reflection Map - Zebra Stripe Diagnostic

Published: 1 March 2017

By Ali Ismail


This tutorial will be about 3D modeling artifacts in general, I did place it under the automotive category because most people interested in this level of smoothness and precision will likely need it for modeling cars,

I have ventured into this subject through the simple wish of making a proper car 3D model and render, the desire to fix a reflection artifact had led me into a somewhat deep rabbit hole, car surfaces being highly reflective; require high precision 3D modeling, and making sure the surfaces are as smooth as possible.

We will start with basic simple artifacts then move to a more advanced level, and use a flow check map (zebra stripe diagnostic) to see if your surface will reflect properly.

We have created this video over here which sums up most of the the material below:


What is a 3D Modeling Artifact

It's nothing more than a glorified bump or dent! it differs only in degree and causes.

Before going into topology and subdivision, let's see simple examples:

This here is a smooth surface, all the vertices line-up perfectly

This here is a smooth surface, all the vertices line-up perfectly

Let's make some artifacts.

By moving few vertices randomly, the surface becomes flawed.

By moving few vertices randomly, the surface becomes flawed.

I quite understand that this is very obvious, but I just wanted to point out that all artifacts are basically nothing more than few vertices out of place.

But what happens if you have tris? tris are EVIL of course, aren't they? well, depends. let's see here:

Triangulated mesh

Without adding subdivision we can’t see much of a difference between a mesh made up of tris and quads, tris in themselves are not bad. Every quad is made up of 2 triangles and everything is eventually rendered out using tris even if you can’t see them, BUT you need to be careful when subdividing poles and triangles.


When you start to subdivide, things change drastically, the good news is: subdivision decreases artifacts slightly due to averaging everything out. The bad one: you can't use tris or poles freely.

Subdivision when everything is quad.

Subdivision when everything is quad.

Subdivision of quads could have the affect of hiding some artifacts due to the averaging effect.

But subdividing triangles and N-Gons is a different matter and you need to be more careful.

Subdividing triangulated Meshes.

Subdividing triangulated Meshes.

Unless experienced, you should not judge a mesh by looking at its wireframe; only how it renders and if it serves its intended purpose.

Generally speaking though, subdividing triangles causes problems if it's on a curved surface.

To better see what I mean you can see these two videos:

Subdivision Surfaces: Artifacts by Greg Petchkovsky and Subdivision Surfaces: Overview by Glen Moyes.

But both these videos and in fact many tutorials and articles on the subject of topology never go to the simple reason why triangles cause this.

If you really want to take your understanding of subdivision meshes to the next level and understand how things go under the hood, I can recommend watching these 2 lectures, yes they are not going to exactly help you 3D modeling, but if you spend a large part of your life moving those vertices and edges, wouldn't it help to know how subdivision works?

Subdivision Surfaces Part 1

Subdivision Surfaces Part 2

This lecturer by the way, really simplifies the whole thing like no other I've seen talk on the subject. You can also look up the equation for Catmull-Clark subdivision on Wikipedia.

To better understand why triangles or poles can produce artifacts, you only need to think of weight averaging.

A tri added on a curved subdivided surface.

Adding a single tri on a curved surface and subdividing it causes disruptions.

But why? many 3D artists understand this intuitively but have a hard time pin pointing it.

Triangulated Cylinder Cap
NGons Cylinder Cap

If you create new face points, edge points, and adjust the old vertices according to the formula (F+2R+(n-3)P)/n which you can look up in wikipedia and see what all the variables refer to; you can perfectly predict how and why subdivision works the way it does.

But to simplify it for you, it's all about weights and averages. And it's very similar to concepts like center of mass, when you add tris or N-gons or have poles, you change the "center of mass" so to speak, and things can protrude or distort the curvature.

Each new point in a subdivision surface depends on a specific average of the edge points and face center, when it's a quad topology; everything will be in order. But when you add another vertex, it will take the averages of extra edges and calculate it's new position differently than the others.

In short, be careful when you have tris or NGons and are going to subdivide the mesh, but don't shy away from using them as well if they serve the purpose, to learn more about topology you can view another article I have: Polygon modeling Practical Basics

Mesh Density

While technically, this does not exactly fall under 3D modeling artifacts, it serves the same purpose of refining your renders.

Mesh density means how many polygons you have in a volume. When you 3D model anything in polygons, it's best if you keep in mind the resolution you are rendering in, and how close the camera will be to an object and plan your 3D model accordingly.

Working with different levels of 3D artists, I always notice a tendency to add something like a million polygon at an obscure small object, while trying to save up polygons for the main hero object.

To better demonstrate it, this is what I mean:

Bad Mesh Density.

Bad Mesh Density.

Good Mesh Density

Good Mesh Density

These are all just pointers on what you would ideally want, please use whatever you feel more suitable for the project's need.

Flow Check

We have finally arrived to the Flow Check map section! Due to this tutorial and this youtube video I have had a lot of interest in the reflection flow check method.

I basically burrowed this technique from NURBS modeling continuity check.

Zebra reflections

When you model things in NURBS, they are created in patches; to make sure these patches connect with each other continuously, there are some tools which measure it and tools to visualize it. To have a better idea on NURBS you can check this: Introduction Into NURBS

Visual surface analysis tools come in very handy; using a reflection map viewed directly in the viewport can really make it easy to see how your surface is behaving.

I resorted to these tools and to better 3D modeling practices after I realized that my previous models where causing reflection artifacts like these:

Reflection Artifacts

You can easily spot standard 3D modeling artifacts by using a clay material and viewing things from different angles. For the most part this should be enough. 

many objects really do not need to be very accurate or perfectly smooth, thus would not need the flow check reflection map.

But, if you are modeling cars, or highly reflective surfaces, it might be a good idea to at least check your 3D models with this:

Flow Check Reflection Map

Now this map which you can download here HDRI / DDS Cubemap  is something I quickly made in HDR light Studio, it's colorful instead of the standard white and black so that I could better recognize the individual bands.

This feature to view reflection and environment maps in the viewport is available in all major 3D Packages, how you do it might change with each version but basically a quick web search of "displaying reflections in viewport" for your specific software can get you the way to do it.

when you use the flow check reflection map I provided you should see something like that"

Looks cool but what can I do with it?

This can show you how your mesh will reflect in an environment, the multiple bands help you test your surface at every angle.

For example, a desert scene HDRI with a clear skyline, can also help you judge the curvature of your model, but only around the skyline edge.

HDRI Check

I am sure someone out there might be still saying at this point, so what is this whole flow check thing useful for?

this is what it's good for:

Deceptive Surface
Sky refelction

The surface above, might appear normal, it doesn't show very obvious artifacts. But in fact, it's slightly bumpy! you might think this is not a problem, in most cases it actually isn't!

Sometimes even; bumpiness could help you achieve better realism if the actual surface in reality is bumpy but NOT ALWAYS!

If you are modeling something like a car, a yacht or a high-end product that needs high quality mirror like reflections, it really helps to at least preview how it will look before you finalize it and start rendering.

This is how the previous mesh looks like when tested using the flow check HDRI:

You can see how wobbly the reflections are.

You can see how wobbly the reflections are.

Using a more carefully refined mesh, you can see we get cleaner reflections that we expect to render nicer renders in a studio environment.

A cleaner reflection when 3D modeling a better mesh.

A cleaner reflection when 3D modeling a better mesh.

With the current technology, polygon modeling is actually limited and you can't avoid a lot of those artifacts, all you can do is reduce the effect by better modeling practices.

To have a better idea on Class-A surfacing and how to model surfaces that reflect more smoothly, you can go over my article: “Modeling Cars in Polygons” if you still haven’t already.


Do whatever you need to get the final results at the fastest time possible, if that includes cleaner meshes with no artifacts then: 

- Pay close attention to the positioning of your vertices and edge distribution. (The fewer vertices you use the better)

- If you are using mesh subdivision (which you most likely are), be careful where you place your tris and N-Gons, hide them away or place them in flat or nearly flat surfaces.

- If you are after the highest quality possible, you can use flow check to see how reflections will look like at render time, due to polygon limitation, you will not be able to get perfect reflections, but you can try to mitigate the effect.

Thank you for reading!