I defined some glossy (Glossy BSDF shader) planes by specifying the four vertices and vertex order for each. They are separate meshes, and there are small cylinders separating them.

enter image description here

I rendered them in Cycles under an outdoor HDRI lighting.

Strangely, some adjacent planes are rendered in very different brightness, giving me this unpleasant discontinuity.

enter image description here

I checked the two surface normals -- they are very close.

enter image description here vs. enter image description here

Why do I still have this shading difference? How may I fix it?

  • $\begingroup$ Imho your question description is not much understandable, and unclear: "some glossy planes" seems to refer to separate meshes, while autosmothing can work only on a single mesh, but even if it is so, the quite small image seems to show that those planes are separated by some other apparent geometry... that could break auto smoothing relative angle detection. Can you perhaps provide a model (eg: through blend-exchange.giantcowfilms.com)? $\endgroup$ – m.ardito Dec 30 '16 at 12:28
  • $\begingroup$ @m.ardito thanks for the comment! Sorry that it isn't clear. Yes they are separate meshes, the apparent geometry that separate them are small cylinders. So in this case auto smoothing doesn't apply because they are different geometries? I will try to produce a minimal demo model now. :) $\endgroup$ – Sibbs Gambling Dec 30 '16 at 16:31
  • $\begingroup$ @m.ardito Updated and model file uploaded! Thanks for the suggestion -- I think the question now is much clearer. $\endgroup$ – Sibbs Gambling Dec 30 '16 at 17:53
  • $\begingroup$ I believe this is expected behaviour. If you don't want this to happen then connect all your planes and put 'em on a different mesh from the cylinders $\endgroup$ – Sebastián Mestre Dec 30 '16 at 21:20
  • $\begingroup$ @SebastiánMestre Thanks! But why is this expected? Could you kindly help elaborate a bit? I think right now the planes are already different meshes than the cylinders? $\endgroup$ – Sibbs Gambling Dec 30 '16 at 21:22

I think this is due only to the HDRI lighting. I tried with a different, more uniform world lighting and all planes are shaded in a more "uniform" way.

enter image description here

I'm not an expert, but even if the two plane's normal are close, or identical, the planes position is not the same (and cannot be the same) respect to every HDRI pixel lighting the scene.

Since this is not a uniform light color, and because a single flat plane can "reflect" just one shade, this is to be taken into account. Probably a real object like that would appear the same.

As said, normals smoothing can't help you here, because all square meshes are separate: if you can join them to appear as a single plane (although with those separating "cylinders" all above them) maybe, but I'm not sure it would give desired results anyway.

Btw, you have some plane with inverted normals, here and there...

enter image description here

  • $\begingroup$ +1. Hmmm, I tried with three different HDRI lightings, and they all gave me some nonsmooth shading between adjacent planes, but at different locations. That's why I thought this must be a bug. I am still not very sure if this is a bug... Let me experiment with some more lightings. I enforce all surface normals to be pointing towards the camera. Does this cause the "inverted normals" you mention? Are there any downsides in doing so? Thanks! $\endgroup$ – Sibbs Gambling Dec 30 '16 at 22:07
  • $\begingroup$ I updated the answer with a picture to show some "tile" with apparently inverted normals... they are aside many others whose normals point in the opposite direction so I don't think this is intended by your custom alignment. Also, some mesh parts (one "hand", one "foot") seem to be overlapping other meshes... $\endgroup$ – m.ardito Dec 31 '16 at 12:36

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.