Creating Curvature and Thickness Maps
We have repeatedly encountered situations where Curvature and Thickness maps turn out to be 'garbage'—noise on flat faces, artifacts on fillets, incorrect bias in contact zones. Yet these maps are responsible for that lively material that distinguishes AAA art from technically correct but flat assets. The problem is not the tool—Baker in Marmoset Toolbag or Substance Painter handles it in seconds. The problem is in the settings and geometry preparation. Optimizing this stage can reduce the texture budget by up to 30%.
Why does Curvature Map have artifacts?
The most common situation: an artist bakes Curvature in Marmoset Toolbag 4 with default settings and gets a map where all sharp angles look correct, but there is white noise on flat faces. The cause is the Ray Distance parameter set too high: rays hit neighboring UV islands and create false convexities. Fix by lowering Ray Distance to values where the ray barely reaches the high-poly. For a character mesh split into Baker Groups—a separate cage for each group. In Substance Painter the same problem is solved via bake per material with an explicit Max Frontal Distance. In 95% of cases this removes noise without rebaking.
The second source of pain is seam bleeding. If the UV layout is done without a padding of 2–4 pixels along the edges of each island, curvature from neighboring islands bleeds into the seam. On a 2K texture for a mobile asset this is immediately noticeable; on 4K for PC—at a certain camera angle. Check the layout before baking—this saves hours of rework.
What is Thickness Map and why is it needed?
Thickness Map is baked via AO with inverted normals: rays go into the mesh and record the distance to the opposite wall. For thin details—character ears, petals, cape edges—this map gives Subsurface Scattering correct input. Without it, SSS works uniformly and fabric looks like plastic. In our projects we use 16-bit Thickness to avoid banding on smooth transitions.
Tools and baking approach
For the production pipeline we use three options depending on the task:
| Tool | When to use | Key settings |
|---|---|---|
| Marmoset Toolbag 4 | Full control over cage and Baker Groups | Curvature Intensity, Curvature Bias, Smooth Angle (90° for hard-surface, 160–180° for organic) |
| Substance Painter 9 | Fast baking within the working layer | bake per material, Max Frontal Distance, Padding 4px |
| Blender + BakeMaster | Indie projects, no licenses | Geometry Node → Pointiness → Color Ramp; Thickness through AO with Local Space |
Marmoset is the preferred option when precise control is needed. Substance Painter generates Curvature from the normal map, which is faster but less accurate on low-poly with sharp edges without smoothing. Blender is a budget entry but requires a custom node graph in Cycles.
Regardless of the tool, before baking the mesh must pass several checks:
- Normals of high-poly are correctly averaged—no inverted faces.
- Smooth Groups on low-poly match UV seams.
- Cage does not self-intersect in concave areas.
- UV islands have the same texel density across the asset.
Pre-bake checklist
- [ ] Check high-poly normals for inverted faces - [ ] Match Smooth Groups with UV seams - [ ] Set Cage with offset 0.1–0.5% of mesh size - [ ] Set Padding 2–4 pixels on UV islands - [ ] Ensure no intersecting geometry within a Baker GroupHow Curvature is used in the material
A baked Curvature Map in its raw form is an intermediate result. In Substance Painter it is fed into the Metal Edge Wear Generator as a mask for edge highlighting. In Unity ShaderGraph it is used as input for a lerp between two materials: on convexities metal is worn down to shine, in concavities dirt accumulates. Proper workflow: Curvature → Color Ramp (set specific ranges) → layer mask. Without Color Ramp the map gives too wide a mask, and the effect looks blurred. For Thickness—connection to the Thickness parameter in Lit Shader with Subsurface Scattering enabled. In URP/HDRP this is Subsurface Mask Map in channel A. In a custom shader—a separate texture sampled in the fragment shader for scattering depth calculation.
Typical costly mistakes
- Baking without Baker Groups. If a character's arm overlaps the torso in A-Pose, Marmoset bakes the curvature of the torso considering the shadow from the arm. Splitting into groups solves this—each body part bakes in isolation. Saving on this stage leads to artifacts that take an hour or two to fix.
- Curvature with incorrect Smooth Angle. A value of 90° is suitable for hard-surface. For organic—160–180°, otherwise all muscle transitions look like graffiti of white spots.
- Thickness on open geometry. If the mesh is not closed (open cylinder, for example), rays go to infinity and return 0. Either close the geometry with temporary plugs or limit Ray Distance to the estimated maximum thickness of the object.
- Using 8-bit for Curvature. Curvature maps are gradient data. On 8-bit banding appears on smooth transitions. For final material Curvature is stored in 16-bit, converting to 8-bit only when memory is constrained on mobile platforms. The cost of the mistake—reworking all layers, which can increase the budget by 20%.
What is included in the work
- Mesh audit: check UV, Baker Groups, Smooth Groups, normals.
- Configure baking parameters depending on the engine (Unity, Unreal, custom).
- Bake Curvature and Thickness in 16-bit with custom Color Ramp.
- Test on a test material: Curvature fed directly as Albedo—this reveals artifacts before layering.
- Deliver source files: .tga/.png/.exr, baking scenes (.tbscene, .spp, .blend).
- Train the team: how to properly include maps in the material pipeline.
If you want to guarantee clean maps without artifacts, order a mesh audit—it will save hours of rework.
Work process on maps
In practice, baking Curvature and Thickness takes a small part of the total time, but an error here entails reworking several material layers. Therefore, we start with a mesh audit: check UV islands, Baker Groups, correctness of Smooth Groups. Our team has more than 5 years of experience in texture baking and has implemented 150+ projects for the gaming industry—from mobile to AAA.
| Task scale | Estimated time |
|---|---|
| One hero asset, up to 5 UV sets | 4 to 8 hours |
| Character with full LOD set | 1 to 2 days |
| Environment (props + modular tiles) | 3 to 7 days |
| Baking for an existing pipeline (team integration) | upon agreement |
After baking—check on a test sphere with a standard material where Curvature is fed directly as Albedo. A quick way to see all artifacts before they hide under dirt and scratch layers.
Cost is determined after reviewing the mesh and technical task—the number of UV sets, target texture resolution, and engine requirements directly affect the labor. Get a consultation from an engineer to set up your project's baking pipeline. We guarantee clean maps without artifacts and full support during integration.
Marmoset Toolbag Documentation recommends for Curvature using Smooth Angle 90° for hard-surface, but in practice we often raise it to 120° for better control of sharp angles. More about the physics of Subsurface Scattering can be read on Wikipedia.






