Skills Up School

Нажмите ESC для закрытия

Арт окружения1 июня 2026 г.

Как создать насыщенные детали поверхности, как в Crimson Desert, используя силуэты POM

Создатель Surface Forge, ArghanionsPuzzlebox, объясняет, как воссоздать силуэты POM в духе Красной пустыни, самозатенение, исправить проблемы с UV-вращением и настроить рабочие процессы смещения для использования в Unreal Engine 5, готовые к производству.

−85%

Весенняя распродажа

Цены 2020 года

КурсыВидеоуроки
Ещё →
Как создать насыщенные детали поверхности, как в Crimson Desert, используя силуэты POM
Как создать насыщенные детали поверхности, такие как в Crimson Desert, используя силуэты POM — изображение 1

Один из наиболее визуально ярких аспектов популярного эпического экшена Pearl Abyss «Crimson Desert» — это не обязательно персонажи или окружение, а невероятное количество глубины, присутствующей почти на каждой поверхности в игре.

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

Первоначально вдохновлённый реализацией в «Crimson Desert» методов смещения в экранном пространстве, исследование переросло в более глубокое изучение того, чего всё ещё можно достичь с помощью современного Parallax Occlusion Mapping (POM) внутри Unreal Engine 5 в сочетании с правильным самозатенением, генерацией силуэтов и стратегиями оптимизации, ориентированными на производство.

В этом интервью ArghanionsPuzzlebox рассказывает о процессе исследования, стоящем за воссозданием эффекта силуэта в стиле «Crimson Desert» с использованием POM.

Что привлекло вас в реализации «Crimson Desert», и почему было интересно разобраться в этом?

Меня поразила огромная глубина на каждой поверхности в «Crimson Desert» и то, насколько богаче это сделало окружение. Это было не только на плоскостях земли или определённых поверхностях героев — это было везде, и выглядело стабильно. Создавалось впечатление трёхмерной геометрии, которая сохранялась под любым углом обзора, что сразу подсказало мне, что это не стандартное POM.

Такая масштабируемость и вызвала у меня любопытство. Обычно с геометрическим смещением бывает очень сложно работать в производстве, потому что его производительность нелинейна. У вас могут быть хорошо оптимизированные части меша, сидящие рядом с плохо оптимизированными частями, и нет простого способа предсказать, где стоимость резко возрастёт. В том, что делала «Crimson Desert», эффект выглядел для меня «экранным» — последовательным, предсказуемым и применяемым повсеместно. Я хотел понять, как это возможно, и смогу ли я добиться чего-то подобного.

Исследование сообщества позже подтвердило, что Black Space Engine от Pearl Abyss внутренне использует отображение смещения в экранном пространстве, что подтвердило мою интуицию. Но в процессе изучения я обнаружил, что у традиционного POM всё ещё есть неиспользованный потенциал — особенно в том, что касается силуэтов, самозатенения и обработки вращения UV-развёртки, — что стало основой Surface Forge.

Как создать насыщенные детали поверхности, такие как в Crimson Desert, используя силуэты POM — изображение 2

Где POM наиболее уместен в современном производственном конвейере?

POM находится в золотой середине между нормальными картами и геометрическим смещением. Нормальные карты дешёвые, но плоские — они не могут дать вам самозатенение, самозатенение или силуэты. Геометрическое смещение даёт вам всё это, но с непредсказуемо растущей сложностью меша. Стоимость POM рассчитывается на пиксель и предсказуема. Вы точно знаете, сколько вы платите — это количество шагов, умноженное на покрытие пикселя. Он не генерирует треугольники, не влияет на конвейер геометрии и не взаимодействует с системами LOD неожиданным образом.

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

Важно отметить, что POM и смещение Nanite не исключают друг друга. Они дополняют друг друга. Вы можете использовать Nanite для макрогеометрии, которая влияет на силуэты и ловит настоящий свет, а затем использовать POM для добавления мелких деталей самозатенения — тех глубоких тёмных расщелин и резких линий тени, которые обошлись бы в целое состояние в полигонах. Surface Forge 1.0 будет включать режим POM только для теней, специально разработанный для этого сочетания: Nanite обрабатывает геометрию, POM обеспечивает самозатенение.

Метод самозатенения — одна из областей, над которыми я потратил больше всего времени, и теперь он почти полностью исправлен и точен. Что делает его мощным инструментом художественного направления, так это уровень контроля, который он вам даёт. Интенсивность тени, мягкость полутени и чёткость шага — всё это регулируется независимо — полностью отделено от глубины смещения. Смещение Nanite даёт вам физически корректные тени от освещения сцены, что звучит хорошо на бумаге, но означает, что вы не можете независимо регулировать характер тени. С тенями POM вы можете управлять внешним видом так, как не может сравниться чистая геометрия.

Как создать насыщенные детали поверхности, такие как в Crimson Desert, используя силуэты POM — изображение 3

Какие основные проблемы возникают у разработчиков при работе с POM в Unreal Engine 5?

Первое, что упускают из виду большинство людей, — это самозатенение. Без него POM выглядит плоско — вы получаете смещение параллакса, но нет информации о тени, поэтому иллюзия глубины лишь наполовину реализована. Для настройки самозатенения требуется второй проход лучей в направлении света, который многие учебные пособия полностью пропускают.

Как только разработчики настраивают тени, следующей проблемой становится вращение. Если вы поворачиваете UV-координаты или сетку, направление тени меняется или указывает не туда. Это происходит потому, что направление света нужно поворачивать в касательном пространстве после преобразования из пространства мира в касательное, а не до этого. Это тонкое различие, но если ошибиться, ваши тени будут направлены в противоположную сторону при определённых поворотах. Я потратил много времени, чтобы отследить цепочку узлов и исправить это в Surface Forge.

Коррекция нормалей после вращения — ещё одна распространённая проблема — не строго проблема POM, но она сбивает с толку людей при настройке POM, особенно потому, что они уже имеют дело с повёрнутыми UV-координатами, и карту нормалей нужно повернуть, чтобы она соответствовала.

Что касается производительности, многие разработчики не осознают, что пошаговое сглаживание с помощью Temporal AA может значительно снизить затраты на пиксель. Вместо того чтобы выполнять 64 или 128 равномерных шагов для каждого пикселя, вы варьируете количество шагов на пиксель, используя шаблон дизеринга с добавлением некоторого случайного шума. Каждый отдельный кадр выглядит шумным при низком количестве шагов, но TAA накапливает результат в кадрах и преобразует его в плавное изображение. В итоге вы получаете визуальное качество с высоким количеством шагов при небольшой доле средних затрат на пиксель. Настроить это практически ничего не стоит — всего несколько узлов перед входом количества шагов.

Наконец, существует распространённое заблуждение о затухании на расстоянии. Люди предполагают, что линейная интерполяция интенсивности POM до нуля на расстоянии экономит производительность, но GPU всё равно выполняет каждую инструкцию в шейдере — он просто умножает результат на ноль. Чтобы реально повысить производительность, вам нужны отдельные экземпляры материалов со StaticSwitches, которые полностью компилируют путь POM. Затухание должно происходить на уровне детализации материала, а не внутри шейдера.

How to Create Rich Surface Details Like Crimson Desert Using POM Silhouettes - изображение 4

Чем ваш подход к созданию силуэтов отличается от традиционного POM технически?

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

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

Решение, к которому я пришёл, — работать в пространстве необработанных UV-координат сетки. Я беру вектор смещения POM, инвертирую его обратно в невращённое пространство, масштабирую его на обратную величину коэффициента масштабирования и затем проверяю, выходит ли он за фиксированные границы [0,1] UV-координат сетки. Это работает при любом угле поворота и любом значении масштабирования, потому что границы всегда [0,1] в этом пространстве. В результате получается силуэт, который естественно следует за смещением POM — высокие области меньше выходят за пределы, низкие области больше выходят за пределы — придавая сетке видимую толщину, а не плоский обрез.

How to Create Rich Surface Details Like Crimson Desert Using POM Silhouettes - изображение 5
How to Create Rich Surface Details Like Crimson Desert Using POM Silhouettes - изображение 6

Как это соотносится с тесселяцией, геометрией Nanite или другими рабочими процессами смещения?
У каждого подхода есть своё место. Смещение геометрии с помощью тесселяции или Nanite даёт вам физически правильные силуэты и реальное взаимодействие со светом, но затраты зависят от сложности сетки и их сложно предсказать. Стоимость POM — чисто пиксельная — она постоянна независимо от топологии сетки. Во многих случаях POM может быть более производительным, чем смещение, потому что вы не генерируете никакой геометрии; это просто операция пиксельного шейдера.

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

Существуют также случаи использования, с которыми геометрическое смещение просто не справится. Например, декали — вы не можете сместить геометрию через декаль, но POM на декале даёт вам глубину на любой поверхности, на которую вы проецируете. Это мощный инструмент для художников по окружению, которые хотят добавить детали, не изменяя основную сетку.

Смещение имеет явные преимущества для работы с артефактами угла обзора — реальная геометрия хорошо выглядит под экстремальными углами, где POM может начать показывать свои ограничения. Но если правильно обрезать и разместить POM в сценах, он может добавить беспрецедентную насыщенность, особенно когда самозатенение настроено правильно и направлено художником.

How to Create Rich Surface Details Like Crimson Desert Using POM Silhouettes - изображение 7

Какие ключевые моменты следует учитывать художникам по окружению при интеграции POM в свои проекты?

Качество карты высот на первом месте: качество POM зависит от карты высот, которая его формирует. Если карта высот имеет резкие переходы или создана без учёта глубины, никакое количество шагов не сделает её правильной. Гладкие градиенты с чёткой информацией о высоте дают чистое смещение и точные тени.

Используйте дизеринг количества шагов с TAA: не используйте везде 128 шагов. Меняйте количество шагов на пиксель, используя шаблон дизеринга, и позвольте Temporal AA обработать результат. Вы получите визуальное качество высокого количества шагов за небольшую часть стоимости на пиксель.

Сохраняйте консервативное соотношение высот: слишком большое смещение глубины — это самый быстрый способ разрушить иллюзию. Тонкое значение с хорошей интенсивностью тени выглядит гораздо убедительнее, чем агрессивное смещение, которое выявляет все артефакты. Пусть тени берут на себя основную работу по созданию глубины.

Расположение UV имеет значение для силуэтов: если вы хотите, чтобы обрезка силуэтов работала правильно при вращении и плитке, ваши сетки UV должны быть чистыми 0–1 на лицо. Перекрывающиеся UV или нестандартные макеты приведут к ошибкам проверки границ.

Используйте StaticSwitch для LOD, а не динамическое ветвление: затухание по расстоянию через lerp не экономит затраты на GPU — шейдер всё равно выполняет все инструкции и умножает результат на ноль. Разделяйте экземпляры материалов с помощью StaticSwitches, которые полностью компилируют POM на расстоянии — это единственный способ реально вернуть производительность.

Самозатенение — это то, что продаёт глубину: без теней POM выглядит плоским. Потратьте время, чтобы правильно настроить цепочку световых трассировок, убедитесь, что вращение обрабатывается в тангенс-пространстве, и используйте элементы управления полутенью и интенсивностью, чтобы направить тень с помощью искусства. Вот где POM превращается из технической демонстрации в производственный инструмент.

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

Автор: David Jagneaux