|
|
q3:создание_собственного_неба_-_скайбокс [07.02.2010 18:43] Nt-kop4ik |
q3:создание_собственного_неба_-_скайбокс [06.07.2020 03:50] |
====== Небо ====== | |
| |
**Автор: Spiteful Max** | |
| |
Источник: http://q3mapping.on.ufanet.ru | |
| |
Тебе понадобилось сделать небо над открытым пространством? Нет ничего проще: | |
| |
1. Создай браш прямоугольной формы, который бы поместил в себя то открытое пространство, над которым надо сделать небо;\\ | |
2. Выпотроши данный браш командой "Hollow"; | |
| |
{{:q3:небо_1.jpg|}} | |
| |
3. Теперь из пакета текстур "skies" выбери нужную тебе текстуру и натяни на получившиеся браши; \\ | |
4. Ненужные браши теперь можно удалить, но учти, что если ты удалишь нужный (с точки зрения Радианта) браш, то пути для ботов могут и не прописаться. | |
| |
Дополнено **Max Snake**:Не путайте небо(skie) и скайбокс(skybox), небо динамичное и может состоять из одного браша, а скайбокс статичен и состоит из коробки шести брашей, карта находится внутри этой коробки. | |
| |
| |
====== Создание скайбокса ====== | |
| |
**Автор: Spiteful Max, дополнил Max Snake** | |
| |
Сегодня мы будем делать что-то вроде неба, только оно не будет двигаться. Если у тебя открыт Радиант, можешь его закрыть, он нам пока не понадобится, а лучше всего запустить какой-нибудь файловый менеджер (Total Commander, например), хотя можно ограничиться и обычным Проводником. | |
| |
Итак, приступим: | |
| |
1. В папке "baseq3" создай папку "env" | |
| |
2. В созданной нами папке создай ещё одну, я, например, создал "morningdew" | |
| |
3. Теперь помести в неё текстуры с именами: | |
| |
[skyname]_lf.tga - левая текстура среды | |
[skyname]_rt.tga - правая текстура среды | |
[skyname]_ft.tga - передняя текстура среды | |
[skyname]_bk.tga - фон среды | |
[skyname]_up.tga - верхняя текстура среды | |
[skyname]_dn.tga - нижняя текстура среды | |
| |
где "skyname" название среды; | |
| |
{{:q3:p31_1.gif|}} | |
| |
4. Теперь в папке "textures" твоего "baseq3" создай папку с названием карты, среды - здесь без разницы. И помести в неё текстуру, которая будет отображаться в Радианте | |
| |
5. Перейди в каталог "scripts" и в нём создай файл "[myskyname].shader", где "myskyname" - это название среды | |
| |
6. В этот файл введи следующее: (Комментарии лучше не вводить) | |
| |
//Название твоей текстуры | |
textures/[mymapname]/[skyname] | |
{ | |
//это как раз та текстура, которая назначается в радианте | |
qer_editorimage textures/[mymapname]/[skyname].tga | |
//ракеты и т.п. пропадают из поля зрения, попадая в браш с небом, т.е. не взрываются, | |
//как при попадании в стену | |
surfaceparm noimpact | |
//небо игнорирует общее освещение на карте - чтобы твои источники света не светили на небо | |
surfaceparm nolightmap | |
//не оставлять следов от выстрелов | |
surfaceparm nomarks | |
//чтобы текстура неба не освещала сама себя | |
q3map_backsplash 0 0 | |
//насколько хорошо текстура излучает свет - тут можно ставить довольно высокие значения | |
q3map_lightsubdivide 512 | |
//объясняет игре, что браши с этим шейдером - небо | |
surfaceparm sky | |
//яркость свечения неба | |
q3map_surfacelight 150 | |
//параметры солнца: первые 3 номера - цвет (RGB), четвертая цифра - яркость, | |
//пятая - компас (север = 90 degrees, дальше, кажется, против часовой стрелки... 0, -90, 180 ), | |
//шестая - высота (12 часов дня = 90 градусов, горизонт (закат = 0 градусов, | |
//восход = 180 градусов (или наоборот) | |
q3map_sun 1 1 .98 100 160 60 | |
//параметры неба - эта строка объясняет игре, что текстуры для отображения скайбокса нужно | |
//брать из папки /[mymapname]/[skyname] и читатьвсе файлы, начинающиеся на [skyname]* | |
skyparms env/textures/[mymapname]/[skyname] - - | |
} | |
| |
Где [mymapname] - это название той папки, которую ты создал в "textures" и "env", а [skyname] - название твоей среды. | |
| |
7. Нужно вписать имя материала в список в файле baseq3/scripts/shaderlist.txt | |
| |
8. Создаем в радианте коробку, покрытую калком (caulk), внутренние стороны которой покрываем текстурой textures/[mymapname]/[skyname] | |
| |
9. Компилируем и запускаем карту. | |
| |
Вот что получилось | |
| |
{{:q3:p31_2.jpg|}} | |
====== Создание продвинутого скайбокса ====== | |
| |
Есть ещё один вариант скайбокса, который, к сожалению, незнаком многим мапперам, но который обладает наибольшими возможностями. | |
В этом варианте вне уровня создается небольшая коробочка, в которой создаются объекты, видимые за пределами уровня, например, горы на горизонте, или высотные здания. Все эти объекты делаются в миниатюре, что позволяет избежать долгой компиляции и, самое главное, не уменьшает быстродействие при значительном улучшении качества окружающей среды. | |
| |
* Создаем наш уровень с обычным скайбоксом. | |
* Создаем небольшую комнату за пределами уровня, в ней создаем entity _skybox (в контекстном меню после щелчка правой кнопкой) | |
| |
{{:q3:skybox1.png?800}} | |
| |
* Располагаем ентити примерно в середине этой небольшой комнаты (если есть такая необходимость можно в любом месте). Этот энтити показывает ту точку, откуда будет направлен взгляд игрока на окружение уровня. | |
* Относительно этого энтити располагаем другие объекты, которые должны быть в окружении уровня (скалы, высотные здание и тп) | |
* компилируем уровень, смотрим результат | |
| |
{{:q3:skybox2.jpg|}} | |
| |
Несколько советов: | |
- текстуры на элементах окружения желательно использовать высокодетализированные, с небольшим растяжением по вертикали и горизонтали | |
- можно использовать в окружении любые эффекты, текстуры, туман, воду и прочее | |
- _skybox энтити играет роль начала координат в окружении. Чтобы получить представление о том, как будет выглядеть окружение после компиляции, достаточно совместить его вместе со всем оружением с началом координат (точка "0 0 0") на вашей карте, и увеличить всю коробку в _scale раз | |
====== Использование ключа -skyfix ====== | |
| |
Вы, вероятно, замечали, как убого выглядит //скайбокс// (//skybox//) в quake3 - очень четко видны границы его граней. Это происходит из-за ошибки в драйверах от NVIDIA, которые не делали различий между параметрами //GL_CLAMP// и //GL_CLAMP_TO_EDGE// (они задают, как фиксируется текстура на грани). Это так называемый баг ”//ATI GL_CLAMP behavior//”. | |
| |
Для частичного устранения этой неприятности в //q3map2// был введен ключ фазы BSP //-skyfix//, благодаря которому на //скайбоксы// стало возможно смотреть без слез. Но, как можно видеть, линии на границах граней все-таки не исчезли. | |
| |
Точку в этой истории поставили следующие инструменты: //dfengine.exe// и //quake3mme.exe//. Эти исполняемые файлы заменяют оригинальный //quake3.exe// соответственно в моде //DeFRaG// (опционально) и //q3MME// (обязательно). И, благодаря модифицированному коду, они эффективно устраняют //ATI GL_CLAMP behavior// баг, не оставляя от него и следа. Однако, они не могут справиться с теми пунктирными ребрами, оставленными ключем //-skyfix//. | |
| |
{{http://s005.radikal.ru/i212/1002/6b/43b199ff7e4b.jpg?200x150|Баг}}{{http://i058.radikal.ru/1002/d9/1376baba02ed.jpg?200x150|Использование ключа -skyfix}}{{http://s003.radikal.ru/i201/1002/e1/27ee0ac90994.jpg?200x150|Уровень в dfengine.exe}} | |
| |
Отсюда следует правило для установки этого ключа: | |
| |
* если карта сделана для дефрага, либо вы хотите уведеть свою карту в мувике, //-skyfix// **не нужен**; | |
* если это карта для других модов, и вам не важно, как она будет выглядеть в муве, то //-skyfix// **нужен**. | |