...


Главная | Каталог статей | Регистрация | Вход | RSS
-->
Главная » Статьи » Разработка

Технология detailtextures

С приходом интерфейса Steam в Half-life появилась одна очень хорошая технология, до этого уже зарекомендовавшая себя в играх серии Unreal. Это detailtextures, или текстуры детализации поверхностей. Движек Half-life изначально был расчитан на текстуры низкого разрешения в основном для игры в режиме 640х480. Очень быстро технологии развились, а игра сохранила своих приверженцев и даже продолжает приобретать новых. Лично я играю в Half-life в разрешении 1024х768. При таком разрешении текстуры кажутся очень размытыми и бесформенными, что сильно сказывается на восприятии. Как вариант, при разработке карт можно использовать текстуры, масштабируя их с коэффициентом 0.5 или даже 0.25. Безусловно, текстурирование такой карты приблизится к качеству современных игр (хотя в них есть еще и бампмэппинг), но такой подход увеличит количество полигонов в кадре и, к тому же, сидеть и масштабировать каждую поверхность довольно муторное занятие. Еще это повлечет за собой некоторые проблемы с компиляцией, но они не на столько значимы.


Технология detailtextures заключается в том, что поверх основной текстуры в игре накладывается "маска" в оттенках серого, создающая эффект высокой детализации поверхности. Как правило, коэфициенты наложения лежат в области 16-100 точек маски на один пиксель оригинальной текстуры. При наложении маски, серый цвет в середине диапазона (RGB 127 127 127) воспринимается движком как прозрачный, оттенки темнее будут затенять текстуру, а оттенки светлее наооборот осветлять. Эта игра света и тени создаст впечатление неровности поверхности, подобно bumpmapping'у, только при bumpmapping'е освещенность поверхности пересчитывается в зависимости от источника света, а тут как бы запекается в одном положении.



Комбинированный скриншот из мода "Колючий-62", показывающий разницу между включенным и выключенным эфектом.

Для реализации этого эффекта нужен набор текстур-масок. Как я уже сказал, это должны быть картинки в градациях серого. Формат хранения - 24-битный TGA. В принципе, можно использовать и цветную картинку, но об этом позже. Маски распалагаются в паке мода "вашмод\gfx". Удобно создать еще одну папку внутри, к примеру "dt" чтобы не валить файлы в кучу. В каталоге "maps" создаем текстовый файл с названием "имякарты_detail.txt", он автоматически будет подхвачен движком. Например, для показанного выше примера (карта e1m2) этот файл будет называться "e1m2_detail.txt". Структуру этого файла легче всего понять на примере:






{tech_cables05 dt/dt_smooth1 10 10
~lt01 dt/dt_smooth1 1 4
~lt02_1 dt/dt_smooth1 1 4
~lt02 dt/dt_smooth1 1 1
aid01 dt/dt_wood3 6 8
aid01_1 dt/dt_wood3 3 8
aid01_2 dt/dt_wood3 3 8
aid01_3 dt/dt_wood3 6 3
barrel01 dt/dt_metal1 10 10

Мы видим, что сначала идет название текстуры (префиксы тоже нельзя забывать!), затем адрес маски (у меня они лежат так: "d:\Half-life\k62\gfx\dt\"), поиск начинается с папки gfx, поэтому она не указана. Дальше следуют коэффициенты наложения по осям X и Y соответственно. Они показывают сколько раз маска должна уложится в текстуру.


Совет: Для облегчения разработки мода имеет смысл создать такой файл для всех текстур, которые содержаться в моде и потом копировать его, вместо того, чтоб выписывать только используемые для каждой карты.


Для включения эффекта в игре используйте переменную "r_detailtextures" и значение "1"


Теперь можно поговорить и о нестандартном использовании detailtextures. Метод, который я опишу - довольно муторный, однако дает интересный результат. На самом деле, чернобелая гамма маски - это важное требование, но не обязательное. Что нам это дает? Во-первых, можно сделать высококачественную надпись на стене или пятна крови. Для этого мы в wad-файле делаем копию нашей текстуры под другим именем, рисуем пятно, используя цвет (127 127 127) как прозрачный и прописываем в файл соответсвие с коэффициентами 1 1. Это не самое интересное


Самое интересное заключается в том, что мы можем построить уровень с высококачественными текстурами! Для этого вы просто подбираете нужные текстуры и в формате TGA складываете где-то в районе папки "gfx". Теперь делаете wad-файл из этих текстур, уменьшеных, скажем, раз в 16 - чтобы в редакторе использовать коэффициенты масштабирования 1-4 (это экономит полигоны на больших пространствах). После того, как карта готова, вы создаете wad-файл с серыми (127 127 127) текстурами тех же размеров и названий, что и в предыдущем wad'е. Учтите, что для текстур с прозрачностью (начинаются на "{" и имеют чистый синий цвет последним в палитре) прозрачные области нужно сохранить. Наконец, заменяем цветной wad серым и прописываем файл *_detail.txt. Теперь карта выполнена в полноцветных высококачественных текстурах!


На этом все, успехов в картостроении.



Категория: Разработка | Добавил: Scrama (2007-08-22) | Автор: Дмитрий Скрама W
Просмотров: 2543 | Комментарии: 1 | Рейтинг: 4.2/5
Всего комментариев: 1
1 Scrama  
0
Криво только в табличке получилось с листингом, но это мелочь - итак понятно.

Имя *:
Email *:
Код *:
Вторник, 2024-04-16, 7:04 PM
Приветствую Вас Гость
Форма входа
Категории раздела
Разработка [1]
Разработка игр
Наши проекты [0]
Информация о проектах студии
Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 9
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Copyright BellGames Studio © 2024
    Сайт управляется системой uCoz