Back to Node List

Normal to Relative Height

normal_to_relative_height

Recovers an editable relative height map from an explicitly typed tangent normal map.

Reviewed
Guide available
The node name and summary are available in English. Port, parameter, and article details are currently shown in Japanese.

Input Ports

NameTypeDescription
タンジェント法線
normal
TangentNormal
Required
「タンジェント法線マップ」でOpenGL/DirectXのY規約を指定した法線です。

Output Ports

NameTypeDescription
相対高さ
height
Image
平均面を0.5にそろえた相対高さです。法線だけから元の絶対高度は復元できません。

Parameters

NameTypeDefaultRangeDescription / Options
元の法線強度
normal_strength
Float
20.1–16 / step 0.1

法線を作った時の強さです。復元した高さが深すぎる時に上げます。まず1〜4で合わせてください。

高さの倍率
height_scale
Float
10–8 / step 0.05

復元後の高低差です。布や肌は0.5〜1、石や浮き彫りは1〜2を目安にします。

左右ループ
wrap_x
Bool
false

左右端の高さがつながるよう積分のずれを除きます。シームレスタイルでオンにします。

上下ループ
wrap_y
Bool
false

上下端の高さがつながるよう積分のずれを除きます。シームレスタイルでオンにします。

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_map is 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 convention
  • image_to_surface — insert reconstructed height into a Surface
  • surface_rebuild_normal — rebuild a consistent normal after editing height
  • surface_curvature — derive curvature from the reconstructed relief
Back to Node List
Normal to Relative Height — PixPipeline Node Reference