ВИДЕОМОНТАЖЁРDAVINCI RESOLVE · ВИДЕО · AI
МатериалFUSION

BumpMap

рельеф материала из height/bump-карты

BumpMap принимает одну 2D-карту, интерпретирует её как heightmap либо packed bumpmap и выдаёт 3D Material с texture-space normals для Bump Map-входа Blinn/Phong и других material-нод.

Нода в работе
Иллюстрация нодыBumpMap
РезультатМатериал

BumpMap

Обзор

Что делает BumpMap

BumpMap не является обычным image-фильтром и не принимает базовый материал. У неё один image-вход и один Material-выход: 2D карта входит слева, внутри ноды превращается в texture-space normal information, а затем этот Material подключается к Bump Map Material входу Blinn, Phong или совместимого 3D material.

Это принципиально отличает BumpMap от CreateBumpMap. CreateBumpMap создаёт RGB bumpmap как обычное изображение, которое можно просматривать и обрабатывать 2D-инструментами. BumpMap переводит height/bump image в material-data, которое уже участвует в 3D lighting calculation.

В режиме Source Image Type = Heightmap вход трактуется как карта высот. Белое обычно означает более высокий уровень, чёрное — более низкий, но освещение определяется не абсолютной яркостью пикселя, а локальным изменением высоты между соседними пикселями. Поле с постоянной яркостью само по себе почти не создаёт рельефа.

Height Channel выбирает, откуда брать scalar height: Luminance, Average, Max, Min, Red, Green, Blue или Alpha. Это особенно важно для цветных source maps и технических RGBA-текстур, где нужная информация может лежать только в одном канале.

Luminance и Average — не одно и то же. Luminance использует яркостное взвешивание каналов, Average — среднее RGB; Max и Min берут соответственно максимальный или минимальный компонент. Поэтому одна и та же цветная текстура может давать существенно разную bump-структуру в зависимости от режима.

Filter Size 3/5 задаёт размер neighbourhood-фильтра, который используется при вычислении направления поверхности из heightmap. 3 сохраняет более локальную реакцию, 5 анализирует более широкое окружение и обычно выглядит мягче. Это не общий blur всего материала и не quality preset Renderer3D.

Height Scale усиливает разницу высот, то есть фактически масштабирует slope, из которого строятся normals. Слишком большое значение быстро даёт жёсткий, шумный и неестественный lighting response; корректнее поднимать Scale после проверки частоты/detail самой heightmap.

Clamp Z Normal ограничивает нижние значения Z-компоненты результирующей normal/bump texture. Это аварийный контроль экстремального наклона нормалей, а не замена Height Scale. Если поверхность ломается на резких участках, сначала отделите проблему Scale от Clamp A/B-проверкой.

Wrap Mode относится к sampling при расчёте bump на границе входного изображения. Wrap берёт данные с противоположного края, Clamp продолжает крайнее значение, Mirror использует зеркальное продолжение. Этот control помогает фильтру на seams, но сам по себе не включает UV-tiling геометрии.

Для tileable height textures Wrap особенно важен: если left/right и top/bottom края рассчитаны как разорванные, градиент на seam создаст искусственную normal-кромку. Для незацикленных карт Clamp обычно безопаснее, а Mirror полезен как отдельный border experiment.

В режиме Source Image Type = Bumpmap вход уже должен содержать packed normal perturbations в RGB. Историческая Fusion-конвенция хранит компоненты нормали из диапазона -1…+1 в положительном 0…1 диапазоне; CreateBumpMap формирует именно такой совместимый image-поток.

Bumpmap mode нельзя считать универсальным импортом любой normal map из любого 3D-движка. Tangent-space orientation, channel handedness и packing conventions могут различаться. Если чужая normal map даёт вогнутости вместо выпуклостей или неправильное направление света, сначала проверьте conventions, а не увеличивайте Height Scale вслепую.

В терминологии Fusion bumpmap модифицирует существующие surface normals, а normalmap может описывать замену normal basis. На практике BumpMap нужен именно как материалный bridge: он готовит normal perturbation для lighting, не создавая нового mesh и не меняя vertex positions.

Texture Depth — отдельный вопрос точности material texture: Source сохраняет исходную глубину, а int8/int16/float16/float32 позволяют принудительно выбрать представление результирующей bump texture. Для гладких градиентов и сильного последующего lighting низкая точность может проявиться banding/ступенями.

Повышать Texture Depth автоматически до float32 не всегда разумно. Более высокая точность увеличивает стоимость хранения/обработки, а заметная польза зависит от source precision, slope amplitude и downstream renderer. Для большинства production-тестов float16 — хороший кандидат для сравнения, но не универсальная обязанность.

Texture Filtering Mode разделён на OpenGL LowQ/HiQ и Software LowQ/HiQ. Эти настройки управляют выборкой texture в соответствующем renderer/quality path и не заменяют Filter Size, который относится к построению bump из height data.

В текущем Inspector capture для OpenGL видны Nearest, Bilinear, Trilinear и Anisotropic. Nearest сохраняет жёсткую point-sampling структуру, Bilinear сглаживает соседние texels, а Trilinear/Anisotropic предназначены для более устойчивой выборки при minification и косых углах. Финальный выбор всегда проверяется на реальной геометрии и движении.

Для Software LowQ/HiQ текущий capture показывает Nearest, Bilinear и SAT. SAT — отдельный software filtering path, полезность которого особенно заметна при масштабировании/наклонённых текстурах; он не является прямым аналогом Anisotropic OpenGL один-в-один.

LowQ и HiQ — два разных quality tiers. Если Viewer и финальный software render выглядят по-разному, сначала проверьте, какой renderer/quality mode реально используется и какие filtering options назначены в соответствующей строке, а не пытайтесь компенсировать расхождение Height Scale.

Material ID присутствует в Inspector как common material control. Он имеет смысл только когда Renderer3D выводит MatID auxiliary channel. В сложной material-сети не полагайтесь на ID вложенной BumpMap как на финальный selection contract без live-проверки: production ID надёжнее задавать и контролировать на верхнем material/geometry уровне.

BumpMap меняет shading normals, поэтому результат почти невозможно качественно оценить без света. Плоская фронтальная подсветка может скрыть эффект, а боковой Spot/Directional light и умеренный specular делают ошибочный рельеф заметным гораздо быстрее.

Нода не меняет silhouette. Если край объекта должен физически стать волнистым, треснутым или объёмным, нужен displacement/реальная geometry. BumpMap предназначена для микрорельефа и оптической детализации поверхности.

UV coordinates принадлежат геометрии, а не BumpMap. Нода интерпретирует image и формирует material normals, но не исправляет плохую UV-развёртку, неправильный scale texture coordinates или швы от самого mapping объекта.

Правильная topology выглядит так: Image/Heightmap → BumpMap.Image → BumpMap.Material → Blinn/Phong.Bump Map Material → Geometry.Material → Merge3D → Renderer3D → RGBA. Попытка подключить Material output BumpMap в обычный Merge/MediaOut является ошибкой типа данных.

Пять bundled capture фиксируют текущий Controls UI: Source Image Type, Filter Size, Height Channel, Clamp Z Normal, Height Scale, Wrap Mode, Texture Depth, четыре renderer filtering controls и Material ID. Они являются evidence интерфейса текущей сборки; точное runtime-поведение на целевой машине всё равно проверяется live перед production preset/export.

Когда применять

  • Микрорельеф камня, бетона, металла, кожи, бумаги и пластика без дополнительной геометрии.

  • Царапины, поры, grain и embossed detail на Blinn/Phong-материалах.

  • Использование Fast Noise или procedural texture как heightmap.

  • Использование Alpha/Red/Green/Blue технической карты как отдельного height channel.

  • Преобразование готового CreateBumpMap output в 3D Material bump branch.

  • Сравнение packed bumpmap и heightmap workflows на одной surface.

  • Контроль border seam у tileable height maps через Wrap Mode.

  • Настройка renderer-specific texture filtering для OpenGL и Software paths.

  • Повышение precision bump texture через float16/float32 при проблемах banding.

  • Передача Material output в Blinn/Phong без изменения silhouette geometry.