There is a new feature in town, and it is called Round Edges; accessible from the round_edges map node.
Round Edges, a.k.a. Round Corners, has been one of the most frequently requested features among the feedback provided by our customers and trial users. This feature is particularly useful in jewelry or watch imagery, and in any project that involves machined parts. However, it is useful in the broadest sense as soon as your geometry presents geometries that might be chamfered in real life, by saving you the extra effort of chamfering manually, which is is sometimes too much work to be practical.
Below you can see examples of models that were modeled with no chamfering whatsoever, and a comparison with-and-without round_edges applied:
Round Edges analyzes the geometrical neighborhood of each point in the scene, by gathering nearby normals, and by averaging them to properly bend the surface normal around edges and corners. This happens in shading time, and requires no effort from the user, and no edits in the source geometry.
Note that since round_edges is actually a bump map that bends normals in shading time just like bump/normal mapping does, it has the same limitations that regular bump mapping. i.e., the real geometry underneath is not really modified, so at grazing angles, or if you exaggerate the effect too much, surfaces will start looking odd, or the chamfers will stop looking fully smooth.
Here you have a couple more examples:
As soon as one starts using round_edges, one of the first needs that arise is the ability to use any regular material on top of a surface that has been auto-chamfered with round_edges. Any material means any material that uses bump or normal mapping itself.
This is not a problem in Maverick, because you can blend multiple bump/normal map nodes using the bump_blend node. However, the way in which you want bump blending to work if round_edges is involved is so that the additional bumps are not simply added or averaged. You literally want the material bump to act around the chamfered edges produced by round_edges as if they were real geometry.
This required an upgrade in our round_edges node, which now evaluates additional bump nodes in sequential order, bending normals on top of the surface already bent at the previous stage in the evaluation stack. This sounds too technical, so here’s a self-explanatory visual result:
Often times you want distinct intersecting objects to be automatically welded by round_edges. But in some situations you want to treat distinct objects as distinct. A good example is when an object with round_edges contacts with the floor.
Our solution provides inclusion/exclusion options for everything in the scene, only objects with the same material, and only the same object (self):
Another interesting property of our round_edges solution is the ability to map the beveling radius. This can be used to simulate worn out edges, or to add a little bit of irregularity to the appearance of the object.
Internally, round_edges is built on top of another simpler but similar node called curvature. The curvature node has been reviewed and improved for this build as part of the effort necessary for the round_edges node.
This node can be used to detect concave or convex areas in the geometry, and does a fine job as a weight mask between two materials to simulate work out edges and such.
Thank you for reading!