Bake Maps: low-poly and high-poly texture baking
Bake normal, AO, curvature, thickness, and PBR textures in Tridi, including high-poly cage projection, output settings, limitations, and fixes.
Applies to Tridi 1.6.0 release and later. Release notes
Use Bake Material Maps to write material channels or geometry-derived detail into UV-aligned PNG textures. Bake from the loaded low-poly model, or import a separate high-poly source and project its detail onto low-poly UVs. Baking does not change source geometry.
Choose what to bake
Tridi 1.6 supports nine outputs. The source changes when Use Highpoly is enabled; selecting that option does not automatically add maps to the queue.
| Map | Without Highpoly | With Highpoly |
|---|---|---|
| Base Color | Flattens the effective material color, texture, and factors into the target UV. | Transfers high-poly surface material color, textures, and factors at projection hits. |
| Roughness / Metalness | Bakes the effective scalar channels, including source texture data. | Transfers high-poly material roughness and metalness. |
| Normal | Rebakes the existing tangent-space normal (and effective Height/Bump detail) on a compatible UV set; it does not invent geometric high-poly detail. | Encodes projected high-poly surface detail in the low-poly tangent space. |
| Ambient Occlusion (AO) | Uses geometric self AO where the optional ray-query capability is available; otherwise remaps the effective AO map or factor. | Traces secondary AO rays from projected high-poly hits. |
| Emission / Alpha | Flattens the effective emissive or opacity data. | Transfers the authored high-poly emissive or alpha material data. |
| Curvature | Derives curvature from mesh geometry. Output-only; there is no automatic Curvature material slot. | Samples projected high-poly topology for curvature. |
| Thickness | Samples geometry thickness with configurable inward rays. | Measures thickness at projected high-poly surfaces. |
Prepare the target and source
- Low poly is the target: open the model you want to receive the baked textures first. The resulting images follow its UVs and are grouped by its materials.
- UVs are required: choose UV 0 or UV 1 on the low-poly target. A missing UV set across all relevant triangles prevents baking. Collapsed, invalid, and overlapping UV faces can produce missing or ambiguous pixels without stopping every bake.
- Keep both meshes aligned: a high-poly source should occupy the same position, orientation, and approximate scale as the low poly. Both use Tridi's selected Up Axis and Scene Scale, but the cage cannot correct an unrelated transform or an incorrectly positioned source.
- Use supported surface data: imported PBR textures, channel routing, and source factors can be sampled. Animation, skinning, and morph targets are evaluated at rest pose for baking, not the current animated frame.
For UV inspection and island problems, see UV View and Mesh Validator.
How to bake material maps
- Load the low-poly target and open Bake Material Maps from the top toolbar (between Post Processing and UV View). It is a regular toolbar feature, not an Experimental preference.
- In the Materials column, tick each material you want included. Clicking its name focuses that material and its settings; it does not automatically include it in the batch.
- Under Maps, choose Add Map for each required output. New materials begin with an empty map list. Keep a row checked to bake it, uncheck it to keep it without baking, or use its remove icon to remove it.
- Choose Resolution (512, 1024, 2048, or 4096) and the low-poly Target UV (UV 0 or UV 1). Configure dilation, padding, and the material's output folder.
- Use the map's settings icon for a channel alias and, where applicable, AO or Thickness controls. Adjust the naming template if you need deterministic filenames for a multi-material batch.
- Leave Apply after baking on to bind supported baked textures to the low-poly material, or turn it off to produce files and registered baked images without changing the material's live bindings.
- Click Bake. The panel stays open while queued jobs run; use the shared progress and completion notification to review results. Use Open Folder after completion or the inline folder action for the selected output directory.
- Use the eye icon on a completed map row to inspect the resulting texture on that material's low-poly UVs. Click it again to restore the regular viewport.
Material settings may be linked to the shared configuration or unlinked for independent overrides. The batch processes only checked material/map pairs; selecting a material in the viewport is not the same as including it for baking.
Project high-poly detail to low-poly UVs
- Open your low-poly model as the primary scene, then open Bake Material Maps > Import Highpoly and select the detailed source.
- Inspect the new Low Poly and High Poly groups in Objects and Materials. The high-poly source can be selected, shown, hidden, reloaded, changed, or removed independently. Visibility is only a viewport choice: hiding it does not disable it as a bake source.
- Enable Use Highpoly. This directs all nine supported outputs to the shared high-poly projection instead of ordinary low-poly self baking.
- Click Adjust Cage to inspect the low-poly-derived projection cage. Start with Auto Fit for a fitted cage, then use signed Offset Trim to tighten (negative) or expand (positive) the fit. If Auto Fit is unsuitable, disable it and adjust the manual Cage Offset.
- Orbit around tight recesses, openings, seams, and thin areas. The transparent yellow cage and red protrusion warning help diagnose visible intersections; they are viewport diagnostics, not proof of complete 3D enclosure.
- Return to Bake Maps, add the maps required by the low-poly materials, confirm UV and output settings, then click Bake. Auto Fit preparation may briefly keep Bake unavailable until it finishes.
- Check a Normal preview for missed details; inspect AO, Curvature, and Thickness separately for geometry-specific artifacts. Change cage controls and rebake affected maps if necessary.
The manual offset starts at 1% of the low-poly bounding-box diagonal and supports approximately 0.001%–100%. Auto Fit's signed trim spans -10% to +10% of that diagonal, with 0% meaning the fitted result. Excessive negative trim can push the cage inside the source and create misses.
Settings that affect output
- Resolution / Target UV
- Square 512–4096 PNG outputs; the selected low-poly UV set defines pixel coverage. Higher resolution increases work and memory use, especially for high-poly AO.
- Dilation / Infinite Dilation / Padding
- Extend colors beyond covered UV islands to reduce sampling seams. Finite padding offers 0, 4, 8, 16, or 32 pixels. Infinite Dilation fills remaining uncovered pixels and disables the finite Padding picker. Thickness uses special handling so empty areas do not silently become misleading filled thickness.
- Apply after baking
- Applies supported outputs to the current low-poly material without rewriting the imported source file. Curvature is output-only; Thickness can feed the material's Thickness texture slot. Other supported map types bind through their corresponding material routes.
- Pack Metallic / Roughness
- Combine selected scalar channels into one packed texture: Roughness in G and Metalness in B. A combined job counts as one output image when both are enabled. A separate Packed Name can be set from the Roughness map settings.
- Output folder / Naming Template
- Each material defaults to Tridi's cache
texture-bakesdirectory; choose a custom folder to keep files independently of Clear Cache. Default name:$file_$material_$map. Supported tokens:$file,$material,$map,$resolution,$id, and$uv. The map's alias controls$map. Unknown tokens are sanitized; blank names and output path collisions can prevent a batch. - Preview Baked Map
- The eye button appears only after a successful bake. It isolates the chosen low-poly material in a temporary unlit diagnostic view; it does not alter the material, undo history, or saved viewport settings. The high-poly source and unrelated overlays are hidden during preview. Orbit, pan, and zoom remain usable in the 3D viewport; closing the panel clears the preview.
AO and Thickness tuning
Open the gear beside Ambient Occlusion or Thickness for geometric sampling controls:
- Secondary Rays controls quality against bake time. Increase for less noise rather than increasing resolution first.
- Max Occluder Distance sets the reach. For AO, zero means unlimited. With Relative to Bounding Box, a nonzero distance scales by the target object's bounds; otherwise it uses scene units. For Thickness, zero uses its automatic object-scale range, and a short explicit range can miss the opposite wall.
- Two-Sided Occluders is an AO control that lets both sides of polygons block rays. Spread Angle on Thickness adjusts its inward sampling cone: narrow to follow local thickness, wide to include surrounding surfaces and cavities.
- Only Self Object limits self-geometry AO or Thickness tracing to the same low-poly object. It is disabled while projecting from a high-poly source.
- Denoise provides Low, Medium, and High edge-aware smoothing before dilation and PNG encoding. Medium is the default for newly created 1.6 configurations; legacy project settings may retain their earlier behavior.
Self-geometry AO uses an optional Vulkan ray-query path. Without that capability, Bake Maps can still rebake the effective AO texture or factor; it cannot promise equivalent geometric self AO. High-poly AO projects primary hits on CPU, then uses Vulkan secondary rays when supported and within its memory budget, otherwise CPU. High-poly Thickness currently uses CPU tracing. Vulkan acceleration is not guaranteed to be faster for every model or 4K job.
Known limitations
- UV-dependent outputs: Tridi does not generate or unwrap UV islands. Missing required UV data can fail; collapsed triangles, stacked islands, mirrored layouts, and overlap with multiple valid hits can create gaps or conflicting results.
- Projection is not a general retopology solver: narrow recesses, thin shells, intersecting or open surfaces, strong concavity, non-manifold geometry, or high-poly detail outside the cage can yield ambiguous first hits. Auto Fit is heuristic, not a watertight enclosure test.
- Source and pose limits: the high-poly file is a separate static/rest-pose source. Deformed animated frames, active skin poses, morph results, procedural modifiers from other applications, and unsupported renderer-specific shader graphs are not reconstructed by Bake Maps.
- Normal rebake differs from projection: without Highpoly, Normal flattens existing normal/bump data; it does not convert a detailed mesh into a high-to-low normal map. Same-UV tangent compatibility applies to this self-source workflow.
- Color and material semantics: output follows supported effective PBR material data, not the final lit viewport appearance. Baking does not preserve arbitrary custom shader evaluation, all source application nodes, or lighting/shadow effects.
- Resource costs: high-poly BVH preparation, 4K UV coverage, geometric AO/Thickness rays, and CPU fallbacks can take considerable time and memory. Shared caches reduce repeated work only for matching geometry, UV, resolution, and cage settings; changes can invalidate them.
- Files versus projects: Bake output is PNG, not a new high-poly mesh or a replacement for model export. Native
.tridiretains Bake settings and an external high-poly path reference, not the high-poly geometry. Moving or deleting the original high-poly file requires relinking it.
Why isn't it working?
| Symptom | Cause and next check |
|---|---|
| Bake is disabled, or the count is 0 Materials / 0 Maps | Include at least one material using its left checkbox, add a map with Add Map, and leave that map checked. Focusing the material does not include it. Also confirm no included target has an empty folder or conflicting filenames. |
| Highpoly controls are missing | Import a high-poly source from Bake Maps first and allow its load to complete. Use Highpoly and Adjust Cage appear only after a ready source exists. |
| Bake stays unavailable after enabling Auto Fit | Fitted cage preparation is still running; the Bake action remains disabled while Auto Fit is pending. Complex source geometry can increase preparation time. |
| The map is blank or only has a flat fallback value | Confirm the low-poly target has the chosen UV set and usable triangle coverage, the material is actually assigned to those faces, and source textures/factors exist. A valid but entirely degenerate UV layout may complete with a neutral output instead of a fatal UV error. |
| The high-poly normal loses detail or shows wrong surfaces | Check low/high alignment, inspect the cage from several angles, expand a too-tight cage, and reduce overly aggressive negative Offset Trim. First inward hits can land on a nearby wrong wall, and outward detail beyond the cage cannot be reached. |
| Visible red cage warnings do not match the baked artifacts | The warning is a screen-space view aid, not proof that every 3D triangle is inside the cage. Rotate the camera and inspect occluded or thin sections; evaluate the baked Normal/AO result as the final check. |
| AO looks uniform instead of shadowed | Without Highpoly, verify geometric self AO capability; if unavailable, Tridi rebakes the existing AO texture or constant factor. A uniformly white AO map can be correct when no source AO exists or all target UV coverage is invalid. |
| AO or Thickness is noisy, slow, or misses cavities | Increase Secondary Rays; adjust Max Occluder Distance, AO two-sided behavior, Thickness Spread Angle, and denoise. High-poly Thickness is CPU-based; high-poly AO may fall back to CPU even when Vulkan is selected. |
| Normal looks inverted, has seams, or appears inconsistent on mirrored areas | Check source tangent-space convention (Tridi expects glTF/OpenGL +Y for self-source rebakes), UV seams and mirrored islands, and geometry orientation. High-poly projection accounts for mirrored/nonuniform transforms but ambiguous overlapping UV hits are still possible. |
| Output exists but the material has not changed | Check Apply after baking. Curvature remains output-only. The eye preview is temporary and does not itself assign the image. For a packed map, inspect the Roughness/Metalness G/B channels rather than interpreting it as full RGB color. |
| Files are missing later, or old filenames get replaced | The default output is inside Tridi's clearable cache; choose a custom folder for durable exports. Named rebakes reuse their filenames and replace prior output rather than making numbered copies. |
| A saved .tridi project cannot find its Highpoly source | The project stores a relative/absolute path reference, not the high-poly mesh. Choose Browse Highpoly in the missing-source dialog to relink, or Skip to work without it. |
If a bake fails, inspect Tridi's job notification or error details, then test a single material and one map at 512 or 1024 before retrying a larger batch. This separates UV/source problems from memory, path, and high-poly projection issues.