When transferring from a high poly mesh to a low poly mesh to generate maps like normal maps or ambient occlusion, we have to choose what direction to trace outwards from the low poly. We have previously offered two options, surface normals and geometry normals. These each have benefits and drawbacks. Some artists will bake both and then composite them together to provide a superior normal map. We want to provide an automated solution that does as good or better. We will use the following simple low poly object (provided by @malcolm from the polycount.com forums) with lots of hard edges and high contrast features.
Surface Normals use the vertex normals from the object. This means that the user can harden edges to provide normals that are directly perpendicular to the surface, which minimizes distortion for that face. The problem with surface normals, is that close to hard edges, the normals become different from the connected faces, causing seams.
The deep recesses on the large pyramid in the centre is nicely captured on the flat surface.
Geometry Normals use computed normals based on the low poly, creating a seamless projection. This means that there is no seam at normals, but there is distortion across polygons next to hard edges.
As seen to the left, using geometry normals has cleaned up the edge, but has introduced distortion across the flat face. What we want is to use surface normals for the flat parts and geometry normals near the edge. This is where we introduce Rounded Normals.
While the seems have been eliminated, there is serious distortion on the details and the deep recesses on the pyramid using geometry normals.
Rounded Normals is a new feature in MightyBake which tries to provide a superior projection. You turn it on by changing the direction of projection and providing a distance to round your edges.
The rounding is a world space distance to round your edges. We default to 1.0. Below is is the model above using rounded normals.
Here, we use rounded normals to provide a smooth edge, while providing low distortion to the top level of the surface. You will have to experiment with the rounding distance to find the best overall for your model.
With rounded normals, the details are not skewed and the deep recess in the pyramid are nicely captured. The edges are round and have no seems.
To achieve these result, you must harden the edges where you want flatter projection and leave the edges soft where you want smooth projections. MightyBake will automatically round any hard edge using the distance you provide in the projection for any map you bake while you are using ‘Rounded Normals’ for your direction. This means it will work not just for normal maps, but for ambient occlusion, vertex colours, etc.
Low to Low Baking
You can use the same option to perform rounding on your low to low bakes. For example, here is a normal map on the low poly baked by turning off the high poly.
This is the base model with only its surface normals. It was baked by turning off the high poly version and baking a low-to-low normal map.
This was the same low to low bake, using rounded normals to add a bevel to every hard edge. This used a width of 0.5 to add a bevel to all the hard edges automatically.