Guest3d.ru
некоммерческий проект, цель которого объединить профессионалов для обмена опытом и знаниями в области real-time рендеринга
guest3d
2.05: Виртуальная студия: Освещение и тени (Lighting and shadows)

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

В Quest3D доступен ряд техник освещения: обычное внешнее освещение, самосвечение, тени в реальном времени и карты освещения. Эта глава описывает эти техники в деталях.

Обычное внешнее освещение подразумевает источник света, излучающий свет на 3D объекты в сцене. В Quest3D, источники освещения являются каналами, обладающими рядом привязанных к ним потомков. Их свойства также могут быть доступны в разделе анимации Animation Section, в закладке ‘Light’.

Типы источников освещения (Light types)
Источники освещения в Quest3D могут быть трех типов: точечный (point), прожектор (spot) и направленный (directional), они показаны на изображении ниже.

Точечный источник освещения (point) излучает свет во всех направлениях. Прожектор (spotlight) определяется внутренним и внешним углами конуса, что приводит к эффекту рассеивания. Направленный источник (directional) - это просто вращаемый вектор, по которому источник излучает свет. Все лучи направленного источника света параллельны друг другу.

Свет в Quest3D может быть подкрашен с помощью его вектора ‘Diffuse’. Вектор окружения ‘Ambient’ служит в качестве глобального вектора эмисии ‘Emissive’, для всех объектов, попадающих во влияние источника освещения.

Изображение выше показывает примеры диффузного ‘Diffuse’ и окружающего ‘Ambient’ освещения.

Влияние источника освещения в сцене легче контролировать, если подключить канал Light к каналу Render. Только объекты, подключенные к этому каналу Render будут подвержены влиянию присоединенного источника освещения. Максимальное количество источников освещения, привязанных к одному каналу Render - 8. Это аппаратное ограничение.

Иллюминация 3D объекта может быть изменена с регулировкой его векторов Diffuse и Emissive. Получить к ним доступ можно также в Объектном Разделе, в закладке ‘Material’. Чем выше значение вектора Emissive, увеличит эффект самосвечения или окружающего света. Особенно для наружних сцен, повышение эмисии даст убедительный результат. Как было упомянуто выше, вектор освещения ‘Ambient’ (Окружение) служит в виде глобального вектора эмисии ‘Emissive vector’, для всех объектов, подверженных освещению этого источника.

1) Object Diffuse (1, 1, 1), Light Diffuse (1, 1, 1), Light Ambient (0, 0, 0)
2) Object Diffuse (1, 1, 1), Light Diffuse (1, 1, 1), Light Ambient (0.4, 0.4, 0.4)
3) Object Diffuse (1, 1, 1), Light Diffuse (1, 0.8, 0.6), Light Ambient (0, 0.2, 0.4)

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

Подобные плоскости теней визуализируются быстро и предоставляют убедительные результаты.

Тени реального времени (Real-time shadows)
Quest3D также поддерживает тени в реальном времени. Канал Stencil Shadow может быть виден, если канал Render настроен на просчет теней. Каналу Stencil Shadow для работы необходим вектор позиции источника освещения. 3D объекты (3D Objects) могут быть привязаны к StencilShadow, подразумевая SoftwareStencilShadowObject.

Аппаратная верси этого канала, FastShaderStencilShadowObject, работает быстрее, но не поддерживает незамкнутые объекты и скиннинговых персонажей.

Карты освещения (Light mapping)
Тени реального времени требуют большого количества сил для обработки. Более того, тени реального времени - жесткие и не поддаются влияюнию окружающего света (ambient lighting (radiosity)). Для повышения частоты кадров и создания сглаженного освещения и теней может быть использован метод карт освещения.

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

Световые карты могут быть созданы в ряде продвинутых пакетов 3D моделирования, таких, как 3D Studio Max и Maya. Существует также возможность создания световых карт в Quest3D.

В Объектном Разделе (Object Section), в закладке ‘Texture Lighting’, ряд настроек определяет качество световой карты Quest3D. Визуализаторы (render) и источники освещения (light) могут быть выбраны, а также ширина и высота текстуры. Присутствует возможность просчитать свет, тени, или и то, и другое. Наконец, настройка Anti Aliasing управляет сглаженностью световой карты.

Перед тем, как 3D объект может принять световую карту, он должен получить соответствующий набор UV. Для довольно простых объектов, таких, как плоскости и ландшафты, может быть использован планарный UV меппинг Quest3D. Для более точного создания UV карт, пожалуйста, обратитесь к руководству пользователя вашего рабочего пакета 3D моделирования.

Урок
Необходимая сцена Quest3D:
..\Tutorials\2.5 – Lighting and shadows\Lighting and shadows.cgr
Необходимые шаблоны:
Scene \ Lights \ Point Light
Scene \ Shadow \ Render Stencil Shadow
Scene \ Shadow \ Software Stencil Shadow Object
Variables \ Vector \ Vector with Values
Шаг за шагом:

  • Откройте сцену ‘Lighting and shadows.cgr’. Она содержит неосвещенную сцену, состоящую из городского блока и анимированного персонажа.
  • Перетяните шаблон Point Light в Граф Каналов и подключите к каналу ‘Character Render’. Обратите внимание на то, как освещение повлияло на персонаж.
  • Создайте ярлык (shortcut) канала ‘Point Light’ и присоедините его к каналу ‘City Render’. Обратите внимание на то, как освещение повлияло на окружающую среду.
  • Перейдите в Раздел Анимации (Animation Section).
  • В закладке ‘Light’ выделите ‘Point Light’ и подвигайте источник света в пространстве в обзорном виде Animation 3D View. Заметьте, теперь и персонаж и окружающий мир подвергаются его влиянию.
  • Переместите источник света в позицию (position) (0, 0, 5).
  • Смените ориентацию (rotation) на (0, -90, 0). Обратите внимание, что вращение точечного источника освещения не дает никакого эффекта.
  • Смените тип овещения ‘Light Type’, нажав на кнопку ‘Spot’ (прожектор). Влияние источника света изменится.
  • Измените внешний угол конуса ‘Outer Cone Angle’ на ‘120’, и внутренний угол конуса ‘Inner Cone Angle’ на ‘30’. Пронаблюдайте за градиентом света между этими углами.
  • Смените тип освещения ‘Light Type’, нажав на кнопку ‘Dir’ (направленный). Влияние источника света изменится.
  • Измените ориентацию (rotation) источника освещения на (30, -45, 0).
  • Переместите источник освещения в позицию (-100, 30, 100). Обратите внимание, что перемещение источника направленного света (directional light) не влияет на производимый им эффект.
  • Перейдите в Раздел Каналов (Channels Section).
  • Переименуйте канал ‘Point Light’ в ‘Sun Light’.
  • Добавьте канал Vector и присоедините его к потомственному входу ‘Ambient’ канала ‘Sun Light’. Измените его значения на (0.4, 0.4, 0.4). Обратите внимание на то, что и персонаж и окружающая среда стали ярче, как если бы подверглись влиянию окружающего дневного света.
  • Перетяните канал Render Stencil Shadow в Граф Каналов и подключите его к каналу ‘Project’.
  • Создайте ярлык вектора позиции (position vector) канала ‘Sun Light’ и подключите его к потомственному входу ‘Light vector’ канала ‘Shadow Renderer’.
  • Добавьте канал Software Stencil Shadow Object и подключите его к потомственному входу ‘Stencil Shadow Base Object’ канала ‘Render Stencil Shadow’.
  • Создайте ярлык для канала ‘Animated Character’ и подключите его к каналу ‘Software Stencil Shadow Object’. Обратите внимание, что объект персонажа теперь отбрасывает тень на окружение.
  • Перейдите в Раздел Анимации (Animation Section).
  • Подвигайте объект ‘Animated Character’ по сцене. Обратите внимание, что тень отбрасывается от позиции солнца.
  • Когда будете готовы, перейдите в Объектный Раздел (Object Section).
  • Нажмите на объект ‘Street’ в списке, чтобы выделить его.
  • Нажмите на поверхность (surface) 'Street 1' в списке, чтобы выделить ее.
  • В закладке ‘Texture’, нажмите на закладку ‘Stage 2’. Из выпадающего списка выберите набор ‘UV Set 1’.
  • В закладке освещения ‘Lighting’, нажмите на кнопку ‘Add Texture Lighting’. Обратите внимание, как текстура зеленой решетки на черном фоне применится к модели ‘Street’. Также теперь окажется доступным ряд опций в закладке ‘Lighting’.
  • Убедитесь, что ‘Environment Render’ все еще выделен, а ‘Animated Character Render’ нет. Крассный крест поверх иконки глаза означает, что визуализатор (render) не выделен.
  • Убедитесь, что ‘Sun Light’ выбран.
  • Установите ширину ‘Width’ и высоту ‘Height’ на 256. Нажмите кнопку ‘Set Absolute’. Обратите внимание, как обновится зеленая на черном решетка.
  • Убедитесь, что опции просчета освещения ‘Calculate lights’ и просчета теней ‘Calculate shadows’ выбраны. Остальные опции могут быть отключены.
  • Установите ‘Anti Aliasing’ на 1x.
  • Создайте тестовую карту освещения с этими настройками, нажав на кнопку ‘Calculate Lighting’ (Просчитать освещение). Появится окно прогресса. Учтите, что просчет световой карты может занять некоторое время, вплоть до нескольких минут. После просчета объект ‘Street’ долежн отобразить световую карту с тенями.
  • В закладке поверхностей ‘Surface’, из выпадающего списка смешивания текстур ‘Texture Blending’, выберите значение альфа 'Alpha value'.
  • В закладке настроек 'Properties', установите фактор текстуры 'Texture Factor' на '0.75'. Обратите внимание на то, что световая карта смешалась со слоем текстуры под ней.
  • В закладке освещения ‘Lighting’, установите ширину ‘Width’ и высоту ‘Height’ на 1024, а ‘Anti Aliasing’ на ‘4x’.
  • Создайте финальную световую карту высокого разрешения с этими новыми настройками, нажав на кнопку ‘Calculate Lighting’. Обратите внимание на то, что время просчета увеличилось.
  • Подождите, пока просчет световой карты завершится и изучите результат.
  • Создайте световые карты для оставшихся поверхностей объекта 'Street'.

Законченная сцена:
..\Tutorials\2.5 – Lighting and shadows\Lighting and shadows – Complete.cgr

Если у вас есть материалы, или вы хотите дополнить существующие, если вы хотите писать новости относящиеся к технологиям реалтайм рендеринга, или имеете полезные файлы, вы можете стать резидентом Guest3D.ru. Для этого нужно написать письмо в свободной форме на admin@guest3d.ru, с указанием вашей мотивации. Кроме того, каждый резидент получает возможность создать свою страницу, ссылка на которую будет прикреплена к каждому опубликованному вами материалу.
вход