Почему карты нормалей не просто синие? Я думаю, что карты нормалей должны быть преимущественно синего цвета, потому что компонент Z нормали представлен синим цветом. Нормалы указывают на поверхность в направлении Z, поэтому мы должны видеть синий цвет в качестве преобладающего цвета, поскольку компонент Z является доминирующим.
По определению касательное пространство перпендикулярно поверхности. В любой точке нормаль должна всегда указывать в Z (синее направление) без X (красное направление) или Y (зеленое направление). Таким образом, карта нормалей (поскольку это «карта нормалей») должна иметь цвет нормалей, который просто синий (R = x = 0, G = y = 0, B = z = 1) без промежуточных оттенков.
Но карты нормалей не такие, и в них есть градиенты оттенков. Почему это так?
источник
Ответ прост: из-за смещения диапазона.
Нормалы имеют диапазон от -1,0 до 1,0 для каждого компонента (x, y, z). С другой стороны, карта нормалей, сохраненная как 24-битное RGB-изображение, имеет диапазон от 0 до 255 для каждого компонента.
Это означает, что любые компоненты, которые были нулевыми, становятся 127,5 (точная середина) на карте нормалей (округляется до 128).
Нормальный вектор (0,0,1) становится (128,128,255) на изображении карты нормалей, который является пурпурным цветом, а не чистым синим (0,0,255).
источник