Bender Bending

Max Payne: Основы освещения

Официальное Руководство пользователя Max Payne 2 Tools

Введение

В этом разделе мы изучим основы постановки освещения на уровне. В Max Payne 2 мы предлагаем вам новую систему освещения, которая называется Global Illumination System (также известную как GIS). В основном новая система работает лучше и просчитывает освещение намного быстрее, чем предыдущая система в Max Payne (2001).

Постановка источников света

Сперва давайте просто рассмотрим одну комнату для экспериментов с освещением. Подобно первому Max Payne лучи света испускаются различными полигонами любого меша.
Сделайте небольшую комнату сначала и создайте меш в форме куба. Перейдите в режим F6, отметьте точку на одном из полигонов и нажмите L
Откроется следующее диалоговое окно:
Color (Цвет) - определяет окраску исходящего света. Это простая величина RGB.
Новая система освещения создаёт определённое количество эмиттеров на поверхности определённого полигона посещения. Это зависит от значений, определённых где-нибудь в другом месте (об этом позже). Каждый эмиттер испускает свет в том же самом направлении, что и нормаль поверхности. Значения углов параметров hotspot и falloff определяют соответствующее значении каждого отдельно взятого эмиттера.
На поверхности полигона будет множество эмиттеров, по этому выходящий из полигона свет будет достаточно равномерным.
Выставьте значения самостоятельно и нажмите "OK". Теперь мы првоведем визуализацию источников освещения и увидим как это работает. Откроем папку maxed и запустим файл LocalRender.bat. Стартует Global Illumination Server и клиент автоматически начнёт соединение. Вычисление GIS всегда требует сервер, который разделит карту на ячейки и клиент производит фактическое вычисление освещения. Как видите, сервер и клиент могут быть запущены на одной и той же машине. Если у Вас есть другие компьютеры Вы можете их также подсоединить их к серверу. Вы должны только определить новый адрес в верхней строчке файла config.txt, находящегося в папке GISClient. Адрес - естественно IP сервера.
Убедитесь что две команды запущенны . Одна из них должна быть "CalculationTestServer.exe" а другая "WinCalculationClient.exe". Если сервер не стартовал, откройте config.txt в папке GISServer каталога maxed. Проверьте, правильно ли указан в X_SharedDBDir путь к папке database. Также убедитесь, что указан ShareDir . Когда расчёт освещения для Вашего уровня будет закончен, то результат будет помещён в указанный ShareDir.
Также Вы можете посмотреть на статус сервера открыв интернет-браузер (по крайней мере это работает в Internet Explorer 6) и набрав"localhost" в адресной строке.
После того, как Вы запустили клиент и сервер, возвращайтесь в редактор MaxEd.
Выберите GIS и "Send Level" в главном меню. Откроется диалоговое окно запроса GIS сервера IP. Наберите "localhost" и нажмите OK. Теперь уровень послан на сервер для обработки. Сервер разбивает уровень на ячейки и каждая ячейка посылается клиенту. Вы можете контролировать всё это через сгенерированную веб-страничку.
После завершения процесса уровень помещается в определённый "ShareDir". Вы должны снова загрузить его в MaxED. Должен автоматически включится вид с диффузией и световыми картами. Вы можете переключать режим отображения нажав 1, 2 или 3 на цифровой клавиатуре (в случае, если это не работает, проверьте индикатор цифровой клавиатуры).
Освещение должно выглядеть подобным образом.
Мы можем изменить значения hotspot и falloff к меньшему. Со значением 40 для hotspot и 50 к falloff, свет станет выглядеть примерно вот так.
Заметьте, что граница света стала чёткой в сравнении с предыдущим результатом.Хотя это будет весьма бесполезно без подсветки дополнительных источников света.
Иногда этот вид остро обрамлённого подхода хорош для драматической сцены или небольших ламп, но обычно на практике для получения небольшого осветительного пятна - hotspot - и большого угла гашения - falloff - используйте 70 и 150 градусов:
Зачастую такой подход, с острыми краями хорош для драматической сцены, или небольших ламп, но обычно более практично использовать для hotspot меньший угол, а для falloff больший угол, скажем, 70 и 150 градусов:

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

Вы можете сымитировать настоящий живой источник света создав небольшой источник света с высокими значением интенсивности. Максимальная интенсивность - 2000. Существует лимит тому, насколько полезным является небольшой свет - обычно огни 5x5 см. слишком малы для применения на практике не только потому, что они испускают очень мало света (даже с высокой интенсивностью), а также и потому, что разрешение световых карт, необходимого для отображения света, принадлежащего небольшим источникам, должно быть очень высоким, чтобы можно было отобразить результаты без серьёзных погрешностей.
В отличие от старого radiosity система GIS медленнее получает большое количество огней, имеющихся на Вашем уровне. Поэтому старайтесь поменьше ставить полигонов на сложных сферических ламповых объектах, испускающих свет. Лучше сделайте куб вокруг лампы , создайте шесть сторон, испускающих свет и поставьте галочку "Exclude from Game" в свойствах объекта. Тогда этот объект будет отбрасывать свет, но непосредственно в игре его не будет видно.
Кроме вышеупомянутых значений angles (углы), intensity(интенсивность), существует несколько показателей, которые воздействуют на результат Вашего конечного освещения, первым и главнейшим очевидно является разрешение световых карт - lightmap resolution; в основном высокое разрешение используется для большинства точных теней и освещения, которых Вы добиваетесь, но в данном случае визуализация займет много времени. Подобно текстурам, световые карты - lightmaps - съедают много памяти: чем больше точных световых карт у Вас имеется, тем больше они сжирают памяти. Вы можете поменять разрешение световых карт, перейдя в режим F6 , укажите полигон и нажмите K. Разрешение в 4 считается относительно высоким значением. Вы также можете поменять разрешение световых карт всех объектов в режиме F5, выбрав объекты и нажав shift-K.
Вы также можете выбрать "solid color" в свойствах световых карт. Это будет своего рода "обман - fake" световых карт. Это будет полезным для объектов ламп, которые не испускают свет непосредственно, но используют фиктивный свет для фактического освещения. Не забудьте замораживать световые карты на объектах таких типов (о замораживании световой карты - lightmap freezing - говорится ниже).
Есть инструмент для проверки световых карт. Вы можете открыть его, нажав F1 и поставив галочку напротив параметра "lightmap density" . Затем убедитесь, что находитесь в режиме Lightmap and Diffuse. Вы можете перейти в него нажав 3 на цифровой клавиатуре.
Если Вы хотите удалить или изменить свойства светового источника - light source, надо будет найти его в окне иерархии.
Затем кликните правой клавишей мыши и вызовите контекстное меню для светового источника. Здесь Вы можете найти пункты удаления и свойств.
Также есть опция сглаживания световых карт вокруг нескольких полигонов путём добавления ещё нескольких вокруг. Сначала Вы должны добавить группу для объектов. Вы можете сделать это, найдя объект в древе иерархии и кликнув правой клавишей мыши. Выберите "Add Polygroup".
Появится новый дочерний объект под названием Polygroup_00. Вы можете добавить и удалить полигоны из группы выбрав группу в иерархическом списке и перейдя в режим F6. Затем shift-клик на полигонах на объекте. Когда полигоны будут сгруппированы - polygroup, то группа обозначится слегка синим цветом. чтобы переключить сглаживание световых карт на on, Вам необходимо отредактировать свойства группы полигонов кликнув правой клавишей на группе в иерархическом списке и выбрав "Properties".
Посмотрите на флажок "Smooth Lightmaps" в диалоговом окне, которое изображено выше и сделайте точно так же.
Вы также можете видеть такие опции, как "Freeze Lightmaps" и "Ray Tracing". "Freeze Lightmaps" закрывает световые карты так, чтобы новый цикл визуализации GIS не затрагивал их.
Ray tracing является улучшенной версией просчёта освещения и обеспечивает более точные результаты. Однако, это очень медленно и не рекомендуется для общего использования. Ray tracing должен использоваться, когда на световых картах есть явные артефакты. Это может случится, например, когда объекты расположены очень близко друг к другу (таких как дверь или рама).

Визализация

Наиболее важными в аспекте качества, являются значения 'Viewport size', 'GIS MaxEnergyPerShoot' и 'GIS StopAtEnergy'. Viewport size - определяет качество света, MaxEnergyPerShoot - точность света, а StopAtEnergy соответствует немного старому значению 'rendering passes', значение его определяется как 'далеко/долго - far/long' испускаемого света, направленного с поверхности. Значения GIS выдуманы, так что, чем меньше число, тем выше качество рендеринга. Вы можете поменять эти значения, открыв окно настроек документа (Tools -> Document preferences или CTRL-P). Необходимые параметры расположены в нижней части окна.
"Average lightmap borders" фильтры граней световых карт. Трудно сказать, хорошо или плохо это выглядит. Лучший способ выяснить это заключается в тестировании. Он не используется в Max Payne 2.
Вот некоторые типовые снимки различных значений (Viewport/MaxEnergyPerShoot/StopAtEnergy).
В Max Payne 2 мы вообще использовали значения 512 - 3.0 / 0.3. В некоторых областях небольшие, такие как 512 - 1.0 / 0.1.
Присутствует небольшое количество 'шума - noise' при использовании маленьких видимых размеров - viewport sizes - и более тёмных сцен и наличие пятен - blurrier - при использовании высоких значений MaxEnergy/StopAt. Вот несколько изображений для того, чтобы подчеркнуть различия в освещении:
В действительности изображения увеличены, показывают различия между размерами видимого - viewports - в 128 и 512 (2.0/0.2 слева и 50/10 справа).

Расчет объемного освещения

Метод расчёта освещения персонажей и теней мы назвали Вычисление объёма - Volume Calculation. Он основан на световых картах, уже рассчитанных на уровне. После того, как Вы вычислили световые карты, Вы можете перейти к вычислению объёма освещения. Когда всё готово, запустите VolumeCalculationServer.exe в подпапке VOLSERVER из директории maxed. После запуска сервера вернитесь в MaxEd и выберите "GIS -> Send Level (vol)". Затем выберите "localhost" в качестве адреса. Уровень будет послан на сервер вычисления объемного освещения; клиент запустится автоматически, когда сервер получит папку.
Если у Вас проблемы запуска сервера VolCalc, проверьте файл config.txt, находящийся в папке VOLSERVER. Должно быть указано такое же значение X_ShareDBDir, как и GIS. Разрешение определяется в метрах, обеспечивающее точные вычисления объёма. Мы используем значение "1" в Max Payne 2.
В случае, если есть большие области, где персонаж перемещаться не будет, Вы можете использовать lighting boxes. В случае, если есть один или несколько volume lighting boxes - в комнате, будут рассчитаны объёмы только внутри этих боксов. Вы можете разместить боксы подобно им, перейти в режим F3 и нажать N. Затем выберите Volume_Lighting_Box из выпадающего контекстного меню. Вы можете изменить размеры бокса, открыв его свойства.
Вот вся основная информация, необходимая для создания освещения в Max Payne 2.

Просмотров: 2 738

Srgo37 #1 - 7 лет назад 0
">>>Убедитесь что две команды запущенны . Одна из них должна быть "CalculationTestServer.exe" а другая "WinCalculationClient.exe". Если сервер не стартовал, откройте config.txt в папке GISServer каталога maxed. Проверьте, правильно ли указан в X_SharedDBDir путь к папке database. Также убедитесь, что указан ShareDir .<<<"""
Всё проверил всё правильно. Сервер всё равно не запускается.