Освещение, тени и фон

Типы затенения

Результат расчета освещения (затенения) зависит от направления векторов нормалей. Поддерживаются стандартные типы затенения, использующиеся в Blender, Shading: Flat (используются нормали граней) и Shading: Smooth (используются интерполированные нормали вершин), а также их комбинации.

_images/flat_smooth_shading.png

Если желаемый результат недостижим стандартными средствами, можно воспользоваться редактором нормалей.

Результат применения различных типов затенения и использования редактора нормалей:

_images/different_shadings_comparison.png
  1. Flat Shading
  2. Smooth Shading
  3. Smooth Shading + фаска

  4. Smooth Shading + фаска + редактирование нормалей

Освещение от источников света

На сцене может быть несколько (но не менее одного) источников света разного типа.

Типы источников света

Поддерживаются источники света следующих типов:

Point

Точечный. Свет распространяется из одной точки равномерно во все стороны, с постепенным затуханием.

Sun

“Солнце”. Свет распространяется из бесконечной плоскости прямолинейно в одном направлении, без затухания.

Spot

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

Hemi

Полусфера. Свет распространяется из бесконечной полусферы, без затухания.

Настройка источников света

Производится во вкладке Object Data при выборе объекта-лампы.

_images/lighting_setup.png

Цвет

Цветовая характеристика света. Значение по умолчанию (1.0, 1.0, 1.0) (белый).

Energy

Интенсивность излучения. Значение по умолчанию 1.0.

Falloff

Тип затухания. Значение экспортируется, но в движке всегда используется Inverse Square (обратный квадратичный). Применяется для источников света типа Point и Spot. Значение по умолчанию Inverse Square.

Distance

Параметр затухания. Применяется для источников света типа Point и Spot. Значение по умолчанию 30.0.

Specular

Создание отблеска на объектах. По умолчанию включено.

Diffuse

Применение рассеянного освещения к объектам. По умолчанию включено.

Spot Shape > Size

Угол конуса в градусах. Применяется для источников света типа Spot. Значение по умолчанию 45º.

Spot Shape > Blend

Параметр смягчения края светового пятна. Применяется для источников света типа Spot. Значение по умолчанию 0.15.

Dynamic Intensity

Источник света используется для расчета изменения времени суток. Применяется для источников света типа “Солнце”. По умолчанию отключено.

Shadow > Shadow

Источник света используется для расчета падающих теней. Применяется в случае наличия нескольких источников света. По умолчанию отключено.

Shadow > Clip Start

Расстояние между источником света и ближней плоскостью отсечения. Используется при генерации теней. Значение по умолчанию - 1.001.

Shadow > Clip End

Расстояние между источником света и дальней плоскостью отсечения. Используется при генерации теней Значение по умолчанию - 30.002.

Освещение от окружающей среды

Движок поддерживает 3 метода симуляции рассеянного освещения от окружающих объектов.

  1. “Плоское” освещение белым цветом.

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

  3. Освещение с помощью карты окружения - т.н. методика image-based lighting.

Активация

Включить опцию Environment Lighting во вкладке World.

_images/lighting_environment.png

Настройка

World > Environment Lighting > Energy

Интенсивность освещения от окружающей среды. Значение по умолчанию 1.0.

World > Environment Lighting > Environment Color

Выбор метода симуляции рассеянного освещения: White - “плоское” освещение белым цветом, Sky Color - полусферическая модель , Sky Texture - освещение с помощью карты окружения. Значение по умолчанию White.

World > Horizon Color и World > Zenith Color

Если выбрана полусферическая модель рассеянного освещения Sky Color, цвет горизонта и цвет зенита задаются цветоподборщиками World > Horizon Color (цвет горизонта) и World > Zenith Color (цвет зенита). При выборе цвета рекомендуется активировать опцию World > Blend Sky.

Использование карты окружения

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

  1. Включить опцию Environment Lighting во вкладке World.

  2. Выбрать метод Environment Lighting > Sky Texture.

  3. Перейти из вкладки World во вкладку Texture.

  4. Создать карту окружения, загрузить в нее соответствующее изображение.

  5. Для карты окружения на панели Export Options для значения Sky Texture Usage выбрать ENVIRONMENT_LIGHTING или BOTH (опция BOTH активирует также использование этой текстуры в качестве текстуры неба).

_images/lighting_environment_texture.png

Тени

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

Платформой Blend4Web реализуются такие техники, как каскадные карты теней (CSM) и смягченные тени (PCF).

Генерировать тени могут не более четырёх (или трёх, если включен SSAO) источников света одновременно. Если источников света больше (и у всех включён параметр Shadow), будут видны тени только от четырёх из них.

_images/lighting_multiple_shadows.png

Активация

  1. На объектах, отбрасывающих тени, включить опцию Shadows: Cast во вкладке Object.

  2. На объектах, получающих тени, включить опцию Shadows: Receive во вкладке Object.

  3. Убедиться, что включена опция Shadows AUTO или ON во вкладке Render.

Примечание

Объекты, имеющие прозрачные материалы с градиентом, не отбрасывают теней.

_images/alpha_shadows.png

Настройка

Направление

В случае наличия нескольких источников света рекомендуется указать, какой именно источник света будет использоваться для расчета падающих теней, включив опцию Shadow > Shadow во вкладке Object Data при выборе объекта-лампы.

Цвет

Цвет тени определяется настройками освещения от окружающей среды.

Во вкладке Render на панели Shadows находятся дополнительные настройки:

_images/lighting_shadow_settings.png
Render Shadows

Включает и выключает рендеринг теней. Возможные значения: ON, OFF и AUTO. Значение по умолчанию - AUTO.

Soft Shadows

Включает размытие карт теней. По умолчанию включено.

Resolution

Разрешение используемой карты теней. Значение по умолчанию: 2048 x 2048px.

Blur Samples

Количество сэмплов, используемых для размытия карты теней. Возможные значения - 4x, 8x и 16x (значение по умолчанию).

Self-Shadow Polygon Offset

Коэффициент смещения полигона в зависимости от ориентации к источнику света. Значение по умолчанию: 1.

Self-Shadow Normal Offset

Коэффициент смещения полигона по нормали. Значение по умолчанию: 0.010.

Последние две настройки служат для борьбы с артефактами самозатенения. Они проявляются на объектах, одновременно отбрасывающих и принимающих тени. Параметр Self-Shadow Polygon Offset лучше справляется с артефактами во внутренних областях полигонов, а Self-Shadow Normal Offset - в приграничных. Оба параметра приводят к искажению теней, поэтому рекомендуется держать их как можно меньшими.

_images/self_shadow_artifacts.png

Примечание

Тени для точечных (Point) источников света генерируются так же, как и для направленных (Spot), и падают только в одном направлении, определяемом параметром Rotation.


Enable CSM

Включение каскадной модели теней; открывает доступ к расширенным настройкам. Отключено по умолчанию. Не работает, если опция Shadow включена более чем для одного источника света. Для источников света типа Point и Spot поддерживается только один каскад теней.

Эта опция позволяет выбрать один из следующих вариантов наложения теней:

  • Стандартная модель, использующая одну оптимизированную карту теней, охватывающую всю сцену (Enable CSM отключена).

  • Каскады теней (Enable CSM включена).

Blur Radius

Коэффициент размытия теней, позволяющий настроить cмягченные тени. Значение по умолчанию: 3. Коэффициент 0 даст жесткие тени.

_images/blur_radius.png

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

Стандартная модель

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

Каскады теней

Примечание

Данные настройки поддерживаются только для источников освещения типа Sun. Для других источников каскады автоматически отключаются.

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

При включении предоставляет расширенные настройки:

_images/lighting_cascades.png

CSM Number

Количество каскадов теней. Поддерживается от 1 до 4 каскадов. Значение по умолчанию: 1.

CSM First Cascade Border

Размер первого каскада. Значение по умолчанию: 10.0.

CSM Last Cascade Border

Размер последнего каскада. Значение по умолчанию: 100.0.

Размеры промежуточных каскадов интерполируются на основе последних двух параметров.

Примечание

При настройке следует помнить, что, увеличивая размер каскада, мы получаем на нем менее качественные тени. С другой стороны, уменьшение параметра CSM First Cascade Border приблизит к камере и сделает более заметными последующие менее детальные каскады. Уменьшение параметра CSM Last Cascade Border приведет к исчезновению теней на более близком расстоянии от камеры. Однако, при использовании мягких теней качество в целом улучшится благодаря размытию на границах.

_images/csm_cascade_distance.png

CSM First Cascade Blur Radius

Коэффициент размытия на первом каскаде. Значение по умолчанию: 3. Коэффициент 0 даст жесткие тени.

CSM Last Cascade Blur Radius

Коэффициент размытия на последнем каскаде. Значение по умолчанию: 1.5. Коэффициент 0 даст жесткие тени.

Радиус размытия каждого промежуточного каскада интерполируется на основе этих параметров.

Примечание

Смягченные тени рекомендуется настраивать сначала на первом каскаде опцией CSM First Cascade Blur Radius, а далее на всех остальных с помощью CSM Last Cascade Blur Radius. Часто на последнем каскаде может потребоваться размытие меньшее, нежели на первом. Это нужно для того, чтобы тени на последнем каскаде не стали слишком блеклыми из-за низкой детализации, к тому же это уменьшит нежелательные артефакты самозатенения.

Fade-out Last Cascade

Плавное исчезновение последнего каскада. По умолчанию включено.

Blend Between Cascades

Сглаживание границ между каскадами. По умолчанию включено.

_images/blend_between_cascades.png

Цвет фона

Цвет фона можно задать несколькими способами:

  1. Установить параметры Horizon Color и Zenith Color на вкладке World в Blender, предварительно выставив опцию World > Render Sky.

  2. Поместить сцену внутрь модели (например, куба или сферы) с направленными внутрь нормалями, с материалом и опциональной текстурой.

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

_images/parented_background.png
  1. Использовать текстуру неба.

  2. Настроить динамически генерируемую атмосферу.

  3. Установить параметр движка background_color, используя программный метод config.set(), предварительно отключив опцию World > Render Sky на вкладке World в Blender. Установленное значение используется в качестве аргумента метода WebGL clearColor(). Для получения корректных результатов рекомендуется отключить прозрачность контекста WebGL (параметр alpha). Такая конфигурация используется по умолчанию в стандартном веб-плеере движка.

    var m_cfg = b4w.require("config");
    var m_main = b4w.require("main");
    
    // gray
    m_cfg.set("background_color", new Float32Array([0.224, 0.224, 0.224, 1.0]));
    m_cfg.set("alpha", false);
    
    m_main.init(...);
    
  4. В качестве фона можно использовать любой HTML контент, находящийся позади элемента canvas, который используется для рендеринга. Для это необходимо активировать прозрачность контекста WebGL (параметр alpha), предварительно отключив опцию World > Render Sky на вкладке World в Blender. Для получения корректных результатов рекомендуется выставить полностью прозрачный черный цвет фона. Такая конфигурация используется по умолчанию в стандартном просмотрщике сцен SDK движка.

    var m_cfg = b4w.require("config");
    var m_main = b4w.require("main");
    
    m_cfg.set("background_color", new Float32Array([0.0, 0.0, 0.0, 0.0]));
    m_cfg.set("alpha", true);
    
    m_main.init(...);