Почему карта нормалей накладывается криво в blender
Перейти к содержимому

Почему карта нормалей накладывается криво в blender

  • автор:

Узел «Карта нормале黶

The Normal Map node generates a perturbed normal from an RGB normal map image. This is usually chained with an Image Texture node in the color input, to specify the normal map image. For tangent space normal maps, the UV coordinates for the image must match, and the image texture should be set to Non-Color mode to give correct results.

Входы¶

Сила Сила эффекта от карты нормалей. Цвет Цвета в цветовом пространстве RGB, кодирующие нормаль в указанном пространстве.

Свойства¶

Пространство Входные RGB-цвета могут быть в одном из трёх пространств: «Касательном», «Пространстве объекта» и «Пространстве мира». Карты нормалей в касательном пространстве наиболее распространены, поскольку они поддерживают преобразование объекта и деформацию полисетки. Карты нормалей в пространстве объекта продолжают оставаться привязанными к поверхности объекта после его трансформации, в то время как карты нормалей в пространстве мира – нет. UV-разметка Имя UV-разметки, из которой берутся касательные накладываемых нормалей. Когда узел соединён с узлом «Изображение-текстура», эта UV-разметка должна быть такой же, как и та, что используется для наложения текстуры.

Blender — Заметка о запекании нормалей. Baking normals.

      1. Убедиться, что выбран Cycles Render.
      2. Создать базовую текстуру в UV/Image Editor:
      3. В появившемся окне настроить параметры:
        Name — любое. Width , Height — кратное степени двойки (512х512, 1024х1024 и т.д.). Размер лучше выставлять в два раза больший, чем целевое разрешение. Это связано с тем, что уменьшение текстуры под целевое разрешение в растровом 2 D редакторе даёт существенно меньше искажений, чем запекание напрямую. Color — любой. Позже он будет заменён на содержимое запечённой текстуры нормали. Alpha — отключить, не требуется в большинстве случаев. Generated Type — Blank, если нужна просто текстура нормали. 32bit float — включить глубину цвета 32-бит, что позволит сохрани ть в формат .exr (32-бит). Этот формат будет промежуточным, потом можно пересохранить в .tif ( 16-бит) . Высокая глубина цвета == п овышенная точность, которая даст запас для сглаживания и снижения разрешения без существенных искажений.
      4. Для низкополигональной модели создать материал с обязательным наличием нода Image Texture . Без него процесс запекания не запустится. Подключить в него ранее созданную в UV/Image Editor «пустую» текстуру. В настройках нода вместо Color выбрать Non-Color Data, что необходимо для текстур нормалей.
      5. Настроить параметры запекания в Properties / Render / Bake.Bake Type — выбрать Normal.
        Space — выбрать Tangent.
        Swizzle — если под OpenGL , то оставить как есть, если под DX, то выбрать — Y-.
        Margin — «обводка» по границе UV- острова на запечённой текстуре. Служит для избежания «вылезания» фона текстуры при переключении mip- уровней. Для разрешения 4096х4096 достаточно 16-24 пикселей, для 2048х2048 — 8-12 пикселей. Само собой, между UV- островами и границами UV- пространства должно быть достаточное расстояние, чтобы не было наслоения.
        Clear — включить.
        Selected to Active — запечь информацию с выделенного объекта на активный. В данном примере сначала будет выделена высокополигональная модель, а потом к выделению добавится низкополигональная.
        Cage — использовать дополнительную модель, охватывающую активный объект (модель, на которую производится запекание), из которой будут испускаться лучи. В данном случае применять не будем.
        Ray Distance — подобрать значение, при котором не будет артефактов запечки, при условии, что всё в порядке с моделями и развёрткой. Пробовать значения от 0,05 — 0,1.
      6. У низкополигональной модели должна быть сделана развёртка.
      7. Нормали вершин должны быть настроены (применено сглаживание, обозначены жёсткие рёбра).
      8. Сначала выделить высокополигональную модель, а потом добавить в выделение низкополигональную. Главное не перепутать.
      9. В Properties / Render / Bake нажать Bake . Первый рендер может быть относительно долгим.
      10. Результат будет отображён в UV/Image Editor . На вид с нормалью что-то не так, но не стоит спешить с решением этой «проблемы».
        Ещё бывает, что с нормалью всё совсем не так:
        В данном случае жёлтый цвет указывает, что лучи не пропекли геометрию. Необходимо проверить длину лучей ( Ray Distance) или корректность Cage, если применяется.
      11. Перед какими-либо манипуляциями с результатом необходимо его сохранить в файл, иначе он будет потерян и придётся запекать повторно. Сохранить результат можно с помощью F3 или Image / Save As Image . Сначала нужно сохранить в .exr (32- бит), иначе будут проблемы с переключением в цветовое пространство sRGB.
      12. После сохранения стоит обратить внимание, что в N-панели UV/Image Editor в выпадающем списке Source вместо Generated стало Single Image и появился путь до сохранённой текстуры:
      13. Теперь можно исправить «проблему». Заключается она в цветовом пространстве ( Color Space ). После сохранения в . exr оно переключается на Linear. В N-панели UV/Image Editor, в выпадающем списке Color Space переключить с Linear на sRGB. Теперь текстура нормали отображается привычным образом.
      14. Теперь нужно вновь пересохранить в «исправленном» виде сначала в .exr , а потом можно .tif (16-бит). В формате .exr текстура нормали не будет работать корректно в Cycles, поэтому нужно пересохранить в формат «попроще». 16-бит точности в формате .tif будет достаточно.
        Итоговый результат в Krita:

Это норма — 4: решение проблем с картами нормалей

image

Это четвёртая часть туториала о картах нормалей, но она независима от остальных частей и её можно читать отдельно.

Здесь я перечисляю проблемы карт нормалей, с которыми я сталкивался за годы работы, и некоторые решения, позволяющие их устранить.

Проблема: на рёбрах модели присутствуют «чёрные линии» или «вставки»

image

Такое происходит, когда у модели есть резкие рёбра (hard edges), поскольку вершины модели имеют нормали, полностью перпендикулярные поверхности полигона, из-за чего программа запекания может пропустить некоторые детали (оставляя на модели чёрные линии).

image

Решение: программы запекания карт нормалей учитывают эту проблему при создании карт нормалей и пытаются снизить её влияние, вычисляя немного больше информации за нормалями вершин, но чтобы сохранить её, им нужен зазор между UV-развёртками полигонов.

Здесь есть более подробное объяснение, но на практике правило довольно простое: когда на модели есть резкое ребро, нужно отделять в UV соединённые им грани.

Проблема: карта нормалей выглядит СОВЕРШЕННО неправильно, особенно под некоторыми углами

Эта проблема может возникать по множеству причин. Давайте обсудим некоторые из них:

    Вы используете неправильное касательное пространство: нормали вашей lowpoly-модели, которые мы пытаемся модифицировать при помощи карты нормалей, могут вычисляться в программе запекания иначе, нежели в программе, использованной для рендеринга модели. Если эти вычисления отличаются, карта нормалей может выглядеть очень странно, особенно под некоторыми углами.

Также возможно, что вы используете в качестве карты нормалей касательного пространства карту нормалей мирового пространства. В таком случае убедитесь, что вы выполняете запекание карты нормалей касательного пространства, и используете её в этом качестве.

Проблема: как мне создать карту нормалей острого конуса?

Решение: вам это… не нужно. Не обязательно создавать карты нормалей для всего. Острый конус — классический пример этого, но существует множество других случаев, когда карты нормалей не являются решением.

image

Мы используем карты нормалей для изменения направления нормалей lowpoly-моделей. Иногда направление нормалей правильно и не требует никаких изменений, а иногда нормали lowpoly чрезвычайно повёрнуты (как в случае острого шипа) и детали из highpoly-модели неправильно сопоставляются с поверхностью lowpoly-модели. В таких случаях я просто удаляют детали карты нормалей при помощи такого цвета:

image

Этот цвет на 50% красный, на 50% зелёный и на 100% синий, и он не меняет направления нормалей карты нормалей касательного пространства, поэтому можно использовать его для удаления деталей в местах с неудачной проекцией.

Острый конус — это просто пример одного из случаев, когда карты нормалей могут не решить ваших проблем. Важно здесь помнить, что в некоторых случаях карта нормалей не является наилучшим решением, её возможности ограничены и мы не можем ожидать, что они будут вести себя так, как нам нужно, в любой ситуации. Иногда мы тратим много времени, пытаясь заставить работать карту нормалей, когда можно было бы просто добавить деталей в diffuse-текстуру или в lowpoly, а не пытаться передать деталь при помощи карты нормалей.

Проблема: детали на моей модели выглядят вывернутыми.

Это очень распространённая проблема, и её можно наблюдать во многих видеоиграх, даже AAA-уровня.

Как мы видели в этом туториале [перевод на Хабре], карты нормалей — это текстуры, использующие зелёный, красный и синий каналы для изменения способа отражения света от поверхности модели, когда он падает соответственно сбоку, сверху и спереди модели (помните, что это упрощённое объяснение и оно верно не на 100%).

image

Проблема в том, что некоторые приложения считают, что зелёный канал должен показывать модель как освещённую снизу, а другие считают, что он должен показывать модель как освещённую сверху. Иногда это называют «правостороннесть карты нормалей» (normal map right-handiness):

  • OpenGL-приложения (правосторонние, положительный зелёный канал): Blender, Maya, Modo, Toolbag, Unity.
  • DirectX-приложения (левосторонние, отрицательный зелёный канал): 3DStudio Max, CryEngine, Source Engine, Unreal Engine.
  • Substance Painter может работать с обоими типами и экспортировать оба типа карт нормалей.

Проблема: некоторые части кажутся плоскими/в них отсутствуют какие-то детали

Представьте, что при запекании карт нормалей программа запекания испускает лучи из поверхности lowpoly-модели, следуя по нормалям lowpoly, пока лучи не пересекутся с highpoly-моделью и не повернутся. После этого программа запекания берёт эту информацию и сохраняет её в карту нормалей.

Эти испущенные лучи не должны двигаться бесконечно, потому что могут столкнуться с далёкой частью highpoly и повернуться неправильно, поэтому программа запекания ограничивает дальность испускания лучей и иногда лучи могут останавливаться прежде, чем успеют пересечься с highpoly. В таком случае мы теряем детали и карта нормалей имеет области плоского цвета.

image

Решение: зависит от того, как программа запекания позволяет управлять расстоянием запекания:

  • Некоторые программы ищут детали только снаружи lowpoly и игнорируют то, что находится «внутри» lowpoly-модели (однако большинство современных программ запекания выполняет поиск в обоих направлениях). В таком случае нужно модифицировать модели так, чтобы lowpoly полностью находилась внутри highpoly.
  • Другие программы, например Max, используют клетку (cage) — «экструдированную» версию lowpoly, которую можно изменять для точного управления границами процесса запекания.
  • Другие программы позволяют задавать расстояние запекания числом (в Substance Painter это max frontal/rear distance).

Проблема: карта нормалей имеет искажённые детали

Это очень типичная проблема. Такое происходит, когда нормали lowpoly неправильно соответствуют деталям highpoly, поэтому кажутся наклонёнными (на самом деле, если смотреть на них с направления нормалей вершин, они соответствуют идеально). Такое обычно происходит, когда некоторые грани образуют очень острый угол.

image

Решение: я более подробно писал об этой теме в другом туториале [перевод на Хабре], но в целом решения бывают такими:

  • Сгладьте острый угол, добавив фаску (bevel).
  • Преобразуйте ребро острого угла в резкое ребро (hard edge)/разделите грани на разные группы сглаживания (smoothing group).
  • Используйте настраиваемые нормали (custom normals)/весовые нормали (weighted normals).

Проблема: карта нормалей выглядит пикселизированной или содержит полосы

Earthquake (AKA бог карт нормалей) написал очень хорошее объяснение этой проблемы.

Если lowpoly и highpoly очень похожи, то бОльшая часть карты нормалей будет иметь один базовый цвет карты нормалей, а другими цвета будут в местах отличия lowpoly от highpoly.

Если ситуация обратная: lowpoly и highpoly очень отличаются, то карта нормалей будет иметь гораздо большее разнообразие цветов и начнут возникать градиенты:

image

Такие плавные градиенты вызывают проблемы, потому что для их представления нужно множество цветов, а самые распространённые способы сжатия текстур основаны на снижении общего количества цветов.

  • Сделайте lowpoly более похожей на highpoly: благодаря этому карте нормалей придётся делать меньше работы и она будет более похожей на первое изображение, что позволит избежать больших и плавных градиентов. Также может помочь изменение нормалей lowpoly, чтобы они лучше соответствовали highpoly.
  • Используйте 16-битные карты нормалей: по умолчанию в большинстве изображений используется 8-битная глубина цвета. Это значит, что каждый канал цвета текстуры может использовать 8 разных значений (0 или 1). Для всех трёх каналов цвета это даёт нам 256 возможных цветов.

При наличии плавных градиентов мы можем замечать на модели полосы, потому что изображение не имеет достаточного количества цветов для представления такого небольшого изменения цвета.

image

16-битные значения могут использовать 16 различных битовых значений на каждый канал, что составляет 65536 возможных цветов. Это означает, что диапазон плавных градиентом может быть больше. Учтите, что 16-битные изображения больше по размерам, чем 8-битные (потому что содержат больше информации). Кроме того, иногда 16-битные изображения содержат альфа-канал; тогда они называются 24-битными изображениями. [Прим. пер.: тут у автора очевидная ошибка.]

image

Проблема: на отдельных частях модели заметны пиксели

Очевидным решением будет увеличение UV-«острова» (island) этой части модели или использование более крупных текстур, но давайте рассмотрим и менее очевидные решения:

    Запекайте с удвоенным разрешением карты нормалей, а затем уменьшайте размер изображения: если вы используете текстуру 512×512, то запекайте карту нормалей с разрешением 1024×1024, а затем преобразуйте изображение в 512×512. Благодаря этому каждый пиксель окончательной текстуры будет получать информацию от четырёх пикселей, создавая своего рода «сглаживание» (antialiasing) и снижая пикселизацию. Это также справедливо и для других запечённых изображений; кроме того, стоит сохранять версии текстур высокого разрешения на случай, если позже вам захочется увеличить детали в некоторых областях.

image

image

image

При применении к модели симметрии направления нормалей могут измениться из-за того, что изменился способ соединения граней. Иногда это означает, что можно получить шов прямо по центру модели. Чтобы избежать этого, сделайте так, чтобы нормали lowpoly в самом центре были выровнены, и при необходимости настройте сглаживание.

Ещё одна возможная причина — триангуляция: при импорте моделей в игровой движок они всегда триангулируются и иногда этот процесс может изменить нормали lowpoly, а по диагоналям граней lowpoly могут появиться артефакты. Чтобы избежать этого, триангулируйте модель перед запеканием, запеките карту нормалей, а затем примените модификатор симметрии.

Кроме того, вы можете изучить небольшой туториал Earthquake, который помог мне немного больше понять нормали вершин и карты нормалей.

Дополнительную информацию о картах нормалей можно узнать из wiki сайта Polycount.

  • карты нормалей
  • 3d-моделирование
  • запекание нормалей
  • 3d-редакторы
  • игровые движки
  • normal mapping

Почему карта нормалей накладывается криво в Blender

ishyfaq.ru

Blender — это популярное программное обеспечение для моделирования и анимации 3D. Оно предоставляет широкие возможности для создания реалистичных сцен и объектов. Однако, при работе с картами нормалей, пользователи иногда сталкиваются с проблемой неправильного наложения.

Нормалей карты представляют собой изображения, которые используются для придания детализации и реалистичности поверхности объекта. Они содержат информацию о направлении поверхности в каждой точке и позволяют добавить визуальные эффекты, такие как рельефность, текстурирование и отражение света.

Одна из возможных причин проблемы с наложением карты нормалей в Blender — это неправильная нормализация или масштабирование. Когда значение нормали превышает 1 или уходит в отрицательный диапазон, это может привести к искажению результатов. Для исправления проблемы необходимо правильно настроить параметры нормального отображения и размера текстуры.

Еще одной причиной неправильного наложения карты нормалей может быть неправильное использование UV-развертки. UV-развертка — это процесс создания 2D-проекции 3D-объекта, которая позволяет наложить текстуру или карту нормалей на поверхность объекта. Неверно настроенная UV-развертка может привести к неправильному применению карты нормалей и искажению визуальных эффектов.

Проблемы с накладыванием карты нормалей в Blender

Blender – это мощный инструмент для создания и анимации трехмерных объектов. Однако, при работе с картами нормалей, пользователи могут столкнуться с определенными проблемами, которые могут затруднить процесс создания реалистичных 3D моделей.

Карта нормалей представляет собой текстурное изображение, которое используется для добавления текстурных деталей и реалистичной освещенности на поверхность объекта. Она содержит информацию о направлении каждой нормали на поверхности, позволяя создавать эффект объемности, даже если геометрия объекта не содержит достаточно деталей.

Одной из распространенных проблем при накладывании карты нормалей в Blender является неправильное отображение текстуры на объекте. Это может быть вызвано несколькими факторами:

  • Неправильное наложение координат. При накладывании карты нормалей важно убедиться, что координаты текстуры правильно соответствуют геометрии объекта. Если координаты наложения текстуры неправильно заданы, это может привести к искажениям и неправильному отображению на поверхности объекта.
  • Недостаточная разрешающая способность. Если разрешение карты нормалей слишком низкое, то детали и текстурные особенности могут быть потеряны или искажены при накладывании. Рекомендуется использовать карты с достаточно высоким разрешением, чтобы сохранить детали и качество изображения.
  • Неправильная настройка материала. В Blender существует множество параметров для настройки материала объекта, влияющих на отображение текстур и освещенность. Неправильная настройка таких параметров, как отражение, отражаемость, пропускание света и другие, может привести к неправильному отображению карты нормалей.

Для исправления проблем с накладыванием карты нормалей в Blender рекомендуется:

  1. Проверить и правильно настроить координаты текстуры, убедиться в соответствии с геометрией объекта.
  2. Использовать карты нормалей с высоким разрешением для сохранения деталей.
  3. Правильно настроить материал объекта, учитывая параметры, которые могут повлиять на отображение карты нормалей.

Обратите внимание, что проблемы с накладыванием карты нормалей в Blender могут возникать из-за различных факторов, поэтому важно провести тщательный анализ и экспериментировать с настройками, чтобы добиться желаемого результата. Возможно, потребуется также использование дополнительных инструментов и плагинов для улучшения процесса накладывания и обработки карт нормалей.

Ошибка при создании карты нормалей в Blender

Карта нормалей — это текстура, которая используется для придания объектам визуального объема и текстуры. Ошибки при создании карты нормалей в Blender могут возникать по разным причинам и могут приводить к неправильному отображению визуальных эффектов или искажениям в модели.

Ниже приведены некоторые распространенные ошибки, которые могут возникать при создании карты нормалей в Blender:

  • Неправильное размещение осветления: Если осветление в сцене или объекте неправильно настроено, это может привести к неправильному отображению карты нормалей. Убедитесь, что освещение в сцене настроено правильно.
  • Неправильная настройка карты нормалей: Параметры карты нормалей могут быть неправильно настроены, что может вызывать искажения в отображении. Убедитесь, что вы правильно настроили параметры карты нормалей, такие как сила и интенсивность.
  • Неправильная ориентация UV-развертки: Если объект имеет неправильно развернутые UV-координаты, это может привести к искажениям в отображении карты нормалей. Убедитесь, что UV-развертка объекта правильно настроена.
  • Низкое разрешение текстуры: Низкое разрешение текстуры может привести к размытию или пикселизации на карте нормалей. Рекомендуется использовать текстуры с высоким разрешением для получения более качественных результатов.

Для исправления этих ошибок рекомендуется внимательно проверить настройки освещения, параметры карты нормалей и ориентацию UV-развертки. Также рекомендуется использовать текстуры с высоким разрешением для получения лучшего качества отображения карты нормалей.

Исправление ошибок при создании карты нормалей в Blender позволит достичь более реалистичного и качественного визуального представления объектов в сцене.

Процесс наложения карты нормалей в Blender

Blender — это программное обеспечение для создания 3D-моделей, анимации и визуализации. Одной из основных функций Blender является возможность наложения карты нормалей на объекты, чтобы добавить им детали и текстуры. Ниже представлен процесс наложения карты нормалей в Blender.

  1. Подготовка модели: Сначала необходимо импортировать модель в Blender или создать ее с нуля. Затем убедитесь, что модель открыта в виде редактора 3D-вида.
  2. Создание карты нормалей: Для создания карты нормалей существует несколько методов. Один из них — использование блока «Текстуры» во вкладке «Свойства» (Properties) на боковой панели. Здесь вы можете добавить новую текстуру и выбрать тип «Normal» (Нормальные). Используйте текстурный слот для загрузки файла с картой нормалей.
  3. Настройка параметров: После добавления карты нормалей вам может понадобиться настроить некоторые параметры. В блоке настройки текстур вы можете изменить масштаб, поворот и другие настройки, чтобы достичь желаемого эффекта.
  4. Применение карты нормалей к модели: Чтобы применить карту нормалей к модели, перейдите в раздел «Материалы» (Materials), найдите текстурный слот, в котором находится карта нормалей, и перетащите его на модель.
  5. Отрисовка модели: После наложения карты нормалей на модель вы можете приступить к ее отрисовке. В разделе «Рендер» (Render) вы можете выбрать тип отрисовки и настроить параметры визуализации.

Это основные шаги, которые следует выполнить для наложения карты нормалей в Blender. Однако, в зависимости от сложности проекта, могут потребоваться дополнительные шаги и настройки.

Вопрос-ответ

Почему у меня при накладывании карты нормалей в Blender происходит искажение изображения?

Если при накладывании карты нормалей в Blender происходит искажение изображения, это может быть вызвано несколькими причинами. Во-первых, убедитесь, что ваша карта нормалей правильно настроена и соответствует требованиям программы. Во-вторых, проверьте настройки материала и текстуры объекта, чтобы убедиться, что они правильно работают с картой нормалей. Наконец, убедитесь, что ваши UV-координаты правильно настроены и соответствуют форме объекта. Если все эти шаги не помогли решить проблему, возможно, у вас есть баг в программе, и стоит обратиться к разработчикам Blender за помощью.

Как исправить неправильное накладывание карты нормалей в Blender?

Если в Blender неправильно накладывается карта нормалей, есть несколько способов исправить эту проблему. Во-первых, убедитесь, что ваша карта нормалей правильно создана и настроена. Проверьте ее режим смешивания, настройки освещения и другие параметры. Во-вторых, убедитесь, что настройки материала и текстуры объекта правильно работают с картой нормалей. Попробуйте изменить настройки материала и текстуры, чтобы достичь желаемого результата. Наконец, проверьте настройки UV-координат объекта, чтобы убедиться, что они правильно соответствуют форме объекта. Если все эти шаги не решают проблему, возможно, стоит обратиться к сообществу Blender за помощью.

Как наложить карту нормалей правильно в Blender?

Для правильного накладывания карты нормалей в Blender следуйте нескольким шагам. Во-первых, убедитесь, что ваша карта нормалей правильно создана и настроена. Проверьте ее формат и режим смешивания. Во-вторых, настройте материал и текстуру объекта так, чтобы они правильно работали с картой нормалей. Измените настройки материала и текстуры, если это необходимо. Наконец, проверьте и настройте UV-координаты объекта, чтобы они правильно соответствовали его форме. Если вы все правильно настроили, ваша карта нормалей должна быть накладывается на объект правильно и без искажений.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *