создаем детальные тени в Quake 3

Одна из основных проблем при картостоении под quake3 является сложность с установкой хорошего освещения. Однако поставить хорошо свет это половина дела. На уровне все равно будут невыразительные, теряющиеся в общей массе тени. Причина состоит с малом размере карты освещения (lightmap). К сожалению Quake 3 в отличии от Enemy Territory не имеет поддержки карт освещения высокого разрешения (до 1024х1024; стандартый размер lightmap в q3 - 128×128). Но тем не менее есть способ значительно улучшить качество света и теней на уровне. Для компиляции небходим q3map2.
Редактирование шейдера

Немного отредактируем один из шейдеров текстур. Открываем шейдер base_floor.shader и ищем в нем описание текстуры proto_grate4. В нем меняем строку surfaceparm nonsolid на surfaceparm alphashadow, то есть убираем «неплотность» текстуры на функцию, позволющий компилятору рассчитывать тень через альфаканал текстуры.

Открываем в радианте карту-пример и компилируем ее. На выходе мы получаем невыразительную картинку:



 Теперь, чтобы сделать тени более детальными, следует прописать в объекте worldspawn параметр _lightmapscale со значением 0.1. Хотя, в общем, достаточно значения 0.256, при условии что не надо сильно детализировать альфа тени.

Особенности компиляции

В BSP фазе необходим ключ -meta, в противном случае скейл лайтмэпов не заработает. Теперь главное - расчет освещения. Поскольку мы, не меняя размера лайтмэпа, просто меняем его маштаб, то при сильном маштабировании (значение менее чем 0.256) начинает вылезать «лесенка», которую необходимо сгладить. Для этого вы используем ключ -filter. В результате мы имеем на выходе вот такой результат



пример можно взять тут

Динамический мигающий свет в Quake 3

Авторы: GT-Agressor и Dyxxx

Также в компиляторе q3map2 есть функция создания мигающего источника света. Для этого в свойствах лампочки следует прописать

Key - style
Value - N


Значение N может быть любым от 1 до 32. Число означает периодичность и характер мигания:

[list=1]

  • Нормальный
  • Мерцающий (первый вариант)
  • Медленый жесткий пульсирующий (яркий)
  • Свечка (первый вариант)
  • Быстрое мигание
  • Слабая пульсация 1
  • Мерцающий (второй вариант)
  • Свечка (второй вариант)
  • Свечка (третий вариант)
  • Медленое мигание (четвертый вариант)
  • Флюорицирующий мерцающий
  • Медленая пульсация не затухающая до темноты
  • Быстрая пульсация
  • Смешаный (Тест)

После компиляции в папке baseq3/maps создается папка [название_вашей_карты]. В ней лежат несколько текстур (lightmap'ы), которые обязательно нужно включать в пак с картой. Также в папке baseq3/scripts создается .shader файл с названием q3map2_[название_карты]. Его тоже нужно положить в пак с картой.

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

Ограничения: источник света не может быть  тригерируемым, то есть его нельзя запустить или остановить тригерами. Так просто можно использовать сколько угодно много таких лампочек (в разумных пределах), но все они будут моргать так же как и первая из них.

Дополнение: Что-бы на одной карте уместить лампочки с разными свойствами мерцания, нужно в свойства worldspawn добавить свойство _styleНомерСтиляЛампыrgbGen и\или _styleНомерСтиляЛампыalphaGen со значениями волн по типу

wave sin 0.3 0.4 0.33 1.7
wave square -0.5 1.5 1 3.3


Пример карты можно взять здесь

Всего комментариев: 1

#1 Barnes

где мои копирайты на первую статью?))))