Unreal engine 4 настройка динамического освещения. Детализированные diffuse и normal

Работая над проектом, архитекторы и дизайнеры прибегают к такому способу подачи, как 3D визуализация. Чаще всего это статичное изображение, полученное с помощью визуализаторов vRay, MentalRay, Corona и других.

В данной статье речь пойдет о визуализации архитектурных проектов на движке Unreal Engine. Рассмотрим все плюсы и минусы, а также поделюсь своими впечатлениями и опытом на примере готового проекта:

Моделирование

UE4 принимает 3D модели в формате.obj и.fbx.

Моделировать и экспортировать объекты можно в любом 3D редакторе (3ds Max, Blender, Maya и пр.) Желательно, чтобы модель имела хорошую топологию и полигонаж в разумных пределах (если говорить об интерьерах, то основные объекты, такие как диван, кровать и др. не должны превышать 100 тысяч треугольников, т.к. это сильно сказывается на производительности). Лучше, конечно, делать ретопологию каждой модели вручную, но для достижения приемлемого результата можно обойтись и автоматическими средствами, программами или плагинами.

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

Материалы

Для построения логики в UE4 используют нодовую систему Blueprint . Она заменяет собой необходимость в программировании, но не исключает возможность писать на C++.

Ниже показаны основные шейдеры, используеммые в сцене, построенных на Blueprint :

Дерево:



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

Испачканный металл:



В данном примере была использована чёрно-белая карта, смешанная с числовыми значениями и применена в свойства Metallic и Roughness

Стекло:



На прозрачность материала влияет свойство Opacity, которое регулируется float нодом (значение от 0 до 1)

Далее приведены примеры четырёх основных свойств, которые определяют физическую природу материала. Объединение их вместе различными способами позволяет создавать практически любой возможный тип физической поверхности в реальном мире.

Base Color Metallic Specular Roughness

Освещение

В сцене используется три типа освещения:

После того, как все объекты и источники света были размещены, необходимо просчитать сцену:

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

Если после просчёта модель или источник света были передвинуты или удалены, тень останется и придётся заново пересчитать сцену.

Пример:

Интерактив

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

1. Открывание и закрывание двери
Рассмотрим простой вариант, когда дверь открывается автоматически, если приближается игрок и закрывается, если игрок отдаляется:

Сама дверь состоит из двух элементов: статичная модель дверного проёма и интерактивное дверное полотно, логика которого описана в Blueprint .

В компоненты чертежа входит статичная 3D модель дверного полотна и фигура Box , которая играет роль триггера:

Нодовая структура выглядит следующим образом:


Ноды OnComponentBeginOverlap и OnComponentEndOverlap отвечают за коллизию с триггером.
Timeline_0 - это анимация с функцией Float Track (New Track 0).
Make Rot создаёт вращение по любой оси, в данном случае по оси Z (Yaw).

Функция Float Track (New Track 0):


Значение от 0 до -90 градусов изменяется в течение 1 секунды

Нам остаётся скомпилировать Blueprint и добавить его в сцену, выровняв точно под дверной проём.

2. Звуковые эффекты
Вы можете оживить ваш проект, добавив в сцену Ambient Sound . Например, пустить ненавязчивую музыку на задний план или добавить звуковой эффект при открывании/закрывании дверей.

3. Постобработка
В широком смысле, постобработка - это все то, что происходит после основных действий по построению изображения.
Выполнить постобработку вы можете либо в камере, либо блоком Post Process Volume , добавив его в проект и корректируя габариты. Войдя в этот блок, начнётся процесс постобработки.

К примеру, блок Post Process Volume с увеличенной яркостью рекомендуется ставить в плохо-освещённые помещения:

Так Post Process Volume выглядит в сцене:

Unreal Engine 4 поддерживает множество эффектов для постобработки, далеко не все они могут вам пригодиться, но некоторые из них я перечислю:

  • Vignette (Виньетка) - затемнение или осветление краёв кадра
  • Depth of Field (Глубина резкости) - всё, что находится ближе или дальше дистанции фокусировки, постепенно теряет резкость и размывается
  • Bloom (Свечение) - засвет, получаемый от ярких источников освещения
  • Lens Flare (Блик) - воспроизводит эффект преломления солнечных лучей в объектив камеры
  • Film (Шум) - даёт анимированный шум, имитируя плёночную кинокамеру

Подведём итоги

Несмотря на кажущуюся сложность работы, редактор Unreal Editor 4 выглядит приветливым. А с ростом производительности компьютерного оборудования GPU рендер может изменить традиционный подход к работе визуализаторов, дизайнеров и архитекторов.

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

В этой статье я расскажу, как создать в UE4 выделение контура. Как правило, разработчики используются для этого двумя разными способами:

  • Рендерят сетку дважды. В этом случае сначала рендерится одна сетка (со стандартным материалом), а затем вторая (со слегка увеличенным масштабом и эмиссионным материалом)
  • Используют алгоритм распознавания контура. Он задается в виде материала пост-обработки

В этой статье я расскажу о втором методе, т.к. он легче интегрируется в уже существующие проекты. Данное руководство написано с учетом того, что вы знакомы с основами UE4 (в частности, с тем, как работает редактор материалов). Кроме того, чтобы было понятно, как реализовать алгоритм распознавания контура в виде UE4-материала, также пригодятся базовые знания в области обработки изображений.

Основные шаги

Реализация эффекта выделения контура в виде материала пост-обработки проходит в несколько этапов:

  • Создание материала пост-обработки, который выделит контур у объектов со включенным параметром Render Custom Depth.
  • Добавление этого материала пост-обработки в список Blendables, который находится в параметрах блока Post Process Volume.
  • Включение параметра Render Custom Depth у всех скелетных и статичных сеток, у которых нужно выделить контур

Ниже я подробнее объясню каждый из этих шагов. Если вы здесь лишь затем, чтобы скачать материал, можете сразу перейти к разделу «Загрузки», который находится в самом конце статьи.

Карта глубины

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

Наша карта глубины выглядит похожим образом, за исключением того, что в ней видны лишь объекты, у которых включен параметр «Render Custom Depth»:

Карта глубины заметно упрощает применение эффектов вроде выделения контура, созданию которого и посвящена эта статья.

Создание материала

Самый сложный этап. Мы создадим материал, в котором будет реализован оператор Собеля, свернутый с кастомной картой глубины. Другими словами, мы применим на кастомную карту глубины фильтр распознавания контура.

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

  • Берем пиксель P
  • Берем 8 пикселей PN, прилегающих к пикселю P
  • Умножаем значения в пикселях P и PN на значения в ядре свертки (т.е. делаем 9 умножений)
  • Складываем полученные значения
  • Возвращаем результат

Сначала нужно задействовать карту глубины. Делается это просто: добавьте нод Scene Texture и подключите его к Emissive Color материала. Также выставьте настройку Scene Texture ID на CustomDepth.

Теперь давайте задействуем прилегающие пиксели. Для этого можно использовать параметр UVs в ноде Scene Texture. Но проблема в том, что UV-параметры работают в текстурных координатах, т.е. используют значения от «0,0» (левый верхний угол текстуры) до «1,1» (правый нижний угол текстуры). Поэтому нам нужно взять инвертированные значения высоты и ширины текстуры, умножить их на смещение от центра ячейки (-1,-1), а затем прибавить к UV-координатам текущего пикселя. Таким образом мы выберем левый верхний пиксель.

В редакторе материалов это будет выглядеть следующим образом:

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

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

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

С левой стороны – два набора входных параметров. Первые 9 векторов – это просто значения пикселей, которые мы будем обрабатывать. Другие 3 вектора служат для значений ядра свертки. По сути, это просто матрица 3х3, но поскольку в редакторе материалов UE4 нет типа данных для матрицы, я сделал собственную при помощи параметров Vector3.

Итак мы собрали все кусочки алгоритма. Теперь осталось лишь объединить их внутри итогового материала.

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

Теперь давайте объединим два этих значения.

Далее открываем редактор материалов, при помощи рассчитанных значений создаем вектор, а затем возвращаем длину вектора. Результатом будет черное изображение с контуром вокруг сеток, у которых включен параметр Render Custom Depth. Осталось лишь смешать полученный эффект с финальной картинкой. В моем случае будет использоваться оператор «IF», но вы можете встроить алгоритм и по-своему. Ничего сложного в этом нет.

ПРИМЕЧАНИЕ: Убедитесь, что ваш материал находится в домене Post Process, а не Surface (имеется в виду «material domain»; это параметр, через который настраивается, для чего будет использоваться материал). Это можно поменять в свойствах материала.

Настройка сцены

Теперь, когда материал готов, нам нужно добавить его в список пост-обработочных эффектов сцены. Выберите у своей сцены блок Post Process Volume и найдите пункт Blendables. Добавьте в список Blendables новый компонент, а затем выберите из списка созданный нами материал. Если блока пост-обработки в вашей сцене нет, создайте его. Также убедитесь, что у блока Post Process свойство Unbound выставлено на «true». В противном случае игрок будет видеть эффект строки только в том случае, если будет находиться внутри блока Post Process Volume.

Чтобы проверить результат, поместите в сцену какую-нибудь сетку и включите у нее параметр Render Custom Depth.

Блюпринт

Я настроил сцену таким образом, что эффект строки будет появляться у статической сетки только в том случае, если игрок наведет на нее прицел. Я решил воспользоваться шаблоном для FPS. Кроме того, я добавил в блюпринт MyCharacter функцию Trace. Она вызывается таймером, тикающим каждые 0,1 секунды, и проверяет, смотрит ли игрок на статичную сетку. Если смотрит, параметр Render Custom Depth выставляется на «true». Если игрок перестает целиться в сетку, значение в переменной Render Custom Depth меняется на «false». Посмотреть, как это все работает, можно в файле, ссылку на который можно найти ниже, в разделе «Загрузки».

Введение

Меня зовут Лассе Роде, и я представитель студии xoio. Мы небольшое агентство, специализирующееся на визуализации и иллюстрации работ по архитектуре и маркетингу.Обычно мы работаем в своего рода «традиционной» 3d среде с использованием приложений, таких как 3ds Max и подобным. Мы постоянно тестируем новые «движки» рендеринга и в настоящее время отдаем предпочтение Corona Renderer, V-Ray и Octane. Каждый «движок» имеет свои сильные стороны и мы всегда стараемся использовать каждый для своих целей.По моему мнению есть несколько основных направлений в нашей отрасли: стремление к фото реализму и быстрому результату – если речь не о режиме реального времени. Не ждать когда результат будет готов на рендер-ферме всегда было мечтой для нас — особенно при создании анимации!Основным недостатком «реального времени» долгое время было недостаточное качество по сравнению «pre-rendered» изображениями и анимацией. Так что, хотя это выглядело очень интересно, ее применение в контексте визуализации, казалось, трудно себе представить, — и, честно говоря, выглядящее «игровым» было трудно продать требовательным клиентам из архитектурных и корпоративных областей.Но все резко изменилось. Результаты созданные в «движках реального времени» сегодня очень красивы и убедительны!

Почему Unreal Engine?

В релизe UE4 было уделено очень много внимания в нашей индустрии и возможности казались безграничными. PBR (Физический рендеринг) система материалов и простая последовательность действий для создания модели в Unreal Engine было наиболее веской причиной для нас, чтобы попробовать –ведь это возможность получить дополнительное качество! Если вы видели работу Koola (также доступен для скачивания в Unreal Engine Marketplace), которыая стала «виральной» несколько недель назад — вы, вероятно, также убедитесь, как и мы, что Unreal Engine 4 способен на впечатляющее качество.В этой статье я хочу дать вам краткую информацию о рабочем процессе, для создания сцены в Берлинской Квартирe,которую вы можете загрузить с Marketplace (фирменный магазин Unreal) и увидеть некоторые методы и приемы на которые я наткнулся во время работы над данной сценой. Некоторые из них я нашел самостоятельно, в то время как другие являются производными от информации, которую я нашел в Интернете. В Unreal Engine форумы и документация являются обширными и объемными ресурсами, как и основной контент, который поставляется с «движком» и наборами сцен, которые вы можете получить из Marketplace.

Берлинская квартира

Я создавал серию изображений этой квартиры в историческом здании в Берлине начиная с 2013 года с помощью 3ds Max с Corona Renderer. Это гибкий способ обработки цветового отображения, которое действительно помогло раскрыть светлое настроение этой сцены. Также это было причиной выбора для тестирования UE4.Я заметил, что UE4 весьма успешно используется в сценах с мрачным освещением и шумными текстурами. Я подозревал, что это будет не так просто получить точную тень и GI (Global Illumination) в ультра белом интерьере.И, честно говоря: Это непростая задача!

Рис 1.

Выше – оригинальный рендер сделанный в 3ds Max и Corona Renderer. Для того, чтобы увидеть остальные изображения, нажмите .

Ниже видео готовой сцены

Начну с начала:

Оригинальная Сцена Моделирование было сделано в 3dsmax в спешке. Так что я на самом деле подробно остановлюсь только на тех частях, которые отражены в финальных изображениях. Этот подход, конечно, не возможен в средах реального времени. Для изменения назначения цели при использовании в Unreal Engine мне пришлось немного сократить масштабы, потому что меблировки и детализации всего пространства заняло бы слишком много времени для тестирования.


Рис 2

Я решил экспортировать только две комнаты: их вы видите на нижней части скриншоте выше.

Экспорт геометрии для Unreal Engine -это очень непростая задача, ЕСЛИ у вас несколько идей!Есть смысл разделить эти идеи на части. Потому Lightmass рассчитывается в отдельной карте для каждого объекта, это хорошо, чтобы быть немного осторожным с высокими значениями особенно на больших плоских объектах, таких как стены и потолок. Из-за этого я только экспортировал внутренние поверхности стен, которые мы на самом деле видим.Я также добавил немного к верхней и нижней части стен, чтобы пересечь их позже с потолком. Я думаю, что это хороший способ для предотвращения «световых протечек» — световые артефакты, проявляющиеся когда геометрия не закрыта или не пересекается. Это не проблема, когда это мрачная сцена с задействием большого количества текстур — но, так как мы хотим получить сверх-белое пространство,то важно создать точное GI (глобальное освещени), какое только возможно, особенно в углах.


Рис.3

Вторая важнейшая вещь — создать развертку скоординированную для канала GI, которая будет сохранена для просчета lightmass в UE. В 3ds Max это будет UV-канал 2.Канал 1 предназначен для использования всех других текстур, таких как диффузия, шероховатость, нормалей, и т.д. Unreal Engine рассчитывает каналы, начиная с 0, что может вызвать некоторую путаницу в начале — но как только вы это усвоите, то поймете,что это просто.Примечание: Сделать развертку важно только для канала карты света (light-map)! Для канала текстуры любой вид отображения может работать, например, кубический или цилиндрический. В большинстве случаев операция flatten mapping в 3ds Max модификатора Unwrap (получение развертки где порог, градус разворачивания можно задать) достаточно для получения UV координат.


Рис 4

Если вы хотите получить все объекты в сцене в UE4 как это было в вашей макс-сцене, то необходимо модготвоить модели, чтобы вставлять их на места где они были при экспорте. Для одиночных объектов, таких как стулья, удобно экспортировать в Unreal Engine один раз и копировать уже внутри. Для этого нужно подвинуть объекты ближе к центру в вашей 3ds Max сцене, потому что центр объекта (pivot) в UE будет там же.

Рис 5


Рис 6

Вы видите, я использую высокополигональную геометрию без LOD (уровень детализации) упрощения. Это, конечно, рекомендуется только в небольших сценах, таких как эта, но так как у меня есть опыт сглаживаня геомтерия, и я не хочу чтобы были какие-либо неровные края на моей мебели, то для меня это логично. Хотя я не сомневаюсь,что комната требует оптимизации;).Убедитесь, что ваша геомтрия будут объединены в один объект и элементы имеют различные каждый свой ID материал для обработки различных материалов позднее в UE4!Ну что же,сохраняйте геометрию в разрешении.fbx и переходите в редактор Unreal Engine! Импорт в Unreal Engine 4 Импорт FBX файлы в Unreal Engine 4 работает довольно гладко! Я делал это в несколько этапов.Я подготовил различные файлы, в таком порядке: — Геометрия комнаты в отдельном файле FBX. — Различные файл для моделей, каждый с несколькими объектами в них.Убедитесь, что сняли флажок Combine Meshes (Комбинировать геомтрию) для полученя ваших объектов раздельно и не объединые в один объект!

Рис 7

Материалы

Я весьма прямолинеен и большой поклонник простых установок! Так что пример шейдеров очень прост, состоит из карты диффузности, ненасыщен и смешан с черным цветом. Та же карта корректируется по цвету и инвертируется в канале roughness (шероховатости). Готово.


Рис 8

Normal map была бы здесь излишне, но не ограничивайте себя в исследовании материалов в сцене.


Рис 9

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


Рис 10

Вы должны установить Shading Model в «Subsurface» и добавить постоянную ноду со значением меньше, чем 1 и связать с свойством непрозрачности вашего материала, чтобы получить этот эффект.К стакану на переднем плане применен очень простой материал стекла:


Рис 11

Он имеет довольно темный цвет диффузии, нулевой roughness и высокое значение зеркальности. Я также применил Fresnel (эффект френеля-коэффициент преломления) ноду со значением 1,5 для контроля непрозрачности и преломления как в реале. Есть много более сложных способов получения более реалистичного стекла, — но я, честно говоря испытывал некоторые проблемы, чтобы получить контроль над параметрами, так что это простое стекло, кажется, достаточно хорошо получилось.Примечание: я выбрал Two Sided (Двустороний материал) и установил режим полупрозрачности освещениея «TLM Surface» на вкладке Details tab в панели слева.


Рис 12

Материал, который я хочу показать это материал который прменялся к полу, хочу показать потому что это единственный материал, к которому применен normal map


Рис 13

Здесь вы видите материал, с диффузным цветом, шероховатой текстурой и нормальной картой. Цвет светло-серый, со созначением 4Шероховатость выглядит немного сложнее: Слева вы видите ту же карту увеличенную в три раза отличную с TexCoord нодой. Красный канал умножается на другие, а затем подсоединяется как альфа в интерполяции ноды Linear (Lerp), чтобы смешать их значения. 0,3 и 0,2 в этом примере, получаем тонкое шумное отражение на полу досок. Затем дорабатываем с «Power» нодой, чтобы получить нужное количество шероховатости, и этот материал тоже вышел неплохо.Normal опять воздействием TexCoord, а затем развернута через «FlattenNormal» ноду, чтобы получить только тонкий рельеф на материале. Подготовка моделей Перед добавления объектов в вашу сцену, всегда лучше лучше раскидать материалы по геомтерии. Вы должны сделать это только один раз, и сможете применять различные материалы. Это быстрый процесс: Здесь вы видите, как важно применять различные ID материала для ваших объектов, чтобы расположить различные материалы там, где они и должны быть!


Рис 14

Построение сценыЕсли вкратце — импортируйте все вместе. Во-первых, вы должны перетянуть в комнату геометрию. Лучший способ, собрать сцену– перетащить и бросить (drag & drop) в пустую сцену.


Рис 15

Здесь не видино полигоны наружной части стен — как я объяснил выше: они только односторонние для лучшего Lightmass расчета.В таких случаях хорошо бы установить Lightmap (получаемая разверткой) разрешение для ваших больших объектов с высоким значением, для стен, например, я поставил значение 2048.

Рис 16

Как упоминалось выше, «световая протечка» может быть проблемой. Чтобы предотвратить это, я положил черные ящики вокруг всей сцены. Это выглядит немного неряшливо снаружи,но зато внутри чисто;)


Рис 17

Освещение и его параметры

Настройки освещения также довольно таки просты: я использовал «метод Koola» — сочетание солнца и пятен света в передней части окна, чтобы имитировать поток света. Это весьма эффективно и просто в управлении! Теперь для расчета глобального освещения важны только несколько настроек

Рис 18

Я существенно увеличил освещение отраженных лучей и качество освещения. Я также снизил сглаживание до 0,6. Детали очерчены лучше и тени не «стираются» так сильно.Также я настроил прямое освещение в динамической тени для получения лучших теней. Это также важно для движения света позднее в анимации!

Рис 19

Последним шагом перед нажатием «Создать» будет установка Качество Освещения (Lighting Quality) на «Производительность» (“Production”)

Рис 20

Это должно привести к сглаживанию освещения повсюду!Вообще-то,когда добрался до этого пункта в первый раз, я был в восторге! Это на самом деле сильная часть этого движка: приводить вас восторг! Будучи в состоянии двигаться внутри моего «рендера» в режиме реального времени был действительно радостный момент! Постобработка Одной из самых больших особенностей является возможность применения цветокоррекции и эффектов камеры прямо в редакторе. Это может быть сделано с PostProcessVolume в глобальных настройках. Я сделал несколько настроек по насыщению, окантовке и виньетированию, цветность и отключил автоэкспозицию путем установки минимального и максимального значения до 1 и увеличил общую яркость, установив компенсацию экспозиции в районе 1,42. Также добавил блик, который я нахожу удивительным,т.к всё происходит в режиме реального времени!


Рис 21

Настройка анимации Возможность свободно перемещаться внутри сцены делает анимацию очень легкой и приятной задачей из-за мгновенной обратной связи среды реального времени. Как частому пользователю программного обеспечения для композа, мне потребовалось не так много времени,чтобы приспособиться к интегрированным инструментам и настроить анимацию.Первое, что нужно сделать, это создание Matinee Actor (инстуметарий для создания последовательности видео)

Рис 22

При открытии Matinee вы увидите окно с секцией отслеживания и редактор кривых.


Рис 23

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


Рис 24

Вы можете видеть траекторию камеры только в редакторе и контролировать редактирование на лету!После того, как примерная анимация сделано в Matinee, я экспортирую анимацию как.AVI и доработавыю её в Premiere и подгоняю под музыку.

Заключение

Весь процесс, начиная от экспорта из 3ds Max и импорта в Unreal Engine 4, работа с тенью и освещением, создание анимации, а затем размещением на YouTube заняло у меня около суток. Эта скорость неслыханное в ArchVIZ и отражает ключевой потенциал, который лежит в основе использования Unreal Engine 4 для визуализации работ.Отсутствие визуализации на этапе «производства» изображений действительно делает процесс создания очень гибким и свободным. Быстрая рузельтат наших действий-настоящая революция!Мы постоянно тестируем и думаем о возможностях применения этого вида создания и технологического процесса в нашей повседневной работе.Есть много возможных применений, и мы очень хотели бы изучить их! Лассе, xoio


Есть несколько контролей свечения. Например, если вы хотите изменить яркость света (Brightness ), можно ввести новое число вместо " 1,000000 ". Или, держите мышь между двумя черными стрелками справа. Нажмите и перетащите мышь вверх или вниз, и вы измените яркость динамично.


Рядом с полем LightColor (цвет света), вы можете нажать на увеличительное стекло, чтобы открыть цветовую палитру, также Вы можете развернуть эту вкладку LightColor , открыв настройку цвета в RGB . Вы также можете нажать на иконку курсора мыши для получения цвета, который вы можете выбрать мышью, где-нибудь на карте. Попробуйте оба способа сейчас.

Вот список самых важных свойств. Не забудьте попробовать каждый из них по своему усмотрению.


Brightness (яркость) – все достаточно очевидно.
FalloffExponent - резкость света или спад в рамках своего радиуса. Переместите свет близко к стене, и побалуйтесь с этим значением, и вы увидите, как это работает.
LightColor - цвет света.
Radius - область света.
Другие свойства, лучше всего оставить без изменения, но мы обсудим некоторые из них позже.
Сделаем свет оранжевого цвета, с достаточно высокой яркостью и большого радиуса, чтобы заполнить комнату. Обязательно "перепостройте (отребилдите)" (Build Light ) освещение, чтобы окончательно сформировать свет.


4) SportLight

Размещение Spotlight немного сложнее, чем размещение точечного света – можно найти его в Actor ’ах Generic ’a. Откройте браузер (Generic ) и перейдите на вкладку Actor Classes . Откройте "Light ", и выберите Sport Light . (Вы увидите две подкатегории, SpotLightMovable и SpotLightToggleable . Они в основном используются в анимации или подключаются к геймплею, так что не будем трогать их сейчас.)
Щелкните правой кнопкой мыши в вашей сцене, и выберите ункт "Add SpotLight here ". Вы увидите прожектор белого цвета, указывающий вниз. Переместите его так, чтоб он видимо бросал круг света куда-нибудь.

Sport Light имеют все те же свойства (цвет, яркость, радиус, спад), однако они имеют несколько дополнительных свойств. Убедитесь, что выбран прожектор и откройте его свойства. Найдите два новых свойства.


OuterConeAngle - внешний угол конуса (углы здесь от оси конуса до образующей, от 0 до 90 градусов).
InnerConeAngle - контроль Hotspot в середине конуса. Если 0, то будет «мягкий» свет. Если это же радиус, равен OuterConeAngle , прожектор будет иметь яркий круг света. (Побалуйтесь с этим значением, и вы увидите, как это работает)


Вы можете вращать прожектор с использованием стандартного инструмента ротации в редакторе. Также Вы можете контролировать его в режиме от «первого лица» (нажав на кнопку " Lock Selected Actors To The Camera " в верхней части окна просмотра перспективы.


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

5) DirectionalLight

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

Найти этот свет можно там же где и SportLight . Может быть не большой баг, при передвижении по уровню свет на стенах может «мерцать». После «перепостроения» освещения или поворота света, мерцание, обычно, уходит.

Поверните свет так, чтобы он не падал прямо вниз. Повернуть DirectionalLight можно точно так же, как было описано в разделе SportLight . Но вместо того, светового конуса, указывающего направление, будет небольшая синяя стрелка.
Если у Вас есть несколько близко стоящих объектов, то при определенном повороте света от объектов появится тень.

При «перепостроении» света, тени могут выглядеть так:

Такая тень смотрится не очень хорошо, но ее видно с большого расстояния.


Но если поставить галку напортив bForceDynamicLight в настройках света и bCastDynamicShadows в настройках нужного объекта, то после «перепостроения» света, тень будет четкая:

Но эта тень будет пропадать по мере Вашего отдаления от объектов (Вы можете заметить, что тень от разных объектов исчезает на разных расстояниях). Но такие тени как на Epic’овских картах достигаются не этими параметрами. Они их делали вручную.
Если Вам не нужны тени, то отключите " CastShadows " на нужном вам объекте, от которого не должна идти тень или на нужном источнике света, если не хотите чтобы тени вообще были от этого света.

6) Sky Light

Этот свет освещает все и везде, не создавая теней (из-за этого минимальное падение FPS ), поэтому его лучше использовать на открытых уровнях или для того, чтобы на уровне не было темных мест.
Давайте добавим его (найти его можно в Generic ’е, в Light ’ах).

Сразу же на уровне становится намного ярче (за исключением потолка, который является неизменным.) Освещаются поверхности «сверху», поэтому пол получает много света, стены среднее количество света, а потолок остается не освещенным. Здесь две настройки (что они делают описать сложно).

LowerBrightness - яркость (микс цветов, что-то в этом роде, вообще Hz что это) (по умолчанию 0) LowerColor - цвет (вторичный цвет для менее освещаемых участков, стен и, особенно, потолка).

Отрегулировав свойства SkyLight , получаем цвет снизу ярко красный, а цвет сверху ярко голубой (с достаточно яркой LowerBrightness , это видно.) Заметно, как красный и синий цвета объединились и сделали стену фиолетового цвета. Это должно быть очевидно, если удалить PointLight .

И последнее - иконка для SkyLight очень мала, и, вероятнее всего, Вы потеряете ее в большом уровне. В свойствах, в Display категории, измените DrawScale на 10 .

7) Размещено все вместе


Давайте посмотрим, как различные Light объекты используются в сцене.
Откроем (Unreal Tournament 2007\UTGame\CookedPC\Private\Maps\ DM-RisingSun.ut3 ), так вы можете увидеть, как Epic использовала эти виды света в практических условиях.
Загрузите карту, и Вы увидите что-то вроде этого:

Посмотрите вокруг. Вы знаете какой свет что освещает? Есть куча PointLight и SportLight рядом светильники и светящиеся двери. Но, что освещает в деятельности скалы на заднем плане? Давайте выясним.
Нажмите на кнопку " ;Toggle Show Flags " кнопку, и включите " Light Influences ". Выберите скалы, и вы увидите две синих линии выходящих из них.

Линии приведут к двум DirectionalLight на сцене.

Вы увидите, что оба DirectionalLight направлены в противоположные стороны. И если Вы загляните в свойства, Вы увидите, что они делают на сцене. Один яркостью (Brightness ) 2.5 и испускает желтый цвет - он действует, как солнце. Другой яркостью 0.25 и испускает бледно синий цвет – свет как от неба. Если вы удалили все (для этого щелкните правой кнопкой мышы на каком-нибудь источнике света и выберите Select All Lights ), за исключением этих двух источников света, пространство, все равно, будет выглядеть неплохо, за исключением пары десятков объектов, которые специально подсвечивались другими источниками света.

8) Поиск

Вы можете выбрать источники света в 2D или 3D окнах проекции, чтобы выяснить, что они делают, но давайте посмотрим инструмент - "Search for actors ". Вы можете открыть его, нажав на иконку бинокля в верхней части окна - сделайте это сейчас .

Search for Actors открывает окно со списком всего, что есть на карте. Но мы просто хотим посмотреть на свет. Нажмите на "Containing ", а затем в разделе "Search For ", введите " ligh t ". В нижней части дисплея выводится количество найденных объектов, например "11 objects found ".

Итак, что мы имеем? Несколько directional lights , directional lights , и spotlights . Уведомление skylight . Если вы дважды щелкните на свет в списке, который используется на сцене, то камера перейдет к этому источнику света.
Потратьте несколько минут и посмотреть свойства каждого источника и выясните, роль каждого из них на сцене.



9) PostProcess volume


Влияет на внешний вид и освещения на уровне. PostProcess Volume находится вокруг всей сцены. Если отдалить камеру в 3D окне, Вы заметите тонкие изменения цвета на арене. PostProcess volume контролирует яркость, и кучу других последствий до тех пор, пока камера находится внутри него.
Выберите PostProcess volume и откройте его свойства. (Он выглядит, как пурпурное поле в 2D проекции, или же вы можете найти его через Search for Actors .)



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: