Добавлен , опубликован

Разъяснение неясностей

Содержание:
Сегодня передо мной стоит задача рассказать вам несколько простых вещей: добавление своих текстур (и некоторые моменты их редактирования), немного поработаем с "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__________________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 - применить изменения группы точек, итого может получиться нечто вроде этого:
  1. Трубы/цилиндры - выбираем mesh, кликаем по пункту меню Patch/Cylinder (или Patch/More Cylinders/* Cylinder, в зависимости от того какого типа цилиндр мы хотим создать). Вот и получилась труба/цилиндр, для состыковки с другими трубами, мы всегда можем взять и согнуть её с помощью "Patch Bend Mode".
  1. Остальное - это выгиб для создания неугловатых стен, конус/сфера (хотя это для браша, но отнести сюда стоит), растертую по полу кровь. Выгиб - 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, всегда рад.

Содержание