Формат файлов материалов .mtl
Файл материала - текстовый файл конфигураций с настройками. Может редактироваться вручную либо при помощи редактора материалов.
Рекомендуется ознакомится со статьей Основные понятия и состав материалов.
Правила организации
Все файлы материалов располагаются по относительному пути materials/
по принципу организации текстур, только с расширением mtl.
Каждый файл материала является текстовым и представляет из себя файл конфигураций, в каждом файле есть/должна_быть только одна секция с именем материала без расширения.
Типы настроек
Настройки материалов могут иметь следующие типы:
- текстовый (text) - значение представлено в виде текста;
- числовой:
- целочисленный (int);
- число с плавающей точкой (float);
- логический (logic) - значение должно отвечать на вопрос либо положительно (истина) либо отрицательно (ложь), может иметь следующие значения:
- true или любое числовое значение кроме 0 - истина;
- false или 0 - ложь.
Описание настроек материала
Все настройки материалов делятся на несколько разделов:
- Основные;
- Физические;
- Флаги;
- Текстуры;
- Константы.
Основные настройки
shader (text) - Шейдер материала, например один из стандартных: Стандартные шейдеры материалов.
Физические свойства
physmaterial (int) - тип физического материала, может принимать значения аналогичные MTLTYPE_PHYSIC:
- 0 - бетон;
- 1 - металл;
- 2 - стекло;
- 3 - пластик;
- 4 - дерево;
- 5 - плоть;
- 6 - земля/песок;
- 7 - вода;
- 8 - листва/трава.
durability (float) - коэффициент пробиваемости.
hit_chance (float) - шанс столкновения.
density (float) - плотность материала кг/м3.
Флаги
Флаги индивидуальны для каждого конкретного шейдера, задаются в формате flag.имя_флага
и имеют логический тип. Значение по умолчанию для каждого флага -- ложь.
Пример синтаксиса флага:
flag.has_parameter_texture = 1
Текстуры
Текстуры индивидуальны для каждого конкретного шейдера, задаются в формате tex.имя_текстуры
и имеют строковый тип.
Пример синтаксиса текстуры:
tex.txBase = texture_name.dds
Константы
Константы индивидуальны для каждого конкретного шейдера, задаются в формате prop.имя_константы
и имеют векторный тип (float4). Для указания обязательна минимум одна компонента, остальные принимают значение 0.0
Пример синтаксиса константы:
prop.pbr_roughness = 1.0