Создание материала

From Valve Developer Community
< Ru
Jump to navigation Jump to search
English (en)Español (es)Français (fr)日本語 (ja)한국어 (ko)Português do Brasil (pt-br)Русский (ru)中文 (zh)Translate (Translate)

Этот урок является пошаговым руководством по созданию совершенно нового материала(en), включая материал текстур(en).

Создание текстур

Для создания текстуры подойдёт любое изображение, если его размеры (высота и ширина) кратны двум, например: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, и т.д. Прежде, чем создавать новую текстуру, изучите существующие, выполняющие ту же роль. Текстуры с высоким разрешением тормозят производительность, но при этом дают большую резкость при просмотре вблизи.

Различные классы объектов имеют разные стандартные разрешения (например, модели персонажей более детализированы). Если запутаетесь, вам в помощь source materials.gcf вместе с GCFScape(en).

Note.pngПримечание:Исходные файлы текстур должны сохраняться в формате с меньшими потерями качества - TGA.

Преобразование текстур

Перед тем, как использовать в Source, текстуры необходимо преобразовать в Valve Texture Format(en). Для этого Valve предоставляет инструмент VTEX(en). С этим инструментом можно работать через командную строку(en), или с помощью сторонних программ, таких как VTFEdit(en). VTFEdit предпочтительней, поскольку имеет удобный графический интерфейс, позволяет редактировать текстуры без перекомпиляции, поддерживает множество форматов, и не требует отдельных скриптов для создания каждой текстуры.

(Существуют VTF-плагины которые позволяют сохранять текстуры в формат прямо из Photoshop, GIMP и Paint.NET.)

Чтобы импортировать текстуру в VTFEdit, используйте File > Import или нажмите Ctrl+I. Выберите изображение и откроется окно импортирования:

Экран импортирования VTFEdit

Основные параметры

Следующие параметры наиболее важны. Их три:

Формат нормалей
Формат цвета/сжатия, который используется для прозрачной текстуры.
Формат Альфа
Формат цвета/сжатия, который используется для текстуры с альфа-каналом.
Тип текстуры
Если вы импортировали больше, чем одно изображение, тут задаётся тип их использования (кадры анимации/кубмапы/глубина срезов).

Если вы создаёте простую текстуру, то вам не понадобится ничего из перечисленного выше. Если вы создаёте текстуру с детально проработанными градиентами, вам придётся выбрать режим сжатия без потерь(en).

Настройки мип-карт

Мип-карты(en) - это версии текстуры, имеющие низкое разрешение, сменяющие друг друга по мере удаления камеры от неё. Они существенно сокращают требуемый объём текстуры, повышая производительность и качество изображения.

Tip.pngСовет:Текстуры, которые будут отображаться в 3D-мире, должны иметь мип-карты. Для экономии памяти, текстуры используют интерфейс 2D.

Следующие изображения демонстрируют различные мипмап-фильтры, доступные в VTFEdit:

Настройки карты нормалей

Эти (неправильно названные) настройки позволяют автоматически генерировать карту рельефа(en) из вашего изображения.

Конфигурирование и сохранение

Когда вы нажимаете OK, входящий файл конвертируется (порою долго, если изображение большое), и на выходе появляется в формате VTF. Теперь всё, что осталось - это сконфигурировать настройки текстуры с помощью ряда флажков на левой стороне экрана. Описание каждого из них см. флаги изображений(en).

Теперь, сохраните файл в каталоге своей игры или мода в папке \materials.

Создание материала

Source обращается к текстурам не напрямую. Он это делает через материалы(en).

Материалы - это файлы скриптов, которые создаются с помощью любого текстового редактора, но лучше всего использовать Notepad++ с подсветкой синтаксиса(en). Чтобы ваш материал был обнаружен, вы должны сохранить его в папке игры или мода \materials с расширением .vmt.

Note.pngПримечание:Если вы создаёте материалы и текстуры специально для вашего мода, рассмотрите возможность использования BSPZIP(en)\Packbsp(en)\Pakrat(en), чтобы вшивать их прямо в карту. Это позволит избежать их утери в будущем.

Синтаксис

Файл материала выглядит так:

<shader(en)>
{
	<parameter> <value>
	...
}
LightmappedGeneric
{
	$basetexture coast\shingle_01
	$surfaceprop gravel
}

Существует много разных шейдеров(en), но большинство материалов используют LightmappedGeneric(en) (браши(en)) или VertexLitGeneric(en) (модели(en)). Третьим наиболее распространённым шейдером является UnlitGeneric(en), который используется для материалов UI(en), и изредка для служебных текстур(en).

Параметры

Список всех задокументированных параметров шейдеров см. Список параметров шейдеров(en).

Параметры в шейдере также называются командами. Существуют сотни параметров, которые можно вложить в материал, мы же рассмотрим основные, которые используются чаще всего. Вот они:

Tip.pngСовет:Если в значении параметра потребуется использовать пробел или символ табуляции, вам нужно всё значение поставить в "кавычки". Вы увидите, что они экономят время печати.

См. также