Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

q3:создание_собственного_неба_-_скайбокс [06.02.2010 09:57]
Nt-kop4ik картинки
q3:создание_собственного_неба_-_скайбокс [25.12.2012 23:56] (текущий)
Строка 1: Строка 1:
 +====== Небо ======
 + 
 +**Автор: 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// **нужен**.
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki