User Manual

Световые карты

PlayCanvas Lightmapping Освещение в этой сцене реализовано с использованием текстур Lightmap и AO, а также Box Projected IBL (отражения)

Здесь ссылка на финальную сцену и проект, которые используют эти техники для достижения результатов на изображении выше: внешние HDR Lightmaps (описаны на этой странице ниже), Ambient Occlusion и HDR Cubemap, применяемые с использованием Box Projection с использованием техники Image Based Lighting для достижения реалистичных отражений.

Обзор

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

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

На этой странице приведены подробности и лучшие практики по рендерингу световых карт из внешних инструментов.

Генерация внешних световых карт

Многие инструменты для работы с 3D-контентом имеют возможность генерировать текстуры световых карт. Например, 3ds Max, Maya, Blender и другие инструменты имеют возможность выпекать световые карты в текстуры. Преимущества использования оффлайн-инструмента для генерации световых карт заключается в том, что вы можете использовать очень сложные расчеты освещения, такие как Global Illumination для отраженного света, мягкие тени, окружающее затенение и т. д. Основным недостатком является то, что вы должны иметь полное представление о вашей сцене внутри 3D-инструмента. Таким образом, если ваша сцена PlayCanvas состоит из множества экземпляров, размещенных в редакторе, вам нужно воссоздать это в вашем инструменте для создания световых карт.

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

Инструменты

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

Гамма-коррекция

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

В 3ds Max эту опцию (Enable Gamma/LUT Correction) следует отключить, она находится в настройках предпочтений (Customize > Preferences):

3ds Max > Preferences > Linear Space

Затем убедитесь, что обновлено цветовое отображение. Оно находится в настройках рендера (F10 или из окна Render to Texture). Вывод не должен быть зажат и не обрабатываться после рендеринга (опция Mode), для линейного цветового пространства следует использовать Linear Multiply. Вот скриншот того, какие опции должны быть установлены на какие значения, нажмите кнопку "Default", чтобы раскрыть настройки на "Expert":

3D's Max > Render Settings

UV-развертка

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

Простая геометрия

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

Советы по световым картам: простая геометрия

Постоянный размер текселя

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

Советы по световым картам: UV постоянный размер текселя

Неперекрывающиеся UV

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

Lighmapping Tips: Non-overlapping UV

Другие советы

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

  1. Отключите нормальные карты на материалах - микродетали поверхности слишком малы, чтобы быть актуальными в текстурах карты освещения.
  2. Установите Reflection на 0 и Отключите Gloss Maps на материалах - отражение может привести к каустике и сложностям для рендереров, что приводит к визуальным артефактам. В целом, карты освещения должны содержать только диффузное освещение, а отражательность должна быть реализована с использованием некоторой техники выполнения.
  3. Очень темные материалы не дадут хороших результатов, так как они не отражают свет и не помогут глобальной иллюминации.
  4. В окне Render To Texture (см. ниже) установите Padding на большее значение.
  5. Свет может просачиваться из-за геометрии, добавьте блокирующую геометрию, чтобы предотвратить свет.

Lighmapping Light Leaking

Render To Texture

Чтобы получить данные об освещении из инструмента моделирования, мы хотим отобразить данные о свете в текстуру. Мы можем указать разрешение и формат для этого.

В 3ds Max это делается с помощью окна Render To Texture. Где Padding должен быть установлен на большее значение; выбран 2-й канал UV; и профиль вывода в зависимости от вашего рендерера, на скриншоте ниже используется VRayRawTotalLightingMap.

Render To Texture: PlayCanvas Lightmapping

Шум

В зависимости от качества и времени рендеринга в некоторых ситуациях данные об освещении на выходе могут быть неидеальными и страдать от шума. Это легко решается путем применения некоторого размытия к изображению, которое не размоет края в текстуре, но сгладит плоские участки. В Photoshop это делается с помощью фильтра Surface Blur:

Lightmapping: Photoshop > Surface Blur

Загрузка в редактор

На этом этапе у вас есть геометрия со вторым каналом UV (UV1) и текстуры HDR карты освещения, и пришло время загрузить их в вашу сцену PlayCanvas и настроить материалы. Это делается путем перетаскивания файлов или с помощью кнопки загрузки в панели ассетов. После загрузки вашей геометрии она автоматически сгенерирует материалы. Для каждого материала, для которого отображается карта освещения, вам нужно установить текстуру карты освещения. Просто выберите все необходимые материалы и перетащите или выберите текстуру карты освещения для слота Lightmap.

PlayCanvas Editor: Material Lightmap Texture Slot

Заключительные замечания

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

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

This site is translated by the community. If you want to get involved visit this page