User Manual

Освещение на основе изображений

Для достижения наилучших результатов с физически-основанным рендерингом в PlayCanvas вы можете использовать технику, называемую Image Based Lighting или IBL, которая позволяет использовать предварительно отрендеренные данные изображения в качестве источника информации для окружающего и отраженного света.

Эта техника основана на CubeMap - карте окружения, состоящей из 6 текстур (граней), образующих куб для полного покрытия текстурой.

HDR

Данные изображения могут храниться в цветовом пространстве LDR или HDR (High Dynamic Range), что позволяет хранить более 0,0 до 1,0 (256 градаций) в одном канале. HDR позволяет хранить значения выше 1,0 (что считается "белым"), с комбинацией многих факторов окружения, таких как гамма-коррекция, тоновое отображение и экспозиция, это позволяет содержать больше деталей света и обеспечивает гораздо лучший контроль над качеством света и желаемыми результатами для художников.

HDR vs LDR CubeMap для Image Based Rendering Обратите внимание, как яркие части текстуры обрезаются с использованием LDR

Сохранение энергии

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

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

Кнопка Prefilter доступна на активе CubeMap в Inspector, ее обязательно нужно включить для IBL на физических материалах с использованием CubeMap.

Создание карт окружения

Карты окружения представлены в разных проекциях: эquirectangular, CubeMap (список граней), азимутальные и многие другие. WebGL и GPU работают со списком граней - набором из 6 текстур, представляющих стороны куба - CubeMap. Таким образом, карта окружения должна быть преобразована в 6 текстур, если она представлена в любой другой проекции.

Для преобразования между проекциями можно использовать различные инструменты, одним из них является кросс-платформенный инструмент с открытым исходным кодом для фильтрации CubeMap: cmftStudio.

CubeMaps могут быть отрендерены с использованием CGI или собраны из фотографий, и существуют сайты для загрузки/покупки HDR карт окружения. Некоторые хорошие источники для экспериментов могут быть: sIBL Archive, No Emotion HDR's, Open Footage, Paul Debevec. Карты окружения могут быть представлены в проекции equirectangular и конвертированы с помощью вышеупомянутого cmftStudio.

Рендеринг CubeMap

CubeMap состоит из 6 граней, каждая из которых представляет квадратную сторону куба, проще говоря: его можно отрендерить с использованием камеры с квадратным видовым экраном, поворачивая ее в разных направлениях на 90 градусов с углом обзора 90 градусов.

Грани CubeMap

Вы можете использовать популярные инструменты 3D-моделирования или программное обеспечение для фотографии и 360-градусных изображений. Они должны быть отрендерены в линейном гамма-пространстве и без цветовых коррекций, описанных в разделе Гамма-коррекция Lightmapping.

Один из плагинов для 3D Studio Max, таких как этот, может быть использован для рендеринга граней VRay CubeMap, готовых для загрузки в редактор PlayCanvas.

Применение IBL

Это можно сделать двумя способами:

  1. Использовать CubeMap в качестве Skybox в настройках сцены.
  2. Использовать CubeMap в качестве карты окружения на материале напрямую.

Box Projection Mapping

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

Material CubeMap Box Projection

Пример

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

Environment Box Projection Mapping

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

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