Overview
Provides an entry point for converting an external normal map into a height map that can be edited in PixPipeline. A normal stores slope rather than absolute altitude, so this node reconstructs relative height, centered around 0.5 independently for each opaque island. The Image output can be adjusted, hand-edited, or inserted into a Surface.
Usage tips
- A common chain is
image_load → tangent_normal_map → normal_to_relative_height → image_to_surface(height_map) → surface_rebuild_normal. Always declare the source asset's OpenGL or DirectX convention in the adapter. - Match Source Normal Strength to the value used when the normal was generated. If unknown, start at 2; move toward 3–4 if reconstruction is too deep or toward 1 if it is too shallow.
- Height Scale is the final appearance adjustment. Start around 0.5–1 for cloth or skin and 1–2 for stone or relief. Match Source Normal Strength first.
- Enable horizontal or vertical wrapping only for genuinely seamless tiles. Wrapping an ordinary sprite can force unrelated edges together and flatten the result.
- Transparent gaps separate material islands. Each island is centered independently, which avoids an artificial slope crossing the background.
Common mistakes
- Bulges look recessed: the OpenGL/DirectX setting in
tangent_normal_mapis reversed. Correct the Y convention instead of compensating with Height Scale. - The original height is not reproduced exactly: this is expected. Normals do not retain absolute altitude, constant offsets, or a unique step height for saturated slopes.
- Height clips to white or black: lower Height Scale or raise Source Normal Strength so useful tones remain around 0.5.
- A Surface normal map was connected directly: Surface normals use view space, while imported material normals use tangent space. Normally, adapt the external normal image.
Related nodes
tangent_normal_map— required adapter carrying the OpenGL/DirectX conventionimage_to_surface— insert reconstructed height into a Surfacesurface_rebuild_normal— rebuild a consistent normal after editing heightsurface_curvature— derive curvature from the reconstructed relief