Max Payne: Освещение

Содержание:
Итак, мы добрались до освещения. Движок Max Payne 2 использует карты освещения (lightmap). Динамический свет есть (см. Dynamic Pointlights далее), но он распространяется только на персонажей и эффекты. Помещения им освещать не получится.

Источник освещения

Для начала создайте какой-нибудь меш. Перейдите в режим F6, наведите курсор на грань, которая будет излучать свет и нажмите L (СКМ -> Lighting -> Assign Light Source). Откроется окно свойств источника света (он станет подобъектом вашего меша). Color и Intensity – это, как не трудно догадаться, цвет и интенсивность освещения (которое, кстати, зависит еще и от размеров источника, и довольно сильно). Falloff Angle и Hotspot Angle – это углы распространения света. Falloff отвечает за общий размер освещения, а Hotspot – это размер яркой области в центре. Если вы хотите сделать равномерное освещение, ставьте 180/180. Вот пример источника (из официального руководства) с разными значениями углов (Falloff / Hotspot):
Теперь запускайте C:\MaxPayne2Dev\MaxEd2\ Local-GIS-Render.bat. В главном меню MaxEd выбирайте GIS -> Send Level. Жмите ОК. Начнется расчет освещения, в результате вы получите в папке Levels файл с именем <имя уровня>_done.lv2. Это Ваш уровень уже с картами освещения. Закрывайте текущий и открывайте "done". Переключаться между режимами отображения уровня можно в выпадающем меню на панели инструментов (Difffuse * Lightmap - с освещением, Duffise - без освещения). Аналогично производится расчет динамических теней и освещения персонажей. Запускаете C:\MaxPayne2Dev\MaxEd2\ Local-VOL-Render.bat и выбираете Main Menu -> GIS -> Send Level (vol). Этот пункт становится доступен только после расчета освещения. Заметьте, что можно отправлять на расчет не весь уровень, а одну комнату. Порой здорово экономит время.

Set Lighting Curve - обработка карт освещения

Для изменения карты освещения в целом есть инструмент Main Menu -> GIS -> Set Lighting Curve. Параметры следующие:
Output Minimum (0 - 127) – освещенность черных участков. Если повышать, то даже в тех местах, куда вообще не попадает свет, будет хоть что-то видно.
Value that maps to 128 – нечто вроде контрастности карты. <128 – более контрастно, >128 – менее.
Output Maximum (128 - 255) – освещенность белых участков. Если понижать, то яркие области будут тускнеть.
Equalization (0 - 100) – неизвестно.

Экспериментируя с Set Lighting Curve, мне удалось установить некоторые закономерности. Рисунки показывают принцип работы этой операции. Нижняя "шкала" – это исходная гамма карты. Левая "шкала" – изменяемая гамма. То есть, если от каждого значения нижней шкалы (по сути, цвета) провести вертикальную линию до пересечения с Lighting Curve, а оттуда горизонтально на левую шкалу, то мы получим цвет, который заменит первый (нижний). Рассмотрим самую очевидную операцию – Вы хотите равномерно затемнить карту. Простое уменьшения параметра Output Maximum не дает желаемого результата – карта тускнеет, но неравномерно, в основном яркие места. Нужно еще увеличить "Value that maps to 128". Это приблизит форму Lighting Curve к прямой – то есть придаст освещению равномерность. Аналогично можно осветлить карту, и даже сделать некое подобие дневнго освещения.
Часто используется такой прием – свет испускает не сам объект, а некий невидимый источник света, обычно куб или спрайт. В этом случае в свойствах такого скрытого источника ставится Exclude From Game. Кстати, раз уж мы заговорили о свойствах, обратите внимание на пункт Cast No Shadows – отключение тени объекта. Это пункт нужно практически всегда включать для динамических объектов, а иногда и для некоторых статических.
При включенном Exclude from Lighting объект не принимается GIS'ом в расчет. Однако, если для объекта уже просчитаны карты освещения, они сохраняются.
Если портал искажает Вам карту освещения, поставьте в его свойствах Ignore in GIS Lighting.
В свойствах Polygroup'ов – Smooth Lightmaps включает сглаживание карт освещения. Полезно для закругленных объектов, для ровных не рекомендуется.
Freeze Lightmaps запрещает изменение карты освещения, то есть новый расчет не повлияет на данные полигоны.
Smooth Geometry – не используется. Есть подозрение, что это параметр должен был быть вместо Smooth Lightmaps при использовании Reflection.
Ray Tracing – включает технологию трассировки лучей. Получается более мягкое освещение. Правда, мне не удалось установить принцип работы параметров Max Edge / Max Angle – разницы при 5/30 и 20/90 я не заметил. Но зато результат вообще от использования Ray Tracing налицо!
В начале этой главы я упомянул о Dynamic Pointlight. Это невидимый источник света, который дает отблеск на персонажей. Это может быть полезно, если Вы использовали некий невидимый источник света, но хотите, чтобы отблеск на персонажах исходил от видимого источника.
Кстати, возле источников света красиво смотрятся блики – flares. Ставятся они в F3: N. Блик может быть как направленным (при изменении угла взгляда на блик меняется его яркость), так и "равносторонним". Сами спрайты бликов лежат в C:\MaxPayne2Dev\Game\data\database\flares.
Напоследок раскрою секрет – на самом деле динамическое освещение в Max Payne есть! Вы, возможно, заметили, что выстрелы, огонь и.т.д. дают отблеск не только на персонажей, но и на объекты. Здесь Вам понадобятся некоторые навыки скриптинга (см. статью по скриптам) (articles.php?section=mp&name=mp2_scripts) . Так вот, среди скриптовых команд есть функция PS_StartEffect. Выбираете эффект с именем типа light_цвет_размер и получаете настоящий динамический источник света! Естественно, он не заменит вам карты освещения, но позволит избежать черных плоскостей на объектах, которые не полностью освещены статическими источниками. Проще говоря, когда сделали вы ящик, осветили его, а потом пнули – а у него другая сторона сплошняком черная.


Views: 5 961

Комментарии пока отсутcтвуют.