САЙТ В ПРОЦЕССЕ РАЗРАБОТКИ
Главное меню сайта
Делаем сами
настройки игры
качаем общие файлы
качаем для клиента
качаем для сервера
качаем проги и др.
трюки
разное
урок 4.1
текстуры и декали

 Что такое текстура?
Текстура — это картинка, графическое изображение, которое наносится на стороны объектов. Благодаря текстурам, мы отличаем песчаную дорожку от асфальтированной, деревянный ящик от каменной глыбы, кирпичную стенку от скалы и т.д. Конечно, само по себе перекрашивание объекта, например, в текстуру автомобиля, не заставит его ездить, так же как и не будет открываться обычный браш, окрашенный в текстуру двери — для этого нужно превратить браш в энтити-объект и выставить для него свойства

Размеры текстур
Минимальный размер текстуры в Half-Life составляет 16х16 пикселей. Меньше нельзя, больше можно. Максимальный размер текстур, обычно используемый мапперами — 512х512 пикселей. Большего нам видеть не доводилось. Что будет при использовании бОльших текстур, поручаем проверить Вам :) Кстати, длина и ширина текстуры должна быть кратна 16, например: 128х64, 256х192, 48х32 и т.д.
Обычно, при нанесении текстуры, 1 текстурный пиксель приравнивают к 1 юниту длины объекта. Это считается нормальным масштабом, т.е. 1:1. Например, текстуру с размерами 64х64 пикселя следует наносить на сторону объекта с размерами 64х64 юнита или меньшими (в этом случае текстура «подгоняется» кнопкой Fit).
С масштабом наложения 1:1 текстуры хорошо смотрятся. А вот если текстура меньше размеров объекта, то в игре мы увидим некоторую размазанность, зависящую от величины масштаба. Но иногда, с целью экономии полигонов, текстуры специально наносят с увеличенным масштабом 2:1, 4:1 и т.д.
Если Вы обратите внимание на размеры текстур в стандартных WAD-файлах, то из них становится ясно, какого размера бывают стандартные объекты: ящики, двери, стены. Например, очень часто встречаются текстуры ящиков с размером 64x64 или 128х128 пикселей, это косвенно указывает на размеры стандартных ящиков в 64х64х64 и 128х128х128 юнитов. Конечно же, никто не запрещает использовать другие размеры, просто слишком маленькие или слишком большие ящики (и вообще любые другие объекты) могут показаться нереальными.

Ниже мы приводим список WAD-файлов, которые вряд ли когда либо будут удалены из игры, а поэтому использовать их безопасно. Вы можете использовать текстуры из этих файлов и не включать их в состав карты (в BSP-файл). Это к тому же несколько уменьшит размер карты. Ведь стандартные текстуры у всех есть и передавать их вместе с картой излишне.

halflife.wad — основной WAD-файл игры Half-Life с огромным количеством текстур (более 40 Мб)
liquids.wad — текстуры воды
decals.wad — декали 
cstrike.wad — стандартный WAD-файл для CS
Также большое количество текстур находится в директории Cstrike — это текстуры официальных CS-карт. Например, очень неплохие текстуры можно найти в следующих WAD-файлах:
chateau.wad
cs_bdog.wad
cs_havana.wad
de_piranesi.wad
de_vegas.wad
itsitaly.wad

Это тоже стандартные текстурные файлы (раз уж они устанавливаются вместе с игрой), однако нет никакой гарантии, что в один прекрасный момент карты, а вместе с ними и текстуры не будут удалены из дистрибутива CS. Именно поэтому мы рекомендуем включать текстуры из подобных WAD-файлов в состав BSP-файла карты.
Запомните, если Вы используете на своей карте текстуры из нестандартных (Ваших или любых других) WAD-файлов, то обязательно распространяйте их вместе со своей картой (в одном архиве). Лучше всего включить текстуры из всех нестандартных файлов в BSP-карту, но можно создать и отдельный WAD-файл.

Масштаб текстур
Как мы уже упомянули выше, 1 текстурный пиксель приравнивается к 1 юниту длины объекта. Это масштаб наложения текстуры 1:1. Если мы наложим текстуру 128х128 пикселей на ящик 64х64 юнита, то масштаб будет 1:2 (или 0,5). Если мы натянем маленькую текстуру 32х32 пикселя на ящик 64х64 юнита, то масштаб будет увеличенным 2:1.
Масштаб текстур напрямую связан с количеством полигонов, видимых игроком, когда он передвигается по карте. Чем больше маштаб текстур, т.е. чем больше они растянуты, тем меньше полигонов обрабатывает игровой движок, и тем меньше тормозит карта. В связи с этим рекомендуем на неответственных местах (может быть горах, земле, где-то еще) увеличивать масштаб текстур.

 Декали
Декали — это специальные текстуры, которые можно накладывать поверх обычных текстур. Примерами декалей являются следы от пуль на стенах, следы от взрывов гранат, следы крови — в общем это различного рода следы. Все декали находятся в файле decals.wad в директории Valve.
К сожалению, на своих картах можно использовать только стандартные декали. В отличии от текстур, декали невозможно включить в состав карты и нельзя использовать свои декали, поэтому остается довольствоваться стандартными из файла decals.wad, впрочем они не так уж плохи.

В Half-Life существует несколько различных типов текстур: простые текстуры, текстуры с маской, текстуры жидкостей и др. Тип текстуры определяется по ее названию, а точнее по нескольким первым символам в названии текстуры. Например, все текстуры жидкостей начинаются с восклицательного знака «!», а текстуры для прозрачных заборов и лестниц — с фигурной скобки «{» (подробнее об этом ниже).
Некоторые текстуры не могут быть нанесены на один объект вместе с другими текстурами, т.к. это вызывает ошибку, поэтому крайне важно знать о совместимости различных типов текстур. Существуют также спецтекстуры, которые применяются для создания неба, триггеров, ограничительных плоскостей и пр.

1. Обычные текстуры
Названия обычных текстур начинаются с английских букв (a-z, A-Z) или цифр (0-9).
Примеры обычных текстур:
  
Как видно из примеров, обычные текстуры могут быть самыми разными: двери, полы, ящики, стены, земля, скалы. В основном карты закрашиваются именно такими простыми текстурами.
Текстуры, как это ни странно, влияют на пробиваемость объектов. В папке «Cstrike\sound» есть такой файл materials.txt, в котором перечислены названия некоторых стандартных текстур и присвоенный им тип материала (дерево, металл, скала, грязь и пр.). Опытным путем было установлено, что объекты, окрашенные, например, текстурой металла пробиваются хуже, чем объекты с текстурой дерева или скалы. Однако, если название текстуры не указано в materials.txt (а так и происходит при использовании неоригинальных, своих текстур), то пробиваемость всех объектов на карте будет одинаковой, независящей от наложенной текстуры.

2. Накладывающиеся в случайном порядке текстуры
Названия таких текстур начинаются с цифр (от –0 до –9), со знаком «минус». Дальше после цифр идет простое название.
Пример серии из двух накладывающихся текстур:
  
Из примера видно, что текстуры из одной серии называются так: –0название, –1название, –2название и т.д.
Вобщем-то это тоже обычные текстуры, как и в первом случае, только игровой движок, увидев «минус» перед названием, накладывает их случайным образом (например, стена будет покрашена разными текстурами из одной серии). Говорят, это делает карту не такой однообразной — чтож, может быть и так, однако размер карты при этом существенно увеличивается (если текстуры большие). Вобщем выгода от использования таких текстур сомнительна и зачастую не видна простому игроку.
Накладывающиеся в случайном порядке текстуры должны хорошо подходить друг к другу, т.е. каждая текстура должна являться продолжением предудущей и всех соседних текстур (еще говорят: текстуры должны тайлиться, от англ. tile — черепица). Таким образом, создавая подобные текстуры, нужно добиваться плавности переходов между краями текстур, т.е. не должно быть заметно швов.
На некоторых древних видеокартах текстуры в случайном порядке не накладываются. Но это касается режимов OpenGL и Direct3D. В режиме Software (а его, в лучшем случае, использует 0,1% игроков) будет все нормально. Вобщем, проблемы как бы и нет, если не учитывать этот 0,1%.

3. Анимированные текстуры
Названия таких текстур начинаются с цифр (от +0 до +9), со знаком «+».
Пример серии анимированных текстур:
  
Текстуры начинающиеся с цифр от +0 до +9 в игре показываются друг за другом непрерывно, создавая таким образом анимацию. Самый простой пример использования анимированных текстур — мониторы компьютеров (есть на карте cs_militia, да и в Half-Life их полно). Другой пример: водопад, когда несколько последовательно меняющихся текстур воды создают иллюзию водного потока. В общем и целом вещь довольно полезная.
Анимированные текстуры должны хорошо подходить друг к другу, т.е. иметь правильную последовательность анимации.

4. Переключаемые
Названия переключаемых текстур начинаются с +А и цифр (+0 ... +9).
Пример серии переключаемых текстур:
  
Единственным отличием переключаемых текстур от анимированных является присутствие в серии одной текстуры, начинающейся с +А 
Переключаемые текстуры можно использовать при создании выключателей, кнопок, рубильников и прочего. Например, текстуру, представленную на рисунке выше, можно наложить на небольшую кнопку, тогда, при нажатии на нее, текстура сменится на следующую, и создастся впечатление, что кнопка действительно была нажата.

5. Светящиеся текстуры
Названия таких текстур начинаются со знака тильды «~», хотя в принципе любая текстура в Half-Life может излучать свет, но об этом чуть позже.
Примеры светящихся текстур:
  
Текстуры с названием, начинающимся с тильды, излучают свет только если они записаны в специальном файле с расширением *.RAD. В общем-то можно заставить светиться любую текстуру, пусть даже и без тильды, главное: прописать ее название в RAD-файл. Данный файл подключается при компиляции и используется при просчете освещения от светящихся текстур.
По умолчанию компиляторы ищут информацию о светящихся текстурах в файлах lights.rad или имя_карты.rad, но в принципе можно назвать RAD-файл как угодно, только тогда придется указать это название в параметрах компиляторов.
Не стОит злоупотреблять светящимися текстурами на карте, т.к. они существенно (иногда в разы!) увеличивают время просчета освещения. Если необходимо создать несколько красивых фонариков, пожалуйста, но не стОит делать все освещение светящимися текстурами. Также следует знать, что для просчета освещения от излучающих свет текстур требуется больше оперативной памяти, а при нанесении многочисленных светящихся текстур на 1 объект может возникнуть ошибка.
А зачем тогда светящиеся текстуры?Действительно, многие из Вас могут спросить: зачем использовать светящиеся текстуры, если время компиляции увеличивается, да еще надо тратить время на создание RAD-файла?
Как нам кажется, следующая картинка наглядно демонстрирует «зачем»:

Как видно из рисунка, светящаяся текстура делает лампу как бы действительно включенной. А вот если использовать обычный источник света — объект light, то стороны лампы получаются темными.
Есть, кстати, и еще один способ заставить объект светиться. Только при этом он абсолютно не будет излучать свет, а просто будет ярким. Существенным преимуществом данного метода перед светящимися текстурами является гораздо меньшее время компиляции.
Метод: превратите лампу в энтити-объект (func_wall, func_illusionary, возможно, какой-то другой объект) и выставьте параметр Minimum light level (иногда встречается _minlight) в какое-нибудь значение отличное от 0, например, 0.5. Теперь лампа будет обладать минимальной яркостью. Около лампы нужно будет создать источник света light, т.к. сама она свет не излучает.
Замечание: чтобы использовать выше описанный совет, у Вас должна быть новая версия FGD-файла (0.7.7 и выше) и компиляторы ZHLT 2.5.3 и выше.

6. Текстуры с маской или прозрачные текстуры
Названия текстур с маской начинаются с фигурной скобки «{». При помощи таких текстур создаются: лестницы, заборы, решетки, деревья и другие объекты.
Примеры текстур с маской:
  
Такие текстуры называются текстурами с маской, т.к. синие части в игре будут прозрачными. Чтобы это произошло, необходимо объект покрашенный текстурой с маской превратить в func_wall, func_illusionary, func_breakable или другой энтити-объект в зависимости от назначения. Затем необходимо выставить следующие параметры отображения:
Render Mode: Solid
FX Amount: 255
Часто при самостоятельном изготовлении таких текстур возникают проблемы из-за неправильной цветовой палитры. Прозрачные места должны быть чистого синего цвета в формате R=0 G=0 B=255. Также желательно окрашивать объект со всех сторон одной и той же текстурой. Но в принципе допускается покрасить один объект разными текстурами с маской и еще текстурой SKY.

7. Текстура воды, жидкости
Названия текстур жидкостей всегда начинаются с восклицательного знака «!».
Примеры текстур жидкостей:

Если Вы окрашиваете какой-то объект текстурой воды, то окрашивать нужно ВСЕ СТОРОНЫ объекта. Иначе возникнет ошибка.
Практически в 100% случаев текстура жидкости наносится на объект func_water, который собственно и используются для создания воды. Но можно текстуру воды наложить и на обычный браш. В этом случае игровой движок автоматически превратит такой браш в воду. Однако такая вода не будет двигаться, у нее не будет волн и она не будет прозрачной — и вообще это уже не вода :) Лучше воду делать объектом func_water.
Прозрачность воды выставляется в параметрах отображения объекта func_water:
Render Mode: Texture
FX Amount: от 50 до 150 (оптимально)
Более подробно о параметрах отображения энтити-объектов Вы можете прочитать из раздела сайта «Энтити».
Обязательно все стороны объекта должны быть покрашены в текстуру воды причем в одну и ту же! Не допускается смешивать обычные текстуры с текстурой воды. Это неминуемо вызывает ошибку при компиляции карты.

8. Scroll-текстуры (двигающиеся, скроллящиеся)
Названия таких текстур начинаются со слова «Scroll». Применяются двигающиеся текстуры при создании конвейеров, воды с течением, водопадов и других подобных объектов.
Примеры двигающихся текстур:

Любую обычную текстуру можно превратить в scroll-текстуру, для этого нужно просто приписать в начале слово scroll. Первую текстуру (на рисунке слева) можно использовать для создания иллюзии движущегося потока воды, а вторую для создания конвейера.
Следует понимать, что сама по себе скроллящаяся текстура не толкает игрока, а просто создает иллюзию движения (ленты конвейера или потока воды). Чтобы конвейер действительно двигал игрока необходимо создать соответствующий энтити-объект.
Необходимо опытным путем подбирать правильный угол нанесения текстуры, потому как она может двигаться, например, против движения конвейера или под углом 90°. Нанесите текстуру на конвейер, откомпилируйте карту и проверьте совпадение движения текстуры с направлением толкания игрока.

Специальные текстуры
Всего существует несколько специальных текстур. Вот их названия:
AAAtrigger
SKY
CLIP
ORIGIN
HINT/SKIP
NULL
Вы будете часто пользоваться этими текстурами (большинством из них). Рекомендуем запомнить их названия и внимательно прочитать о случаях, когда они применяются.
Также запомните, что текстурами CLIP и ORIGIN следует полностью покрывать объект. Они не допускают наличия на объекте других текстур вместе с ними. Все эти текстуры в игре невидимы и используются в строго определенных случаях. Об этом читайте ниже.
Также следует заметить, что внешний вид текстур, приведенных ниже, может отличаться от Ваших.
Главное, чтобы текстура имела именно такое (служебное, специальное) название. Т.е. если текстура названа AAAtrigger, но она не такая, как представлена здесь, то можете смело ее использовать, ошибки не будет. Это же касается и остальных специальных (служебных) текстур. Вы даже можете самостоятельно изготовить картинки для служебных текстур и затем использовать их при создании карты, необходимо лишь дать им точно такие же названия.

9. AAAtrigger — текстура для триггеров
Используется для создания триггеров и других брашевых энтити-объектов невидимых в игре.
Ниже приведено изображение текстуры (может быть другое при использовании нестандартного wad-файла):

Данная текстура находится в главной текстурной библиотеке игры Half-Life — halflife.wad в папке Valve. Используется для создания триггеров и других невидимых в игре брашевых энтити-объектов. Примеры объектов: trigger_once, trigger_multiple, trigger_hurt, trigger_push, env_bubbles, func_buyzone, func_bomb_target, func_ladder и др. Не рекомендуется использовать данную текстуру для закрашивания обычных брашей, т.к. это может вызвать ошибку.
Данную текстуру необходимо использовать ТОЛЬКО для создания триггеров и других невидимых в игре брашевых энтити-объектов, но не для обычных брашей. И еще, нанесение данной текстуры на обычный браш не делает его невидимым. Невидимы будут только определенные энтити-объекты.

10. SKY — текстура неба.
Используется для создании неба. Браши, окрашенные текстурой SKY (SKY-браши), создаются вокруг карты, образуя некий колпак. При компиляции при помощи объекта light_environment со SKY-брашей проецируется свет.
Изображение текстуры:

Данная текстура находится в главной текстурной библиотеке игры Half-Life — halflife.wad в папке Valve. Используется для создания неба вокруг карты. Все стороны брашей, составляющих небо, должны быть окрашены текстурой SKY. При наличии на карте точечного объекта light_environment, данная текстура излучает свет. Так создается общее освещение на карте.
Также эту текстуру можно применять для снижения параметра r_speeds, нанося ее на те стороны объектов, которые игрок никогда не увидит в игре (крыши домов, обратные стороны стен и заборов и т.п.). 
Проблемы могут возникнуть, только если Вы используете для компиляции стандартные компиляторы (qcsg, qbsp2, vis, qrad), а не ZHLT. При использовании старых компиляторов игрок сможет «пролетать» сквозь небо. Чтобы этого не происходило, необходимо около брашей неба строить CLIP-браши. Но так как мы используем компиляторы ZHLT, то проблем с этой текстурой быть не должно и никаких CLIP-брашей около неба создавать не нужно.

11. CLIP — ограничение передвижения игроков
Используется для создания невидимых преград (стен, других объектов), через которые игрок не может пройти. Однако пули и гранаты свободно пролетают — это очень важное свойство.
Изображение текстуры:

Данная текстура находится в главной текстурной библиотеке игры Half-Life — halflife.wad в папке Valve. Используется для создания невидимых в игре стен, полов и т.п., через которые игрок не может пройти (упасть). В маппинге распространено выражение «CLIP-браш». CLIP-браш — это обычный браш, но окрашенный со всех сторон спецтекстурой CLIP.
Ограничивающий передвижение игроков браш должен быть окрашен текстурой CLIP абсолютно со всех сторон, иначе возникает ошибка при компиляции карты. При использовании невидимых ограничивающих CLIP-брашей не по месту, можно вызывать раздражение у игроков — это когда очень хочется куда-то пройти, но невидимая стенка не дает этого сделать :) Поэтому используйте CLIP-браши с умом.

12. ORIGIN — определяет размещение оси вращаюшихся объектов
Используется для определения оси вращающихся объектов (func_door_rotating, func_vehicle и мн. др.).
Изображение текстуры:

Данная текстура находится в главной текстурной библиотеке игры Half-Life — halflife.wad в папке Valve. Используется для создания ORIGIN-браша (обычный браш, но окрашенный со всех сторон спецтекстурой ORIGIN). ORIGIN-браш своим центром определяет точку, через которую проходит ось вращения энтити-объектов: вращающихся дверей, вентиляторов, платформ, маятников. Также ORIGIN-браш устанавливает центр для поезда, машины, вращающейся платформы. В общем, если энтити-объект хоть как-то вращается или поворачивается, то он обязательно должен иметь ORIGIN-браш.
ORIGIN-браш должен входить в состав энтити-объекта, т.е. быть его неотъемлемой частью. Сначала создается браш нужной формы (дверь, вентилятор и т.п.), затем создается ORIGIN-браш (его следует поместить в предполагаемое место оси вращения), а затем все вместе: и браш, и ORIGIN-браш, превращаются в энтити-объект, например, func_rotating (вентилятор). Такой же порядок действий необходимо соблюдать при создании любого вращающегося объекта.
ORIGIN-браш должен быть окрашен текстурой ORIGIN абсолютно со всех сторон. Не допускается применять какую-либо другую текстуру вместе с ORIGIN. ORIGIN-браш должен обязательно входить в состав энтити-объекта, а не быть отдельно. Если в составе одного энтити-объекта будет сразу два или более ORIGIN-брашей, возникнет ошибка. Ось вращения для каждого вращающегося объекта должна быть только одна (она определяется в свойствах энтити-объекта). Форма и размер ORIGIN-браша значения не имеют, важно расположение его центра.


13. HINT/SKIP — оптимизация карты, повышение fps
Эта пара текстур используется для снижения параметра r_speeds.
Ниже приведены изображения текстур (могут быть другими при использовании различных wad-файлов):

Данные текстуры можно сделать самому или найти в текстурных библиотеках zhlt.wad и zeditor.wad, которые входят в состав утилит ZHLT. Правильное использование HINT/SKIP-брашей помогает снизить «тормоза» на карте (т.е. увеличивает fps).
В игре HINT-браши абсолютно невидимы и через них можно свободно проходить. Не рекомендуется окрашивать простые объекты этими текстурами!
Трудно понять принцип действия HINT/SKIP-брашей, еще труднее правильно их расположить на карте. Неграмотное применение может вызвать обратный эффект — повышение тормозов на карте. Также следует помнить, что браш, окрашенный этими текстурами, не может быть окрашен какой-либо другой текстурой.

14. NULL — оптимизация карты, повышение fps
Наносится на стороны объектов, которые игрок не может видеть в игре, тем самым уменьшает параметр r_speeds и повышает FPS.
Ниже приведено изображение текстуры (может быть другое при использовании разных wad-файлов):

Данная текстура находится в текстурной библиотеке zhlt.wad, которая входит в состав улучшенных утилит ZHLT Custom Build. NULL-текстуру можно использовать ТОЛЬКО с улучшенными утилитами ZHLT, то есть с ZHLT Custom Build. С простыми ZHLT она не работает. Эту текстуру можно наносить на любые объекты (как браши, так и энтити-объекты). Также допускается совмещать эту текстуру с другими текстурами, позволяющими это. Кстати, с успехом вместо текстуры NULL можно использовать текстуру SKY. Действие абсолютно такое же.

Форма входа
Поиск по сайту
Наш опрос
Оцените наш сайт
Всего ответов: 14
Мини-чат
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
qwertys © 2025
Сделать бесплатный сайт с uCoz