Bump Map
рельеф материала из height/bump-карты
BumpMap принимает одну 2D-карту, интерпретирует её как heightmap либо packed bumpmap и выдаёт 3D Material с texture-space normals для Bump Map-входа Blinn/Phong и других material-нод.
2D RGBA image: grayscale/color heightmap, техническая карта с высотой в отдельном channel либо уже подготовленная packed 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.
BumpMap в контексте
Скриншоты из статьи. Откройте изображение, чтобы рассмотреть его крупнее.
Пример для BumpMap.
Оригинальное изображениеПример для BumpMap.
Оригинальное изображениеПример для BumpMap.
Оригинальное изображениеПример для BumpMap.
Оригинальное изображениеПример для BumpMap.
Оригинальное изображение