Материалы для моделей

From Valve Developer Community
< Ru
Jump to navigation Jump to search
English (en)日本語 (ja)한국어 (ko)Русский (ru)中文 (zh)Translate (Translate)

Модели в играх Source - будь то реквизит, персонажи, видовые модели(en), и др. - требуют хотя бы 3 основных компонента: имя_файла.MDL(en), имя_файла.VMT(en) и имя_файла.VTF(en).

Не совсем правильно называть MDL - "сеткой", VTF - "обликом", а VMT - "физикой". На каждом этапе, модель будет состоять по крайней мере из двух отдельных, но взаимосвязанных файлов. На каждом этап компиляции требуются данные из некоторых других файлов. Поэтому процедура должна выполнять в указанной последовательности, а имена файлов и их расположение соотвествовать заданным.

Процесс создания этих файлов умещается в два общих шага:

  1. Первый этап это создание основной текстуры и её разметка на вашей сетке, в результате получится два "временных" файла: имя_файла.SMD(en) и имя_файла.TGA(en).
  2. На втором этапе, из созданных имя_файла.SMD(en) и имя_файла.TGA(en) компилируются MDL(en), VMT(en) и VTF(en)-файлов в соответствующей директории Source (hl2, cstrike и т.п.).

Разметка текстуры для SMD модели используя XSI

  • Для применения текстуры к модели в XSI:
  1. выберите свою созданную модель.
  2. выберите XSI's Render mode (вверху на левой боковой колонке).
  3. из Render>Get-Material выберите Blinn (закройте окно Material)
  4. из Render>Get-Texture выберите Image, чтобы открыть окно Image-Texture:
  5. в Image-Texture tab>Image нажмите "New", чтобы найти и импортировать ваш новый TGA(en) файл текстуры.
  6. в Image-Texture tab>Texture Projection нажмите "New" и выберите Unique UVs (polymesh) (закройте окно Image)
  7. нажмите Alt+7, чтобы открыть окно XSI Texture Editor(en).
  • Если испортили разметку текстуры и хотите начать сначала:
1. Нажмите 8 чтобы открыть Scene Explorer, затем найдите Texture Projection как показано ниже:
-> Cube (ваш основной объект)
--> Polygon Mesh
---> Clusters
----> Texture_Coordinates_Auto
-----> Texture Projection (Explicit UVWs) 
2. Теперь кликните LMB на "Texture Projection (Explicit UVWs)" чтобы выбрать его, затем нажмите на клавишу Delete, чтобы удалить это.
3. Перейдите в 3D вид (в режим 'textured'), убедитесь, что всё сделано правильно. Если нет, то нажмите Ctrl+Z, чтобы отменить и попробовать ещё раз.

Реальный предварительный просмотр

  • Оценить результаты разметки облика персонажа можно только непосредственно в Source игре, прежде чем продолжать работу с материалом, экспортируйте его в .vtf, создайте .vmt, создайте .mdl и посмотрите как модель выглядит в игре. Работа над разметкой текстур и параметрами оттенений имеет смысл только после того как увидите модель в игре.

Временная текстура "шахматка"

  • Использование текстуры шахматки хороший способ проверить UV координаты; это позволит быстро увидеть наличие каких-либо искажений, полос или швов, которым требуется корректировка. Также, использование текстуры шахматки дает хороший способ измерить необходимую плотночть текселей на различных частях модели, поскольку вы определили UV координаты, некоторые элементы (таких как лицо) требуют немного больше плотности, но в целом следует стремиться к логичной плотности текселей на всей модели. Стандартный noicon.pic файл в XSI хороший выбор или вы можете использовать Checkerboard Starter Texture (клик RMB, сохранить как...) входящий в SDK.

Какой должен быть размер текстуры?

  • Экспортируйте .VTF как можно раньше и загрузите просмотр модели в игре, используя команду управления mat_showmiplevel, проверьте, какие mip-уровни будут необходимы для реальных игровых ситуаций, в которых будет использоваться модель. Хотя может казаться, что чем больше, тем лучше, но это не всегда так, mipmapping может заставить ваши большие текстуры уменьшиться, пока размытость не станет проблемой.

Многослойные текстуры

  • Вам следует стараться использовать только одну основную текстуру, если материалу не требуется другого. Многослойная текстура может существенно повлиять на время визуализации. Если вам необходимо создать многослойную текстуру для модели, вы должны для начала выбрать полигоны, сгруппировать их, а затем применить материал и изображение к группе. Убедитесь, что в параметрах установлено "reload externally modified images on focus". Это перезагрузит текстуру, когда вернетесь при помощи Alt+Tab ⇆ в XSI из другой программы, например Photoshop, что спасет вам немного времени.

Компиляция вашего.VTF : Формат текстур Valve

Любая текстура, которая применена к модели (перед экспортом в Ваш.SMD из XSI) должна быть конвертирована из TGA(en) в VTF(en) файл, прежде чем это сможет использовать Source Engine. Имя VTF файла должно быть таким же как и у TGA файла, использованного в Вашем.SMD (например: Ваш.TGA -> Ваш.VTF) и VTF помещен в папку game_directory/materials/models.

  • SourceSDK/bin содержит Vtex(en).exe, приложение, используемое для компиляции в .VTF. Простейший способ использовать Vtex - это создать ярлык для vtex.exe на своём рабочем столе, и перетаскивать .TGA файлы на него. Это создаст .VTF файл, который будет иметь такое же имя как и ваш .TGA файл в директории материалов. Когда вы перетащили tga файл в Vtex, создастся .TXT файл в тойже директории, где расположен .TGA файл. В этом файле можно написать необходимые команды Vtex для изменения методв сжатия.
Note.pngПримечание: Для быстрого создания материалов, попробуйте добавить "-shader VertexLitGeneric" в свойствах ярлыка для Vtex, в поле пути к объекту. Это также работает с любыми другими типами оттенений. Перенесение текстуры на этот модифицированный ярлык создаст как обычно .VTF файл и ещё .VMT файл с типом оттенения и основной текстурой определенными для вашей текстуры.
  • Cannonfodder's StudioCompiler(en) предоставит более дружелюбный интерфейс для Vtex (и Studiomdl). Это позволит компилировать/декомпилировать VTF, VMT и MDL файлы из/в TGA и SMD файлы.

Компиляция вашего.VMT : Формат материалов Valve

Каждый материал в Source определен .VMT(en)-файлом. Это выбранные модель освещения, основная текстура (VTF), и другие необходмые дополнительные данные: зеркальность, свечение, карты нормалей, прозрачность, полупрозрачность, и подменные оттенения(en).

Для модели Ваш.VMT должен быть написан вручную (используя блокнот и т.п.) и размещен в папке game_directory/materials/models где Ваш.MDL сможет найти их. $basetexture (Ваш.VTF) ссылается на Ваш.VMT, должен также быть в той же папке game_directory/materials/models где Ваш.VMT сможет найти его.

Tip.pngСовет: QC команда $cdmaterials(en) может использовать другие подпапки.
Warning.pngПредупреждение: Все материалы должны использовать VertexLitGeneric(en) оттенение. Материалы для модели не работают(en) с LightmappedGeneric(en) или UnlitGeneric(en).

Здесь пример VMT файла из HL2:

"VertexLitGeneric(en)"
{
     "$basetexture(en)" "Models/Combine_soldier/Combine_elite"
     "$bumpmap(en)" "models/combine_soldier/combine_elite_normal"
     "$envmap(en)" "env_cubemap"
     "$normalmapalphaenvmapmask(en)" 1
     "$envmapcontrast(en)" 1
     "$model(en)" 1
     "$selfillum(en)" 1
}

В этом примере материал использован для полигональной модели используя VertexLitGeneric(en) оттенение. $basetexture(en) или diffusemap определена в "Models/Combine_soldier/Combine_elite" $bumpmap(en) или карта нормалей импортирована из "models/combine_soldier/combine_elite_normal". $envmap(en) или карта окружения установлена на "env_cubemap", что ссылает к cubemap(en) entities размещенной на уровне; зеркальное отражение для этого персонажа всегда будет отражать мир вокруг - предполагается, что вы разместили cubemap entities на уровне. Вы можете использовать всместо этого другой cubemap, если хотите. На следующей линии, "$normalmapalphaenvmapmask" 1 сообщает визуализатору что в этом материале есть маска зеркальности, и только некоторые её части отразят информацию из env_cubemap, расположенная в данном случае в альфа канале карты нормалей. Карта зеркальности может быть и в альфа канале основной текстуры "$basealphaenvmapmask 1" или в файле маски зеркальности "$envmapmask" "models/modelname/mymask". Команда "$envmapcontrast" 1 означает, что яркость отражений envmap умножается на себя один раз; для создания яркого освещения и глубоких теней. Все модели требуют наличие команды "$model" 1, которая сообщает визуализатору, о том, что материал используется для полигональной модели скомпилированой Studiomdl.exe. Последняя линия "$selfillum" 1 сообщает визуализатору, что альфа канал $basetexture содержит информацию о самоизлучении, эти области альфа канала показывают светящиеся области модели.

Альфа-канал

Для создания материала с рабочим альфа-каналом вам необходимо ввести команду "$translucent(en)" 1 в ваш VMT файл. Иногда это приводит к ошибке визуализации модели (например theres convex 1 in the back of convex 2, but convex 2 gets hidden by convex 1 => Rendering error). Если это случается, используется команда "$alphatest(en)" 1 вместо "$translucent" 1, которая исправляет это.

Подменные оттенения

Мощный компонент системы материалов платформы Source это система подменных оттенений(en). Пример возможностей подменных оттенений показан на карте shaderzoo, поставляемой со средой разработки, а дополнительную информацию об их создании можно найти в соответствующих разделах документации материалов.