Weird lines appearing when using Subdivision modifier

I would like to know why these lines/artifacts appear when I add 6 levels of subdivision modifier in an object like this (I know it is probably a lot but I added 6 levels exaggeratedly so that the problem appeared).

As a clarification, this is Blender 2.83, using an old red Matcap, I have applied the transformations, checked that there are no double vertices and the normals have been recalculated, however I do not understand why these lines appear. I have had the same problem before with other objects using less levels of subdivision modifier.

Any idea why this happens? This kind of shading is it really incorrect or does it go unnoticed when rendering as high poly? I don’t have much experience in 3d modeling, maybe these lines that appear don’t have too much importance but I want to be sure.

Hi, @NeophyteArtist. I’m mainly shooting from the hip on this one, but in reading up on matcaps (how they’re made, how they work, etc.), I thought up a couple of possible causes. I think the most important thing is that you can confirm that it is only effecting matcaps and not rendering with Cycles or Eevee.

Apologies if you know this, but in case you didn’t, matcaps work essentially like a shading LUT (look up table). Each position (pixel) on the matcap hemisphere is associated with a surface normal. When the surfaces of your object need to get shaded in the viewport, instead of some heavy duty shading math to determine the pixel’s color, the renderer grabs the closest-fitting pre-rendered pixel color from the matcap (based on the surface normal), and bam! Shading done.

What that tells me is that shading accuracy using matcaps is likely related to the resolution of the matcap. A lower resolution matcap may introduce shading errors as there are fewer pixels to match surface normals to. There’s a chance that the matcap you are using isn’t high-res enough for what you are asking it to do. You called it “old.” Have you tried any new ones? Maybe if they don’t cause the same issue, your red one is too low-res to use. If that is the case, the good news is that once you press F12 and send that file to the actual renderer, it is going to use actual shading calculations rather than LUT approximations.

A similar, but technically different issue could be an interpolation problem. For matcaps to be so fast, they should probably be performing the least number of calculations per pixel. Ergo, a LUT is super quick (with some considerable limitations). So…there may be zero interpolation going on by the renderer. In the last explanation, I said that the renderer picks the closest matching pixel to the surface normal you need, and bam! Shaded. But in the case of a lower-res matcap, there may not be an exact match, and instead of the closest pixel, the renderer might average the value of the top four nearest pixels. That is 4 lookups compared to one, and an averaging function, so it would be slower and possibly not worth doing. Maybe what I’m saying is that either the matcap rendering code eschews interpolation in the interest of speed, or possibly an interpolation is introducing artifacts as you are further approximating an approximation.

I could be way off over here. That’s how it sounded to me as I was reading about it, but I’m no expert. My recommendation is to try different, newer matcaps, and to make sure these artifacts don’t show when rendering in Cycles or Eevee.

Let us know how it goes!

1 Like

Take a wireframe screenshot of the mesh with Subdivision modifier lvl6. That geometry is going to pretty dense at 6 levels and the modifier might cause some pinching or shading artifacts if the geometry is not even like in your image.

1 Like

I tried with other reflective matcap that came with version 2.83 (the old one was one that came with version 2.79) and the lines are also visible.

However, i think the problem is something related to what you say, since I tried to visualize in the viewport in renderer mode, and with Eevee (which I found out is a real-time engine) you can also notice the problem of the lines in the light reflection, however with Cycles the problem is not seen.

I just checked by reducing the subdivision levels to 3 and those lines are still visible. I think the issue will not be a big problem since in Cycles rendering it goes unnoticed.