Cycles - Flat vs Smooth Shading of Glass Object - odd result

Hello,

The mesh below should represent an optical component in glass with smooth surfaces


When I’m rendering this in cycles (BL 2.74) using Glass BSDF surface and smooth shading I get an odd results with black areas, see image below.

The object to the left, included for comparison, is set to have Flat Shading and the Faces are thus clearly visible.

I have carefully checked that the normals are pointing from the interior glass to the exterior air.

Can anyone suggest what setting to change to make it look like a smooth piece of glass?


Thanks

Put some love into modeling - mathematically sharp things can cause artifacts due to render calculation errors. Smooth does not modify mesh for render. http://www.pasteall.org/pic/show.php?id=89529

Glass shader color is extremely sensitive. I’d do your tests with nearly pure white, and 0 roughness. But yeah you need more and smoother geometry.

using shade auto smooth and setting the smooth angle will help… but as others have mentioned super sharp normals with glass just are very hard to render.

You could also Vertex/Split each distinct surface. The model won’t lend itself well to subdivision after, though.

Just add an edge split modifier.

I think I saw a tut vagualy on this topic on how to model gem stones, I think getting rid of the black area’s in it was resolved by adding in more bounces or something like that, And multi importance. This is a from my memory sort of thing so yymv

Wow - I had no idea that had been implemented for cycles. There was a time you could only do this with BI and for cycles you had to use the edge split modifier.

It has been in blender since around 2.70… There is no reason to use the edge split modifier as this operation does it, and does it better.

Using the edge split modifier, you can’t instance objects easily, you have to convert to dupligroup and duplicate them that way… using this method, you are able to use instancing quite easily, as it works on a mesh level rather then object level.