💥 Обзор
Материалы хранятся либо в отдельном файле (.mat), либо встроены в файлы модели (.3db, .cmp, .dfm и т. д.).
flowchart LR
\ --> A[Texture library]
A --> B[texture]
\ --> M[Material library]
M --> M1[material]
M1 --> DT(Dt_name)
M1 --> T(Type)
DT -.-> B
Некоторые ресурсы не могут иметь ссылки на внешние файлы с материалами и требуют встраивания материалов непосредственно в файл модели, например, звездные сферы, реквизит для кат-сцен и деформируемые модели.
⚡ Типы материалов
| Тип | Альфа | Описание |
|---|---|---|
| DcDt | No | Диффузный цвет + диффузная текстура. |
| DcDtTwo | No | Двусторонний вариант DcDt. |
| DcDtEc | No | Диффузный цвет + Диффузная текстура + Цвет излучения. |
| DcDtEcTwo | No | Двусторонний вариант DcDtEc. |
| DcDtOcOt | Yes | Рассеянный цвет + Рассеянная текстура + Цвет непрозрачности + Текстура непрозрачности. |
| DcDtOcOtTwo | Yes | Двусторонний вариант DcDtOcOt. |
| DcDtEcOcOt | Yes | Диффузный цвет + Диффузная текстура + Цвет излучения + Цвет непрозрачности + Текстура непрозрачности. |
| DcDtEcOcOtTwo | Yes | Двусторонний вариант DcDtEcOcOt. |
| DcDtEt | No | Диффузный цвет + Диффузная текстура + Текстура излучения. |
| EcEt | No | Цвет излучения + текстура излучения. |
| Nebula | Yes | Диффузная текстура, окрашенная цветом вершины с смешением (ADD, SRCALPHA, ONE). |
| NebulaTwo | Yes | Двусторонняя версия Nebula. |
| BtDetailMapMaterial | No | Диффузная текстура с детальной текстурой, наложенной в режиме наложения. Детальная текстура использует второй набор UV-текстур. |
| BtDetailMapMaterialTwo | No | Двусторонний вариант DetailMaterial. |
| NomadMaterial | Yes | Специальный материал для кораблей кочевников. |
| NomadMaterialNoBendy | Yes | Ditto. |
| GlassMaterial | Yes | Прозрачный материал, используемый для кабины. |
| GFGlassMaterial | Yes | Ditto. |
| HighGlassMaterial | Yes | Ditto. |
| PlanetWaterMaterial | Yes | Материал с режимом наложения «Умножение». |
| AtmosphereMaterial | Yes | |
| ExclusionZoneMaterial | Yes | Материал для оболочек зоны исключения. |
| HUDIconMaterial | Yes | Материал для значков HUD. |
| HUDAnimMaterial | Yes | Анимационный материал для HUD. Анимация включается в настройках. |
| NullMaterial | No | Резервный материал. |
| DetailMapMaterial | No | |
| DetailMap2Dm1Msk2PassMaterial | No | |
| IllumDetailMapMaterial | No | |
| Masked2DetailMapMaterial | No |
NomadMaterialиNomadMaterialNoBendyне отображаются, когда для объекта используется карта окружения.- ❗ Тип материала можно переопределить, сопоставив регулярное выражение в [MaterialMap] файла dacom.ini.
Когда модель использует как прозрачные, так и непрозрачные (непрозрачные) материалы, она должна быть составлена из нескольких частей, и любые группы сеток, использующие прозрачные материалы, должны храниться в частях, отдельных от групп сеток, использующих непрозрачные материалы, т. е. прозрачное стекло кабины должно быть отделено от корпуса, к которому оно прикреплено. Группы сеток с непрозрачными материалами рисуются спереди назад, после чего группы сеток с прозрачными материалами рисуются сзади вперед с отключенной записью буфера глубины.
🔥 Свойства материалов
| Имя | Тип | Описание |
|---|---|---|
| Ac | float[3] | Цвет окружающей среды. |
| Dc | float[3] | Рассеянный цвет. |
| Oc | float | Цвет непрозрачности (альфа). |
| Ec | float[3] | Цвет излучения. |
| Sc | float[3] | Зеркальный цвет. |
| Sp | float | Зеркальная сила. |
| Dt_name | string | Название диффузной текстуры. |
| Dt_flags | uint32 | Флаги обертывания диффузной текстуры. |
| Et_name | string | Имя текстуры излучения. |
| Et_flags | uint32 | Флаги обёртки текстуры излучения. |
| Bt_name | string | Имя текстуры деталей. |
| Bt_flags | uint32 | Флаги обёртки текстуры деталей. |
| Nt_name | string | Имя текстуры Nomad. |
| Nt_flags | uint32 | Флаги обёртки текстуры Nomad. |
| Alpha | float | Уровень прозрачности. |
| Fade | float | Коэффициент затухания при крутом угле обзора. |
| Scale | float | Масштаб смещения вершин? |
| Dm_name | string | Имя текстуры диффузной маски. |
| Dm_flags | uint32 | Флаги обёртки текстуры диффузной маски. |
| TileRate | float | Множитель тайлинга диффузной маски. |
| Dm0_name | string | Имя текстуры диффузной маски 0. |
| Dm0_flags | uint32 | Флаги обёртки текстуры диффузной маски 0. |
| TileRate0 | float | Множитель тайлинга диффузной маски 0. |
| Dm1_name | string | Имя текстуры диффузной маски 1. |
| Dm1_flags | uint32 | Флаги обёртки текстуры диффузной маски 1. |
| TileRate1 | float | Множитель тайлинга диффузной маски 1. |
| flip u | uint32 | Отразить текстуру по горизонтали. |
| flip v | uint32 | Отразить текстуру по вертикали. |
Acиспользуется вAtmosphereMaterial, но может применяться ко многим другим материалам для переопределения фонового цвета сцены.Ocиспользуется в любом прозрачном материале.Ecиспользуется вDcDtEc,DcDtEcOcOt,EcEt.- ❗ Параметры
«Ot_name»и«Ot_flags»отсутствуют, поскольку прозрачность берётся из альфа-канала форматов текстур, которые поддерживают прозрачность. Et_nameиEt_flagsиспользуются вDcDtEtиEcEt.Bt_nameиBt_flagsиспользуются вBtDetailMapMaterialиBtDetailMapMaterialTwo.Nt_nameиNt_flagsиспользуются вNomadMaterialиNomadMaterialNoBendy.Alpha,FadeиScaleиспользуются вAtmosphereMaterial.Dm_name,Dm_flagsиTileRateиспользуются вDetailMapMaterial.Dm0_name,Dm0_flagsиTileRate0используются вDetailMap2Dm1Msk2PassMaterial,IllumDetailMapMaterialиMasked2DetailMapMaterial.Dm1_name,Dm1_flagsиTileRate1используются вDetailMap2Dm1Msk2PassMaterial,IllumDetailMapMaterialиMasked2DetailMapMaterial.
📎 Материальная анимация
stateDiagram-v2
direction LR
Library: Material library
[*] --> Library
Library --> MaterialAnim
MaterialAnim --> material_name
material_name --> MACount
material_name --> MADeltas
material_name --> MAKeys
material_name --> MAFlags
Анимация материала хранится в файле модели и допускает простое смещение UV и масштабирование циклической анимации по ключевым кадрам.
| Имя | Тип | Описание |
|---|---|---|
| MACount | uint32 | Количество ключевых кадров MADeltas. |
| MADeltas | varying | Ключевые кадры смещения UV и масштабирования скорости. |
| MAKeys | varying | Ключевые кадры смещения и масштабирования UV. |
| MAFlags | uint32 | Флаги анимации. |
Каждый ключевой кадр в MADeltas:
| Имя | Тип | Описание |
|---|---|---|
| time | float | Время ключевого кадра. |
| uOffsetSpeed | float | Скорость смещения тайлинга U. |
| vOffsetSpeed | float | Скорость смещения тайлинга V. |
| uScaleSpeed | float | Скорость масштабирования мозаики U. |
| vScaleSpeed | float | Скорость масштабирования мозаики V. |
Каждый ключевой кадр в MAKeys:
| Имя | Тип | Описание |
|---|---|---|
| uOffset | float | Начальное смещение U. |
| vOffset | float | Начальное смещение V. |
| uScale | float | Начальная шкала U. |
| vScale | float | Начальная шкала V. |
- Количество ключевых кадров
MAKeysбудет на один меньшеMACount. Первый ключевой кадр — это неявное состояние исходных значений UV.
