Сегодня передо мной стоит задача рассказать вам несколько простых вещей:
добавление своих текстур (и некоторые моменты их редактирования), немного
поработаем с "Simple patch mesh" - гениальным инструментом в руках мастера,
ну и там по мелочам. ;)
Добавление текстур. Текстуры в Doom3 добавляются
путем нехитрой операции, которую я весьма подробно рассмотрю. Итак. Раньше,
для того чтоб нам добавить текстуру в Radiant требовалось кинуть наш "шедевр"
в папку "textures" и бегом в Radiant налаживать на браш, но теперь - нет,
сейчас все изменилось - текстуры стали сложнее и нам теперь нужно указать
инструкции (о них чуть позже) для Doom3 - собственно как использовать
данную текстуру.
Обычная текстура в Doom3 должна состоять из следующего: главной
текстуры, её карты нормалей (бамп, в простонародии), спекуляре (текстуры
с подсветкой (блеском от источников света) - specular), возможно, альфа
каналом (хотя при правильном оформлении текстуры он может и не понадобиться
- именно этот вариант мы и рассмотрим).
Итак, мы сделали текстуру, и предположим это трава (или мы жалко украли
из какой ни будь игры текстуру травы). Она, разумеется, должна быть в разрешении
кратному двум, должна быть полноцветной (если вы, например, сохраните текстуру
в grayscale, то Doom3 непременно выдаст ошибку, при загрузке карты
с этой текстурой, и напомнит вам какие форматы текстур он поддерживает),
к сожалению, мы можем использовать только TGA формат (также убогий сжатый
вариант - DDS (DXTx), но это отврат, поэтому о нем забудем), никакого JPG,
для нелюбителей больших размеров напомню - сжатый RLE TGA не поддерживается.
Текстура у нас есть, теперь нужно сделать организацию папок, для последующей
переупаковки в ZIP и добавления в Doom3. Создаем где-нибудь папку "Doom3
PROGECTS", в ней подпапку "New texture pack", в "New texture pack" создаем
папки "textures", "materials". В "textures" создаем папку "New_tex_1" (если
кто-то считает что такая организация файлов невостребованная, то он ошибается,
при создании/модификации файла материалов, очень удобно, когда понятная
организация папок и не нужно будет потом вспоминать "Чего мы туда напихали?",
когда будем писать пути текстур). Все нужные папки приготовлены, и мы перемещаем
нашу траву (переименовав имя в "grass_1") в папку "New_tex_1". Теперь нам
нужно сделать бамп и спекуляр. Бамп делается с помощью плагина "Normal
map filter" для Photoshop'a (собственно в нем мы и будем редактировать
текстуры), берем оригинал текстуры, и указываем затемнением участков
- впадины, осветлением - возвышенности, рекомендую оставлять четкие грани
- иначе будет плохо смотреться, а также неплохо было бы добавить шума -
в игре выглядит, будто текстура детализирована и смотрится немного реалистичней,
потом применяем плагин (слегка поэкспериментировав с настройками, иначе
возможно плагин не так преобразует рельеф и у нас впадины станут возвышенностями,
или наоборот), если вы заметили похожую на вашу текстуру в думе, то рекомендую
взять с неё бамп и подогнать под свою текстуру - так получится заметно
лучше (поскольку в ID делали бамп на основе трехмерных моделей, а не потели
в Photoshop'e). Сохраняем файл в папке "New_tex_1", с именем "grass_1_b".
Спекуляр - берем оригинал текстуры, создаем новый слой, заливаем его черным
и делаем его прозрачным на половину, потом кистью зарисовываем области
отражающие свет (темновато-сероватым цветом - иначе карта вспыхнет при
активном использовании света), восстанавливаем прозрачность слоя? сводим
и сохраняем в папке "New_tex_1", с именем "grass_1_s". Или более простой
вариант создания спекуляра - открываем в Photoshop'e и немного экспериментируем
с опциями слоёв, делая текстуру бледнее, преобразовываем в grayscale и
сохраняем. Также хочу заметить, что если вашей текстуре не нужен бамп или
спекуляр, то чистые файлы делать не нужно - это отразиться на скорости
прорисовки (причем очень заметно), легче их просто не сделать и не описать
их в файле материалов.
Файлы текстур готовы, теперь осталась малость (хотя как для кого) -
создать файл материала, в котором мы опишем пути к текстурам и суть самой
текстуры. Выглядеть он должен так (если только текстура простая, если нет
– см. ниже):
textures/New_tex_1/grass_1
{
qer_editorimage
textures/New_tex_1/grass_1.tga
diffusemap
textures/New_tex_1/grass_1.tga
bumpmap
textures/New_tex_1/grass_1_b.tga
specularmap
textures/New_tex_1/grass_1_s.tga
//heightmap
- карта высот, если нужна
}
Самая верхняя строка (textures/New_tex_1/grass_1), описывает папку/имя
текстуры, которое будет использовано в редакторе в закладке "Media". Лучше
всего чтоб он совпадал со структурой папок, чтоб не было путаницы. Параметр
"qer_editorimage" описывает путь к файлу текстуры, которую должен использовать
редактор, "diffusemap" - путь к главной текстуре, "bumpmap" - путь к текстуре
карты нормалей, "specularmap" - путь к спекуляру. Это и есть основные параметры
текстур. Теперь немного о том, что можно еще описать в файле материала.
Можно также указать текстуру, с которой наша текстура будет "реагировать"
(как вы заметили скрипт имеет контейнерную структуру и мы можем писать
вложения), это будет выглядеть так:
{
blend
имя_реакции
map textures/.../*.tga
}
Параметр "blend" указывает на реакцию, которая будет происходить
с нашими текстурами, это: "add" - наложение текстуры поверх нашей, "blend"
- просто будет смешиваться, "diffusemap" - наложение карты диффузии, "bumpmap"
- наложение карты нормалей, "specularmap" - наложение спекуляра, есть также
"gl_*" значения, но они пока невостребованные. Можно также дописать во
вложение степень отсечения прозрачности (используется совместно с translucent
(см. ниже)): "alphatest" - значение до 1.0, масштаб - параметр "scale"
("centerscale" - масштабировать от центра), или определенное действие:
rgb
throbtable[ time * .5 ] //Текстура пульсирует через определенные интервалы
времени (в данном случае каждые пол секунды)
rgb
blinktable[ time * .5 ] //Будет мигать
scroll
time * 0.1 , time * 0.1 //Будет скроллировать, полезно для крови
rotate
time * 1 //Вращаться
Для создания альфа канала нужно создать текстуру, где темными
областями обозначить прозрачность, степень отсечения черного указать параметром
"alphatest", и дописать в главный контейнер "translucent" (см. еще ниже
:)).
Также можно указать цвет текстуры путем добавления данных параметров
в контейнер с описанием текстуры (или реакции, и т.п.):
red значение
//Сколько красного (до 255)
green
значение //Сколько зеленого (до 255)
blue значение
//Сколько синего (до 255)
В общий контейнер, для удобства, можно еще дописать параметр "description"
- "описание", тобиш описание текстуры. Значение этого параметра должно
быть в кавычках. Теперь немного о тех параметрах, что помогут описать некоторые
особенности самой текстуры (параметрам не нужны значение, их наличие -
признак активации):
noShadows //Не отбрасывать тени на текстуру
noSelfShadow //Не отбрасывать тени на саму себя
twoSide //Двусторонняя текстура (без этого параметра с
одной стороны будет прозрачной)
translucent //Прозрачная текстура - под чистую сметает
черный цвет делая его прозрачным noimpact (в основном
исп. вместе с nonsolid) //Не твердый материал - можно пройти сквозь
glass //Обозначает что эта текстура стекла, более подробно
смотрите в материалах дума
stone //Текстура камня, более подробно смотрите в материалах
дума
vertexcolor //Вниз наклоненные проекции будут слегка затемнены
clamp //Не будет залито в режиме "плитки", если проектируется
мимо границ
collision //Разрешается столкновение (например, используется
в текстурах паутины)
Надеюсь, вы разобрались и сделали вам нужный файл материалов.
Сохраняем его в папке "materials”, как *.mat.
Теперь покажу, как должны выглядеть все файлы из нашего пака. Текстуры
(*.tga):
grass_1_s
|
grass_1
|
grass_1_b
|
grass_1_s
|
|
|
|
Файл материалов (*.mat)(аналогичный приведенному выше):
textures/New_tex_1/grass_1
{
qer_editorimage textures/New_tex_1/grass_1.tga
diffusemap textures/New_tex_1/grass_1.tga
bumpmap textures/New_tex_1/grass_1_b.tga
specularmap textures/New_tex_1/grass_1_s.tga
description "Fucking grass. Its sucks! :D”
}
Все. Текстура готова, осталось только содержимое папки "New texture
pack" сжать в ZIP, сохранить как *.pk4 и отправить в папку Doom3/base (извиняюсь,
что, возможно, оскорбил кого-то такими глупостями, но мало ли что :)).
Simple patch mesh. Очень полезная штука. С помощью неё мы можем
создать такие вещи как трубы (цилиндры), односторонние плоскости, конусы,
сферы, выгибы (для, например, стен в помещениях), ландшафты. Для того чтоб
сделать Simple patch mesh, нам нужно создать браш, выделить его, и активировать
пункт меню Patch/Simple patch mesh, перед нами появится некое окно, предлагающее
нам выбрать из скольких секторов будет состоять наш mesh. Мы выбираем 5
на 5 (для более детализированных изгибов рекомендую брать большие параметры).
Жмем Ok, наш браш стает односторонним (кстати, об односторонности, если
у текстуры выставить параметр twosided, то он наложится на обе стороны
mesh'a). Теперь мы можем проделать следующее:
1) Ландшафт (хочу также заметить, что согнуть можно любой mesh)
- делается это так, выбираем mesh, жмем на панели инструментов кнопку (на
ней изображены две стрелки, и согнутый mesh) с подсказкой "Patch Bend Mode"
и у нас подсвечивается группа точек (количество зависит от того какой детализации
мы выбрали mesh) которые мы можем поворачивать в различных направлениях,
тем самым, создавая изгиб т.е. рельеф, кнопкой "Change views", на панели
инструментов, изменяем вид плоскости и изгибаем, так как нам нужно, для
того чтоб перейти к следующей группе точек нужно нажать TAB и далее продолжать
изгибы, ENTER - применить изменения группы точек, итого может получиться
нечто вроде этого:
2) Трубы/цилиндры - выбираем mesh, кликаем по пункту меню Patch/Cylinder
(или Patch/More Cylinders/* Cylinder, в зависимости от того какого типа
цилиндр мы хотим создать). Вот и получилась труба/цилиндр, для состыковки
с другими трубами, мы всегда можем взять и согнуть её с помощью "Patch
Bend Mode".
3) Остальное - это выгиб для создания неугловатых стен, конус/сфера
(хотя это для браша, но отнести сюда стоит), растертую по полу кровь. Выгиб
- Patch/Bevel, Конус/сфера - Brush/Primitives/Cone(Sphere), кровь - создаем
браш, выбираем текстуру крови, жмем клавишу S, появляется окно с опциями
текстурирования, мы нажимаем кнопку Fit и она натягивает прям впору текстуру
(рядом поля должны быть 1 и 1), создаем mesh 3 на 3, и выгибаем - растертая
кровь готова.
Примечание: Для того чтоб посмотреть контрольные точки изгибов,
нужно просто кликнуть меню - Patch/Overlay/Set, или просто нажать Y.
По мелочам. Немного хочу рассказать о Clipper. Создаем
браш, жмем на панели инструментов кнопку с подсказкой "Clipper" (на кнопке
изображены три синих точки, соединенных линиями), или просто жмем X. Кликаем
по определенными местам нашего браша и вуа-ля, он разрезается по линии
выстроенной поставленными нами точками. Нажав ENTER мы оставим только подсвеченный
желтым кусочек, SHIFT+ENTER - обе части, CTRL+ENTER - выделить другой кусок.
Вот и все, что нужно знать о Clipper, он же кастратор. :D
Удачи! У кого проблемы – мыльте на iMiceman@mail.ru,
всегда рад.