1
$\begingroup$

I have this surface with bad look in Smooth Shading mode. If I change it to Flat it looks OK. What's the difference between these two Shading modes?

This is a model for a game. When I export the model for the game format it will use the Shading mode that I selected or it will force Smooth mode?

After modeling: After modeling

After recalculate normals: After recalculate normals

Smooth Shading mode: Smooth Shading selected

Flat Shading mode: Flat Shading selected

$\endgroup$

1 Answer 1

1
$\begingroup$

First make sure all your normals are consistent, and all pointing out. If some of them are backwards, that will wreak havoc on the shading.

Mesh Shading

The difference between smooth shading and flat shading is in how the normals are interpolated.

Flat shading uses one surface normal per face, to define the surface's shading. Which makes one color for each face.
face normals

Smooth shading takes uses the vertex normals, one normal for each vertex. Which blends the normals of the agents faces to create a smooth transition between the two faces.
enter image description here

What I think is happening in your mesh, is that the top is not completely flat and the small edges are making a problem for the smooth shading.

Because you are exporting it for a game, blenders shading model really does not matter. The game engine will control the shading, however it probably will use its own smooth shading.

To ensure that the sides and the top do not get lumped together in some smooth shading artifact, I would recommend adding a Edge Split modifier. Set the Split Angle to something around 80°.
edge split modifier

Doing so will separate any faces that meet at an angle of 80° or higher. Because the faces will be separate, it will eliminate any chance of smooth shading artifacts around the edges.

$\endgroup$
1
  • $\begingroup$ Wrong statement: "blenders shading model really does not matter. The game engine will control the shading," I tested that in Unity and noticed that whether you use Smooth or Flat shading in Blender matters when you import your model into Unity. It seems the fbx file contains some info that tells Unity whether to interpolate between vertex normals or instead to use only surface normals. $\endgroup$ Jul 10, 2017 at 22:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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