Типы освещения в Unity. #20

Unity    2018-05-05 15:09:50     тег: Курс по Unity

В этом уроке речь пойдет о типах освещения, которые присутствуют в Unity.

Прежде чем начать, нам нужно установить ассеты из пакета Standard Assets, которые можно бесплатно скачать из магазина Unity - Asset Store. 

Конкретно из этого пакета нам понадобится только набор эффектов. Также можно воспользоваться уже установленным пакетом из меню Assets - Import Package - Effects.

В Unity существует несколько типов освещения, и первый с которым вы столкнетесь - это Direction Light. При создании проекта или сцены объект освещения Direction Light создается автоматически.

Но его также можно создать из меню GameObject - Light - Direction Light, как впрочем и другие типы освещения.

Чтобы на сцене быстро перейти к объекту Direction Light, выберете его на вкладке Inspector и нажмите английскую клавишу F, при этом курсор должен находится в районе сцены.

Как правило Direction Light не имеет формы, а главной его особенностью является освещение всех объектов на сцене. Механизм освещения похож на освещение Солнцем.

Позиция объекта Direction Light на сцене не влияет на то, как будут освещены объекты, а вот изменение угла, наоборот, влияет на освещенность объектов.

Давайте рассмотрим некоторые свойства источников света. 

Доступные настройки различаются в зависимости от типа источника.

Свойство Type содержит список типов освещения.

Spot Light - представляется собой конусообразный источник света, и похож на освещение фонариком.
Direction Light  - имитирует солнечный свет.
Point Light  - освещает во все стороны из центра в заданном радиусе.
Area Light  - запеченный свет - который сохраняется в текстуру, а потом накладывается сверху на все объекты имитируя освещение.

Следующее свойство Color, отвечает за цвет которым будут освещаться объекты.

Свойство Mode, отвечает за используемый режим освещения. 

Каждому режиму соответствует свой блок настроек глобального освещения. Чтобы открыть эти настройки зайдите в меню Window - Lighting - Settings и перейдите в раздел Scene.

Режим Realtime, это освещение в реальном времени, соответствует блоку настроек Realtime Lighting.

Режим Mixed, комбинированный режим, соответствует блоку настроек Mixed Lighting.

Режим Baked, запеченый свет, соответствует блоку настроек Lightmapping Settings.

Следующее свойство Intensity, позволяет задать интенсивность освещения.

Indirect Multiplier - это свойство управляет непрямым светом, а именно тем который отражается от одного объекта к другому. Это может быть полезно, например, когда темная поверхность в тени (например, внутри пещеры) должна быть ярче, чтобы сделать детали видимыми.
Это свойство не работает с типами освещений Spot и Point Light.

Свойство Shadow Type содержит список вариантов использования теней.
No Shadows - без теней
Hard Shadow - жесткие тени
Soft Shadow - мягкие тени


Теперь поговорим о свойстве Cookies. Данное свойство позволяет наложить текстуру на свет. 

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

Отключим Direction Light и создадим новый источник света Spotlight и направим его на поверхность.

После чего перетянем текстуру в свойство Cookie объекта Spotlight, и увеличим интенсивность до 10. Теперь вы можете видеть на поверхности свет проходящий через текстуру.

Рассмотрим следующее свойство Draw Halo - активировав его вы получите светящуюся сферу позволяющую видеть источник света.

Свойство Flare позволяет создать эффект отблеска от линз. Мы будем использовать линзы которые установили в начале урока из стандартных ассетов. 

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

Теперь рассмотрим освещение Point Light. Данный источник света излучается от центра во всех направлениях.

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

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

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

Запеченное освещение - это готовое освещение, которое генерируется во время разработки, и не будет генерироваться во время игры. 

Area Light имеет прямоугольную форму. Из центра этого прямоугольника идет прямая линия, которая показывает направление света.

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

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

Чтобы его установить выберите объект и на вкладке Inspector в верхнем правом углу установите чекбокс у свойства Static.

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

Чтобы изменить область освещения, используются свойства Width и Height. 

Хоть Area Light и имеет свойство Range, оно не является редактируемым, тем не менее влиять на него можно изменяя свойства Width и Height.

У объекта освещения Area Light можно изменить цвет освещения, его интенсивность, отражаемое освещение и тд. Однако у этого типа освещения отсутствует настройка теней, и вы не сможете например контролироваться мягкость или длину тени.

И два последних свойства о которых я вкратце расскажу это Render Mode и Culling Mask.

Свойство Render Mode содержит список вариантов в которых можно выбрать приоритет отрисовки выбранного источника света. Данный выбор может повлиять на качество и скорость освещения.

Auto - метод рендеринга определяется во время выполнения в зависимости от яркости соседних источников света и текущих параметров качества.

Important - упор в рендере будет сделан на качество.

Not important - упор в рендере будет сделан на скорость.

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