Beginner Shading Issue

Hi everyone,

I have created a simple mesh that I would like to array. However, when I use an array there is visible distortion in the shading where the array meets (highlighted in red here, I’m viewing it using the metal carpaint matcap, but it shows up on other glossy matcaps, too):

I think it may be a topology issue, but I just can’t figure it out! The .blend file is available here if anyone wishes to take a look.

I would like to understand what is happening and what I can do to fix this issue. So far, I have enabled/applied the following:

  • Shade Smooth
  • Auto Smooth
  • Recalculate Normals
  • Rotation and Scale
  • Merge by Distance (after I applied the modifier)

Your help would be much appreciated. Thanks in advance!

In Object Data / Normals, set Auto smooth to 22 instead of the default. Play with that as it might affect the smoothness of other parts.

Alternatively, you could put a holding line at the top. Basically, the problem is the differently angled connecting segments at the that top edge where it starts to turn down.

You are developing a very good diagnostic process.

1 Like

The problem is linked to how the smooth shading algorithm works. Here you have smoothing over curvature in this direction:

While here, the shading is not interpolated but ends abruptly at and edge:

Now, the question is what you want to do with the mesh in the end.

If custom normals are not a problem, do the following: duplicate this part of the mesh as a separate object and fill out the gaps:

(keep the new object in exactly the same place)

Split these edges:

Add the problematic edge of the original object to a vertex group (only those vertices on the curvature, not those towards the insets, so only 4 vertices added to the group:

You may want to select these faces and remove them from the group (after the edge split):

Then add this modifier to the original object:

(the target object is the one we created earlier, the vertex group the one we assigned the problematic edge to).

array_shading_problem_solved.blend (780.0 KB)

2 Likes

Hi @LordoftheFleas, thanks for going to all that trouble. I really appreciate it! I haven’t tried this method before, but I will take a look at it tomorrow and report back. Thank you again!

Hi @g60. Thanks for replying. I will try this! But can I ask what is a holding line exactly? I’ve searched the term but it’s not really clear to me. Thanks.

A holding line or edge is a common solution. Adjust your object so the lighting shows the problem,

pre-loop

Add a single single edge loop (ctrl-R) along that set of faces and slide it toward the problem edge. This was done with the default 30-degree smoothing,

post-loop

And, yeah, holding edge is more correct than holding line.

1 Like

While a holding edge gives a consistent shading in the horizontal direction, it changes the apparent curvature of the mesh.

Top: with normal transfer. Bottom: With holding edge.

This effect becomes even more apparent when trying to apply the technique to a cylinder:

Inconsistent shading without holding edge:

Consistent shading but loss of cylindrical shape with holding edge:

2 Likes

@LordoftheFleas Thanks for this – I’ve learned something. I’ve used normal data transfer for “sticking” two meshes together but not for this application of smoothing. Nice.

1 Like

Yeah, it’s about the only reliable technique to get the shading right when you apply details or cuts to curved surfaces:

2 Likes

Hi @LordoftheFleas, thank you once again for your help! I attempted to follow the process you gave me, it worked mostly, but I ended up with a couple of issues (sorry, this is a totally new method to me).

  1. I have abrupt shading at the edges of the duplicated mesh:

edge_2

  1. I have strange shading in the following area:

The blend file is here for convenience in case anyone wanted to see what I’ve done wrong!

Thanks again!

Yes, it’s a very clever method, I didn’t know any of this type of stuff was possible!

When I checked the vertex group, it seemed to be empty, adding this edge solved the issues at my end:

1 Like

@LordoftheFleas Oops. I see now, I didn’t realise I had to hit “Assign” once I created the group :man_facepalming:. It seems perfect now, thank you so much, this is sorcery!

2 Likes

If you want to see real sorcery, you’d have to check out the stuff you can do with the tools MACHIN3 sells, for example meshmachine:

TLDR, you can do that normal transfer stuff with 5 clicks or so.