Глава 4.1: Текстуры (.paa, .edds, .tga)
Главная | Текстуры | Далее: 3D-модели >>
Введение
Каждая поверхность, которую вы видите в DayZ -- скины оружия, одежда, рельеф, иконки UI -- определяется файлами текстур. Движок использует проприетарный сжатый формат PAA во время выполнения, но в процессе разработки вы работаете с несколькими исходными форматами, которые конвертируются в процессе сборки. Понимание этих форматов, соглашений об именовании суффиксов, привязывающих текстуры к материалам, и правил разрешения, которые движок применяет, является основой создания визуального контента для модов DayZ.
Эта глава охватывает каждый формат текстур, с которым вы столкнётесь, систему суффиксов именования, которая сообщает движку, как интерпретировать каждую текстуру, требования к разрешению и альфа-каналу, а также практический рабочий процесс конвертации между форматами.
Содержание
- Обзор форматов текстур
- Формат PAA
- Формат EDDS
- Формат TGA
- Формат PNG
- Соглашения об именовании текстур
- Требования к разрешению
- Поддержка альфа-канала
- Конвертация между форматами
- Качество текстур и сжатие
- Примеры из реальных модов
- Распространённые ошибки
- Лучшие практики
Обзор форматов текстур
DayZ использует четыре формата текстур на разных этапах конвейера разработки:
| Формат | Расширение | Роль | Поддержка альфа | Где используется |
|---|---|---|---|---|
| PAA | .paa | Игровой формат времени выполнения (сжатый) | Да | Финальная сборка, включается в PBO |
| EDDS | .edds | Вариант DDS для редактора/промежуточный | Да | Предпросмотр в Object Builder, автоконвертация |
| TGA | .tga | Несжатый исходный материал | Да | Рабочее пространство художника, экспорт Photoshop/GIMP |
| PNG | .png | Портативный исходный формат | Да | Текстуры UI, внешние инструменты |
Общий рабочий процесс: Исходник (TGA/PNG) --> конвертация DayZ Tools --> PAA (готовый для игры).
Формат PAA
PAA (PAcked Arma) -- это нативный сжатый формат текстур, используемый движком Enfusion во время выполнения. Каждая текстура, включённая в PBO, должна быть в формате PAA (или будет преобразована в него при бинаризации).
Характеристики
- Сжатый: Использует DXT1, DXT5 или ARGB8888 сжатие внутренне в зависимости от наличия альфа-канала и настроек качества.
- С мип-картами: PAA-файлы содержат полную цепочку мип-карт, генерируемую автоматически при конвертации. Это критически важно для производительности рендеринга -- движок выбирает соответствующий уровень мипа в зависимости от расстояния.
- Размеры степени двойки: Движок требует, чтобы PAA-текстуры имели размеры, являющиеся степенями 2 (256, 512, 1024, 2048, 4096).
- Только для чтения во время выполнения: Движок загружает PAA-файлы напрямую из PBO. Вы никогда не редактируете PAA-файл -- вы редактируете исходник и конвертируете заново.
Типы внутреннего сжатия
| Тип | Альфа | Качество | Применение |
|---|---|---|---|
| DXT1 | Нет (1 бит) | Хорошее, соотношение 6:1 | Непрозрачные текстуры, рельеф |
| DXT5 | Полный 8-бит | Хорошее, соотношение 4:1 | Текстуры с плавной прозрачностью (стекло, листва) |
| ARGB4444 | Полный 4-бит | Среднее | Текстуры UI, маленькие иконки |
| ARGB8888 | Полный 8-бит | Без потерь | Отладка, наивысшее качество (большой размер файла) |
| AI88 | Градации серого + альфа | Хорошее | Карты нормалей, маски в градациях серого |
Когда вы встречаете PAA-файлы
- Внутри распакованных ванильных данных игры (директория
dta/и PBO аддонов) - Как результат конвертации TexView2
- Как результат Binarize при обработке исходных текстур
- В финальном PBO вашего мода после сборки
Формат EDDS
EDDS -- это промежуточный формат текстур, используемый преимущественно Object Builder и редакторными инструментами DayZ. По сути это вариант стандартного формата DirectDraw Surface (DDS) с метаданными, специфичными для движка.
Характеристики
- Формат предпросмотра: Object Builder может отображать EDDS-текстуры напрямую, что делает их полезными при создании моделей.
- Автоконвертация в PAA: При запуске Binarize или AddonBuilder (без
-packonly) EDDS-файлы в вашем дереве исходников автоматически конвертируются в PAA. - Больше, чем PAA: EDDS-файлы не оптимизированы для распространения -- они существуют для удобства редактора.
- Формат DayZ-Samples: Официальные DayZ-Samples от Bohemia активно используют EDDS-текстуры.
Рабочий процесс с EDDS
Художник создаёт TGA/PNG исходник
--> Плагин DDS для Photoshop экспортирует EDDS для предпросмотра
--> Object Builder отображает EDDS на модели
--> Binarize конвертирует EDDS в PAA для PBOСовет: Вы можете полностью пропустить EDDS, если хотите. Конвертируйте исходные текстуры напрямую в PAA с помощью TexView2 и указывайте пути PAA в материалах. EDDS -- это удобство, а не требование.
Формат TGA
TGA (Truevision TGA / Targa) -- это традиционный несжатый исходный формат для работы с текстурами DayZ. Многие ванильные текстуры DayZ изначально были созданы как TGA-файлы.
Характеристики
- Несжатый: Без потери качества, полная глубина цвета (24-бит или 32-бит с альфа).
- Большие размеры файлов: TGA 2048x2048 с альфа занимает примерно 16 МБ.
- Альфа в выделенном канале: TGA поддерживает полноценный 8-битный альфа-канал (32-битный TGA), который напрямую отображается в прозрачность в PAA.
- Совместим с TexView2: TexView2 может открывать TGA-файлы напрямую и конвертировать их в PAA.
Когда использовать TGA
- Как мастер-файл исходника для текстур, которые вы создаёте с нуля.
- При экспорте из Substance Painter или Photoshop для DayZ.
- Когда документация DayZ-Samples или руководства сообщества указывают TGA как исходный формат.
Настройки экспорта TGA
При экспорте TGA для конвертации DayZ:
- Глубина цвета: 32-бит (если нужна альфа) или 24-бит (непрозрачные текстуры)
- Сжатие: Нет (без сжатия)
- Ориентация: Начало в нижнем левом углу (стандартная ориентация TGA)
- Разрешение: Должно быть степенью 2 (см. Требования к разрешению)
Формат PNG
PNG (Portable Network Graphics) широко поддерживается и может использоваться как альтернативный исходный формат, особенно для текстур UI.
Характеристики
- Сжатие без потерь: Меньше, чем TGA, но сохраняет полное качество.
- Полный альфа-канал: 32-битный PNG поддерживает 8-битный альфа.
- Совместим с TexView2: TexView2 может открывать и конвертировать PNG в PAA.
- Удобен для UI: Многие наборы изображений и иконки UI в модах используют PNG как исходный формат.
Когда использовать PNG
- Текстуры и иконки UI: PNG -- практичный выбор для наборов изображений и элементов HUD.
- Простые ретекстуры: Когда вам нужна только карта цвета/диффуза без сложной альфа.
- Межинструментальные рабочие процессы: PNG универсально поддерживается во всех графических редакторах, веб-инструментах и скриптах.
Примечание: PNG не является официальным исходным форматом Bohemia -- они предпочитают TGA. Однако инструменты конвертации обрабатывают PNG без проблем, и многие моддеры успешно его используют.
Соглашения об именовании текстур
DayZ использует строгую систему суффиксов для определения роли каждой текстуры. Движок и материалы ссылаются на текстуры по имени файла, и суффикс сообщает и движку, и другим моддерам, какой тип данных содержит текстура.
Обязательные суффиксы
| Суффикс | Полное название | Назначение | Типичный формат |
|---|---|---|---|
_co | Color / Diffuse | Базовый цвет (альбедо) поверхности | RGB, опциональная альфа |
_nohq | Normal Map (High Quality) | Нормали деталей поверхности, определяет выпуклости и бороздки | RGB (нормали в касательном пространстве) |
_smdi | Specular / Metallic / Detail Index | Управляет блеском и металлическими свойствами | RGB-каналы кодируют отдельные данные |
_ca | Color with Alpha | Цветовая текстура, где альфа-канал несёт значимые данные (прозрачность, маска) | RGBA |
_as | Ambient Shadow | Карта рассеянного затенения / запечённые тени | Градации серого |
_mc | Macro | Крупномасштабная цветовая вариация, видимая на расстоянии | RGB |
_li | Light / Emissive | Карта самосвечения (светящиеся части) | RGB |
_no | Normal Map (Standard) | Вариант карты нормалей более низкого качества | RGB |
_mca | Macro with Alpha | Макро-текстура с альфа-каналом | RGBA |
_de | Detail | Тайлящаяся детальная текстура для вариации поверхности вблизи | RGB |
Соглашение об именовании на практике
Один предмет обычно имеет несколько текстур с общим базовым именем:
data/
my_rifle_co.paa <-- Базовый цвет (то, что вы видите)
my_rifle_nohq.paa <-- Карта нормалей (неровности поверхности)
my_rifle_smdi.paa <-- Спекулярная/металлическая карта (блеск)
my_rifle_as.paa <-- Карта рассеянного затенения (запечённая AO)
my_rifle_ca.paa <-- Цвет с альфа (если нужна прозрачность)Каналы _smdi
Спекулярная/металлическая/детальная текстура упаковывает три потока данных в одно RGB-изображение:
| Канал | Данные | Диапазон | Эффект |
|---|---|---|---|
| R | Металличность | 0-255 | 0 = не металл, 255 = полный металл |
| G | Шероховатость (инвертированная спекулярность) | 0-255 | 0 = грубая/матовая, 255 = гладкая/глянцевая |
| B | Детальный индекс / AO | 0-255 | Детальное тайлинг или рассеянное затенение |
Каналы _nohq
Карты нормалей в DayZ используют кодирование в касательном пространстве:
| Канал | Данные |
|---|---|
| R | Нормаль по оси X (влево-вправо) |
| G | Нормаль по оси Y (вверх-вниз) |
| B | Нормаль по оси Z (к зрителю) |
| A | Карта спекулярной мощности (опционально, зависит от материала) |
Требования к разрешению
Движок Enfusion требует, чтобы все текстуры имели размеры степени двойки. И ширина, и высота должны независимо быть степенью 2, но они не обязаны быть равными (неквадратные текстуры допустимы).
Допустимые размеры
| Размер | Типичное применение |
|---|---|
| 64x64 | Крошечные иконки, элементы UI |
| 128x128 | Маленькие иконки, миниатюры инвентаря |
| 256x256 | Панели UI, маленькие текстуры предметов |
| 512x512 | Стандартные текстуры предметов, одежда |
| 1024x1024 | Оружие, детализированная одежда, детали транспорта |
| 2048x2048 | Оружие высокой детализации, модели персонажей |
| 4096x4096 | Текстуры рельефа, большие текстуры транспорта |
Неквадратные текстуры
Неквадратные текстуры со степенями двойки допустимы:
256x512 -- Допустимо (оба являются степенями 2)
512x1024 -- Допустимо
1024x2048 -- Допустимо
300x512 -- НЕДОПУСТИМО (300 не является степенью 2)Рекомендации по разрешению
- Оружие: 2048x2048 для основного корпуса, 1024x1024 для навесного оборудования.
- Одежда: 1024x1024 или 2048x2048 в зависимости от покрытия поверхности.
- Иконки UI: 128x128 или 256x256 для иконок инвентаря, 64x64 для элементов HUD.
- Рельеф: 4096x4096 для спутниковых карт, 512x512 или 1024x1024 для тайлов материалов.
- Карты нормалей: То же разрешение, что и у соответствующей цветовой текстуры.
- Карты SMDI: То же разрешение, что и у соответствующей цветовой текстуры.
Предупреждение: Если текстура имеет размеры, не являющиеся степенью двойки, движок либо откажется её загрузить, либо отобразит пурпурную текстуру ошибки. TexView2 покажет предупреждение при конвертации.
Поддержка альфа-канала
Альфа-канал текстуры несёт дополнительные данные помимо цвета. Как он интерпретируется, зависит от суффикса текстуры и шейдера материала.
Роли альфа-канала
| Суффикс | Интерпретация альфа |
|---|---|
_co | Обычно не используется; если присутствует, может определять прозрачность для простых материалов |
_ca | Маска прозрачности (0 = полностью прозрачный, 255 = полностью непрозрачный) |
_nohq | Карта спекулярной мощности (выше = более резкий спекулярный блик) |
_smdi | Обычно не используется |
_li | Маска интенсивности свечения |
Создание текстур с альфа
В вашем графическом редакторе (Photoshop, GIMP, Krita):
- Создайте RGB-содержимое как обычно.
- Добавьте альфа-канал.
- Закрасьте белым (255) там, где хотите полную непрозрачность/эффект, чёрным (0) -- где не хотите.
- Экспортируйте как 32-битный TGA или PNG.
- Конвертируйте в PAA с помощью TexView2 -- он автоматически обнаружит альфа-канал.
Проверка альфа в TexView2
Откройте PAA в TexView2 и используйте кнопки отображения каналов:
- RGBA -- Показывает финальный композит
- RGB -- Показывает только цвет
- A -- Показывает только альфа-канал (белый = непрозрачный, чёрный = прозрачный)
Конвертация между форматами
TexView2 (основной инструмент)
TexView2 входит в DayZ Tools и является стандартной утилитой конвертации текстур.
Открытие файла:
- Запустите TexView2 из DayZ Tools или напрямую из
DayZ Tools\Bin\TexView2\TexView2.exe. - Откройте исходный файл (TGA, PNG или EDDS).
- Убедитесь, что изображение выглядит правильно, и проверьте размеры.
Конвертация в PAA:
- Откройте исходную текстуру в TexView2.
- Перейдите в File --> Save As.
- Выберите PAA как формат вывода.
- Выберите тип сжатия:
- DXT1 для непрозрачных текстур (альфа не нужна)
- DXT5 для текстур с альфа-прозрачностью
- ARGB4444 для маленьких текстур UI, где важен размер файла
- Нажмите Save.
Пакетная конвертация через командную строку:
# Конвертировать один TGA в PAA
"P:\DayZ Tools\Bin\TexView2\TexView2.exe" -i "source.tga" -o "output.paa"
# TexView2 автоматически выберет сжатие на основе наличия альфа-каналаBinarize (автоматическая)
Когда Binarize обрабатывает исходную директорию вашего мода, он автоматически конвертирует все распознанные форматы текстур (TGA, PNG, EDDS) в PAA. Это происходит как часть конвейера AddonBuilder.
Поток конвертации Binarize:
source/mod_name/data/texture_co.tga
--> Binarize обнаруживает TGA
--> Конвертирует в PAA с автоматическим выбором сжатия
--> Результат: build/mod_name/data/texture_co.paaТаблица ручной конвертации
| Из | В | Инструмент | Примечания |
|---|---|---|---|
| TGA --> PAA | TexView2 | Стандартный рабочий процесс | |
| PNG --> PAA | TexView2 | Работает идентично TGA | |
| EDDS --> PAA | TexView2 или Binarize | Автоматически при сборке | |
| PAA --> TGA | TexView2 (Save As TGA) | Для редактирования существующих текстур | |
| PAA --> PNG | TexView2 (Save As PNG) | Для извлечения в портативный формат | |
| PSD --> TGA/PNG | Photoshop/GIMP | Экспорт из редактора, затем конвертация |
Качество текстур и сжатие
Выбор типа сжатия
| Сценарий | Рекомендуемое сжатие | Причина |
|---|---|---|
Непрозрачная диффузная (_co) | DXT1 | Лучшее соотношение, альфа не нужна |
Прозрачная диффузная (_ca) | DXT5 | Полная поддержка альфа |
Карты нормалей (_nohq) | DXT5 | Альфа-канал несёт спекулярную мощность |
Спекулярные карты (_smdi) | DXT1 | Обычно непрозрачные, только RGB-каналы |
| Текстуры UI | ARGB4444 или DXT5 | Малый размер, чёткие края |
Карты свечения (_li) | DXT1 или DXT5 | DXT5 если альфа несёт интенсивность |
Качество vs размер файла
Формат 2048x2048 прибл. размер
-----------------------------------------
ARGB8888 16.0 МБ (без сжатия)
DXT5 5.3 МБ (сжатие 4:1)
DXT1 2.7 МБ (сжатие 6:1)
ARGB4444 8.0 МБ (сжатие 2:1)Настройки качества в игре
Игроки могут настраивать качество текстур в настройках видео DayZ. Движок выбирает более низкие уровни мип-карт при снижении качества, поэтому ваши текстуры будут выглядеть прогрессивно более размытыми на низких настройках. Это автоматический процесс -- вам не нужно создавать отдельные уровни качества.
Примеры из реальных модов
Набор текстур оружия
Типичный мод оружия содержит эти файлы текстур:
MyMod_Weapons/data/weapons/m4a1/
my_weapon_co.paa <-- 2048x2048, DXT1, базовый цвет
my_weapon_nohq.paa <-- 2048x2048, DXT5, карта нормалей
my_weapon_smdi.paa <-- 2048x2048, DXT1, спекулярная/металлическая
my_weapon_as.paa <-- 1024x1024, DXT1, рассеянное затенениеФайл материала (.rvmat) ссылается на эти текстуры и назначает их этапам шейдера.
Текстура UI (источник набора изображений)
MyFramework/data/gui/icons/
my_icons_co.paa <-- 512x512, ARGB4444, спрайт-атласТекстуры UI часто упаковываются в один атлас (набор изображений) и ссылаются по имени в файлах макетов. Сжатие ARGB4444 распространено для UI, потому что оно сохраняет чёткие края при малом размере файла.
Текстуры рельефа
terrain/
grass_green_co.paa <-- 1024x1024, DXT1, тайлящийся цвет
grass_green_nohq.paa <-- 1024x1024, DXT5, тайлящиеся нормали
grass_green_smdi.paa <-- 1024x1024, DXT1, тайлящийся спекуляр
grass_green_mc.paa <-- 512x512, DXT1, макро-вариация
grass_green_de.paa <-- 512x512, DXT1, детальный тайлингТекстуры рельефа тайлятся по ландшафту. Макро-текстура _mc добавляет крупномасштабную цветовую вариацию для предотвращения повторяемости.
Распространённые ошибки
1. Размеры не степень двойки
Симптом: Пурпурная текстура в игре, предупреждения TexView2. Исправление: Измените размер исходника до ближайшей степени 2 перед конвертацией.
2. Отсутствующий суффикс
Симптом: Материал не может найти текстуру, или она рендерится некорректно. Исправление: Всегда включайте правильный суффикс (_co, _nohq и т.д.) в имя файла.
3. Неправильное сжатие для альфа
Симптом: Прозрачность выглядит блочной или бинарной (вкл/выкл без градиента). Исправление: Используйте DXT5 вместо DXT1 для текстур, которым нужны плавные градиенты альфа.
4. Отсутствие мип-карт
Симптом: Текстура выглядит нормально вблизи, но мерцает/искрит на расстоянии. Исправление: PAA-файлы, сгенерированные TexView2, автоматически включают мип-карты. Если вы используете нестандартный инструмент, убедитесь, что генерация мип-карт включена.
5. Неправильный формат карты нормалей
Симптом: Освещение модели выглядит инвертированным или плоским. Исправление: Убедитесь, что карта нормалей в формате касательного пространства с соглашением DirectX по оси Y (зелёный канал: вверх = светлее). Некоторые инструменты экспортируют в стиле OpenGL (инвертированный Y) -- нужно инвертировать зелёный канал.
6. Несоответствие путей после конвертации
Симптом: Модель или материал показывает пурпурный, потому что ссылается на путь .tga, но PBO содержит .paa. Исправление: Материалы должны ссылаться на финальный путь .paa. Binarize автоматически обрабатывает переназначение путей, но если вы пакуете с -packonly (без бинаризации), вы должны убедиться, что пути точно совпадают.
Лучшие практики
Храните исходные файлы в системе контроля версий. Храните мастер-файлы TGA/PNG вместе с вашим модом. PAA-файлы -- это сгенерированный результат, а важны исходники.
Соответствие разрешения важности. Винтовка, на которую игрок смотрит часами, заслуживает 2048x2048. Банка бобов на задней полке может использовать 512x512.
Всегда предоставляйте карту нормалей. Даже плоская карта нормалей (сплошная заливка 128, 128, 255) лучше, чем отсутствие -- отсутствующие карты нормалей вызывают ошибки материала.
Именуйте единообразно. Одно базовое имя, несколько суффиксов:
myitem_co.paa,myitem_nohq.paa,myitem_smdi.paa. Никогда не смешивайте схемы именования.Проверяйте в TexView2 перед сборкой. Откройте ваш результат PAA и убедитесь, что он выглядит правильно. Проверьте каждый канал отдельно.
Используйте DXT1 по умолчанию, DXT5 только когда нужна альфа. DXT1 в два раза меньше DXT5 и выглядит идентично для непрозрачных текстур.
Тестируйте на низких настройках качества. То, что отлично выглядит на Ultra, может быть нечитаемым на Low, потому что движок агрессивно понижает уровни мип-карт.
Использование в реальных модах
| Паттерн | Мод | Детали |
|---|---|---|
Атлас _co текстур для сеток иконок | Colorful UI | Упаковывает несколько иконок UI в один атлас 512x512 _co.paa, на который ссылаются наборы изображений |
| Спрайт-листы иконок маркета | Expansion Market | Использует большие PAA-текстуры атласов с десятками миниатюр предметов для UI торговца |
| Ретекстур через hiddenSelections без нового P3D | DayZ-Samples (Test_ClothingRetexture) | Заменяет _co.paa через hiddenSelectionsTextures[] для создания цветовых вариантов из одной модели |
| ARGB4444 для маленьких элементов HUD | VPP Admin Tools | Использует ARGB4444-сжатые 64x64 PAA-файлы для иконок панели инструментов и панелей для минимизации размера файла |
Совместимость и влияние
- Мульти-мод: Коллизии путей текстур редки, потому что каждый мод использует собственный PBO-префикс, но два мода, ретекстурирующих один и тот же ванильный предмет через
hiddenSelectionsTextures[], будут конфликтовать -- побеждает последний загруженный. - Производительность: Одна текстура 4096x4096 DXT5 использует ~21 МБ GPU-памяти с мип-картами. Чрезмерное использование больших текстур для многих предметов мода может исчерпать VRAM на оборудовании начального уровня. Предпочитайте 1024 или 2048 для большинства предметов.
- Версионность: Формат PAA и конвейер TexView2 стабильны с DayZ 1.0. Никаких критических изменений между версиями DayZ не произошло.
Навигация
| Предыдущая | Вверх | Следующая |
|---|---|---|
| Часть 3: Система GUI | Часть 4: Форматы файлов и DayZ Tools | 4.2 3D-модели |
