Английская версия | Руководство автора | Серверное API
При отрисовке Studio-модели клиент подбирает материал по имени текстуры. Вне сеанса редактирования он сначала проверяет серверную привязку сущности, затем документ .mat модели. Если материал не задан ни в одном из этих источников, клиент использует встроенный материал по флагам текстуры. Активный сеанс редактирования временно заменяет выбранный материал для своей цели. Для материалов требуются r_studio_shader 1 и r_studio_materials 1.
Материалы модели models/v_glock18.mdl задаются в файле models/v_glock18.mat. Раздел materials содержит имена текстур модели и назначенные им материалы. Регистр букв в именах текстур не учитывается. Материал действует на все части модели с этой текстурой; выбранный скин может менять набор используемых текстур.
{
"version": 1,
"materials": {
"glock_slide.bmp": {
"program": "weapon_finish",
"params": {
"uWearMap": { "texture": "materials/masks/wear/blotches.png" },
"uUnderlay": { "texture": "materials/surfaces/brass.png" },
"uWear": 0.5
}
}
}
}Материал содержит обязательное поле program и необязательный объект params. Имена параметров должны точно совпадать с манифестом программы, включая регистр. Число задает скаляр, массив из четырех чисел задает вектор, {"texture": "path"} задает ссылку на изображение. Клиент проверяет типы и диапазоны значений по манифесту. Скаляры и все компоненты векторов должны быть конечными числами в объявленных границах. Пропущенные параметры получают объявленные значения по умолчанию.
| Ресурс | Лимит |
|---|---|
| Версия документа | 1 |
| Записи текстур в документе модели | 64 |
| Параметры одного материала | 64 |
| Различные файлы изображений, указанные в документе | 64 |
| Путь изображения в документе модели | 128 байт |
| Путь изображения в серверном пресете | 96 байт |
| Форматы изображений | PNG или TGA |
| Площадь изображения | 1 048 576 пикселей |
Пути изображений задаются относительно игрового каталога. Используются прямые слэши и расширения .png или .tga. Абсолютные пути, префиксы дисков, обратные слэши, управляющие символы и пустые сегменты, . или .. отклоняются. Площадь вычисляется как width * height. Поставляемые изображения входят в общий лимит файлов. Повторная ссылка на тот же файл учитывается один раз.
Манифест описывает доступные параметры программы: их имена, типы, значения по умолчанию, допустимые диапазоны и элементы управления в редакторе. Основные поля: version, program и parameters. Параметр типа scalar с instance: true можно менять отдельно для каждой сущности через серверное API. Значение передается как число с плавающей точкой и ограничивается указанным диапазоном. Округление до шага ползунка не выполняется.
Необязательное поле render_contract выбирает поддерживаемый профиль материала. Оно должно содержать непустую строку длиной не более 64 байт и доступно в версии манифеста 1. Без этого поля программа использует универсальные параметры.
Встроенные программы studio и weapon_finish поддерживают профиль материалов studio_effects_v1. Параметры эффектов должны использовать поддерживаемые типы, диапазоны и значения по умолчанию. Видимый результат описан в справочнике эффектов, точные определения параметров находятся в поставляемом манифесте.
Схема допускает 64 параметра, в том числе восемь текстурных. Необязательный массив groups задает разделы редактора. Поле strings указывает файл локализации. Точные значения по умолчанию, границы и группировка элементов редактора приведены в поставляемом манифесте weapon_finish.
Скалярный параметр с widget: "choice" задает массив локализованных подписей choices. Значениями служат целые индексы: min равно 0, а max на единицу меньше числа вариантов. Значение default тоже должно быть целым индексом из этого диапазона. Редактор показывает список без свободного ввода. Дробные индексы отклоняются до ограничения границами; целые индексы за границами ограничиваются диапазоном при записи через API. Например, у uOutlineMode индекс 0 включает обводку только скрытых участков, 1 включает весь силуэт, а 2 только видимые участки.
| Параметр | Назначение |
|---|---|
uBaseTint |
Множитель цвета базовой текстуры. |
uPattern, uPatternTint, uPatternTransform |
Изображение узора, оттенок и размещение по UV. Альфа узора также управляет смешиванием. |
uLayerMix |
Доля узора, 0..1. |
uWearMap, uWearMapTransform |
Пороговая карта и размещение по UV. Темные участки стираются первыми. |
uWear |
Степень износа, 0..1. |
uWearSoftness |
Половина ширины перехода около порога износа. |
uUnderlay, uUnderlayTint, uUnderlayTransform |
Изображение обнажаемой поверхности, оттенок и размещение по UV. |
uReflectMask, uReflectMaskTransform |
Множитель силы отражения и размещение по UV. |
uReflectTint |
Множитель цвета блика от света сцены и отражения из matcap. |
uReflectWear |
Зависимость блеска от износа: от -1 для покрытия до 1 для обнаженных участков; при 0 действует одна маска. |
uSphereMap, uReflectivity |
Изображение освещенной сферы (matcap) и сила отражения. |
uSpecular, uGloss |
Сила и показатель степени блика от света сцены. |
UV-преобразование [scale_u, scale_v, offset_u, offset_v] задает масштаб и сдвиг изображения на поверхности. Узор накладывается на базовую текстуру. В местах износа виден нижний слой. Маска отражения управляет блеском, а освещение сцены влияет на блики и отражение из matcap.
Перед передачей документа проверьте его через matgen. Ответственность материалов и рендеринга описана в архитектуре рендерера.