#1
06 февраля 2013 в 03:31
[list][list][list]Введение<br /><br />Освещение уровня является результатом взаимодействия трех типов воздействия на текстуры, которые он содержит:<br /><br />(подробней о структуре шейдеров можно прочитать в статье шейдеры). <br /><br />q3map_lightImage texturename.tga<br /><br />texsturename.tga - собственно та текстура, с помощью которой q3map2 будет рассчитывать цвета лайтмэпов. Если параметр не определен, свет будет рассчитываться из (я не знаю откуда!!!). Применяется параметр в том случае, если текстуры, входящие в шейдер, не генерируют тот цвет, который задумывал дизайнер.<br /><br />q3map_surfaceLight N<br /><br />Яркость свечения текстуры. Значения N соответствуют значениям параметра light в лампочках, но он должен рассчитываться исходя из размера освещающей текстуры. То есть для маленьких лампочек следует выставлять N больше, чем для длинных светящихся полос. <br /><br />q3map_lightStyle N<br /><br />Параметр эквивалентен ключу style в лампочках и действует таким же образом, т.е. задает стиль свечения, генерируемого шейдером. Параметр N может варьироваться от 1 до 31. Более пдробно о ключе style для источников света - ниже по тексту.<br /><br />q3map_lightRGB R G B<br /><br />Самый высокоприоритетный способ задать цвет лайтмэпов, создаваемых шейдером. Цвет задается в нормализованном виде и выставляется независимо от значения параметра q3map_lightimage или цвета текстур, входящих в шейдер. <br /><br />q3map_sun R G B I D E<br /><br />Создает «солнечный» источник например, от неба (sky) или скайбокса (skybox). Описание параметров:<br /><br />
- эмбиент (англ. ambient light - рассеянный свет);<br />
- точечные источники света (light entity);<br />
- свечение текстур посредством шейдеров (Quake 3) и surface-параметра light (Quake 2)<br />
- кликнуть правой кнопкой по рабочей области и выбрать в entity menu пункт light;<br />
- задать яркость света (по умолчанию 300; можно изменить в любое время, не обязательно сразу).<br />
- создать target_position (с помощью того же entity menu);<br />
- связывать их, выделив (любыми способами) сначала light, потом target_position и нажав CTRL+K (хоткей для selection/connect entities).<br />
- R G B - цвет лайтмэпов (не обязательно в нормализованном формате, компилятор сделает все сам);<br />
- I (intensity) - интенсивность (аналогично q3map_surfacelight). Рекомендуемые значения 50..200;<br />
- D (degrees) E (elevation) - значения углов, определяющие положение «солнца» на «небе».<br />
- Ds - угол разброса полутеней. В жизни Солнце видно с Земли под углом 0.5 градусов, в q3 же рекомендуется устанавливать значения 2..3;<br />
- S - количество случайных лайтмэпов, образующих полутень (возможно, что преведено не совсем правильно; оригинал: the number of random jitters distributed over the solid arc). Рекомендуемое значение - 16.<br />
- A (amount) - аналогичен параметру I (intensity) в q3map_sun;<br />
- I (iterations) - экспоненциальный фактор размытия лайтмэпов. Рекомендуется устанавливать I=3, т.к. меньшие значения не очень заметны, а большие - слишком долго рассчитываются и не сильно улучшают результат.<br />
#2
06 февраля 2013 в 03:31
[list]Детальные тени в Quake 3<br /><br />Автор: Barnes<br /><br />Одна из основных проблем при картостоении под quake3 является сложность с установкой хорошего освещения. Однако поставить хорошо свет это половина дела. На уровне все равно будут невыразительные, теряющиеся в общей массе тени. Причина состоит с малом размере карты освещения (lightmap). К сожалению Quake 3 в отличии от Enemy Territory не имеет поддержки карт освещения высокого разрешения (до 1024х1024; стандартый размер lightmap в q3 - 128×128). Но тем не менее есть способ значительно улучшить качество света и теней на уровне. Для компиляции небходим q3map2.<br />Редактирование шейдера<br /><br />Немного отредактируем один из шейдеров текстур. Открываем шейдер base_floor.shader и ищем в нем описание текстуры proto_grate4. В нем меняем строку surfaceparm nonsolid на surfaceparm alphashadow, то есть убираем «неплотность» текстуры на функцию, позволющий компилятору рассчитывать тень через альфаканал текстуры.<br /><br />Открываем в радианте карту-пример и компилируем ее. На выходе мы получаем невыразительную картинку: <br /><br /><br /><br /> Теперь, чтобы сделать тени более детальными, следует прописать в объекте worldspawn параметр _lightmapscale со значением 0.1. Хотя, в общем, достаточно значения 0.256, при условии что не надо сильно детализировать альфа тени.<br /><br />Особенности компиляции<br /><br />В BSP фазе необходим ключ -meta, в противном случае скейл лайтмэпов не заработает. Теперь главное - расчет освещения. Поскольку мы, не меняя размера лайтмэпа, просто меняем его маштаб, то при сильном маштабировании (значение менее чем 0.256) начинает вылезать «лесенка», которую необходимо сгладить. Для этого вы используем ключ -filter. В результате мы имеем на выходе вот такой результат<br /><br /><br /><br />пример можно взять тут<br /><br />Динамический мигающий свет в Quake 3<br /><br />Авторы: GT-Agressor и Dyxxx<br /><br />Также в компиляторе q3map2 есть функция создания мигающего источника света. Для этого в свойствах лампочки следует прописать<br /><br />Key - style<br />Value - N<br /><br />Значение N может быть любым от 1 до 32. Число означает периодичность и характер мигания:<br /><br />
- Нормальный<br />
- Мерцающий (первый вариант)<br />
- Медленый жесткий пульсирующий (яркий)<br />
- Свечка (первый вариант)<br />
- Быстрое мигание<br />
- Слабая пульсация 1<br />
- Мерцающий (второй вариант)<br />
- Свечка (второй вариант)<br />
- Свечка (третий вариант)<br />
- Медленое мигание (четвертый вариант)<br />
- Флюорицирующий мерцающий<br />
- Медленая пульсация не затухающая до темноты<br />
- Быстрая пульсация<br />
- Смешаный (Тест)<br />