第 4.1 章:纹理 (.paa, .edds, .tga)
首页 | 纹理 | 下一章:3D 模型 >>
简介
DayZ 中你看到的每一个表面——武器皮肤、服装、地形、UI 图标——都由纹理文件定义。引擎在运行时使用一种名为 PAA 的专有压缩格式,但在开发过程中你需要使用多种源格式,这些格式在构建过程中会被转换。理解这些格式、将它们绑定到材质的命名约定以及引擎执行的分辨率规则,是为 DayZ 模组创建视觉内容的基础。
本章涵盖你将遇到的每种纹理格式、告诉引擎如何解读每个纹理的后缀命名系统、分辨率和 Alpha 通道要求,以及格式之间的实际转换工作流程。
目录
纹理格式概述
DayZ 在开发管线的不同阶段使用四种纹理格式:
| 格式 | 扩展名 | 角色 | Alpha 支持 | 使用场景 |
|---|---|---|---|---|
| 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 格式(或在二进制化过程中被转换为 PAA)。
特征
- 压缩: 根据 Alpha 通道的存在和质量设置,内部使用 DXT1、DXT5 或 ARGB8888 压缩。
- 含 Mipmap: PAA 文件包含完整的 Mipmap 链,在转换时自动生成。这对渲染性能至关重要——引擎根据距离选择合适的 Mip 级别。
- 二的幂次方尺寸: 引擎要求 PAA 纹理的尺寸为 2 的幂次方(256、512、1024、2048、4096)。
- 运行时只读: 引擎直接从 PBO 加载 PAA 文件。你永远不会编辑 PAA 文件——你编辑源文件并重新转换。
内部压缩类型
| 类型 | Alpha | 质量 | 使用场景 |
|---|---|---|---|
| DXT1 | 无(1 位) | 好,6:1 比率 | 不透明纹理,地形 |
| DXT5 | 完整 8 位 | 好,4:1 比率 | 具有平滑 Alpha 的纹理(玻璃、植被) |
| ARGB4444 | 完整 4 位 | 中等 | UI 纹理,小图标 |
| ARGB8888 | 完整 8 位 | 无损 | 调试,最高质量(文件较大) |
| AI88 | 灰度 + Alpha | 好 | 法线贴图,灰度遮罩 |
何时会看到 PAA 文件
- 在解包的原版游戏数据中(
dta/和插件 PBO) - 作为 TexView2 转换的输出
- 作为 Binarize 处理源纹理的输出
- 在你的模组最终 PBO 构建后
EDDS 格式
EDDS 是一种中间纹理格式,主要由 DayZ 的 Object Builder 和编辑器工具使用。它本质上是标准 DirectDraw Surface (DDS) 格式的变体,带有引擎特定的元数据。
特征
- 预览格式: Object Builder 可以直接显示 EDDS 纹理,使其在模型创建过程中非常有用。
- 自动转换为 PAA: 当你运行 Binarize 或 AddonBuilder(不使用
-packonly)时,源树中的 EDDS 文件会自动转换为 PAA。 - 比 PAA 大: EDDS 文件未针对分发进行优化——它们是为编辑器便利而存在的。
- DayZ-Samples 格式: Bohemia 提供的官方 DayZ-Samples 大量使用 EDDS 纹理。
EDDS 工作流程
美术师创建 TGA/PNG 源文件
--> Photoshop DDS 插件导出 EDDS 用于预览
--> Object Builder 在模型上显示 EDDS
--> Binarize 将 EDDS 转换为 PAA 用于 PBO提示: 如果你愿意,可以完全跳过 EDDS。使用 TexView2 将源纹理直接转换为 PAA,并在材质中引用 PAA 路径。EDDS 是一种便利手段,不是必需的。
TGA 格式
TGA(Truevision TGA / Targa)是 DayZ 纹理工作的传统未压缩源格式。许多原版 DayZ 纹理最初是以 TGA 文件编写的。
特征
- 未压缩: 无质量损失,完整色彩深度(24 位或带 Alpha 的 32 位)。
- 文件较大: 带 Alpha 的 2048x2048 TGA 大约为 16 MB。
- Alpha 在专用通道中: TGA 支持适当的 8 位 Alpha 通道(32 位 TGA),可直接映射到 PAA 中的透明度。
- TexView2 兼容: TexView2 可以直接打开 TGA 文件并将其转换为 PAA。
何时使用 TGA
- 作为你从头创作的纹理的主源文件。
- 从 Substance Painter 或 Photoshop 导出用于 DayZ 时。
- 当 DayZ-Samples 文档或社区教程指定 TGA 作为源格式时。
TGA 导出设置
为 DayZ 转换导出 TGA 时:
- 位深度: 32 位(如果需要 Alpha)或 24 位(不透明纹理)
- 压缩: 无(未压缩)
- 方向: 左下角原点(标准 TGA 方向)
- 分辨率: 必须是 2 的幂次方(参见分辨率要求)
PNG 格式
PNG(Portable Network Graphics)得到广泛支持,可作为替代源格式使用,特别适用于 UI 纹理。
特征
- 无损压缩: 比 TGA 小但保留完整质量。
- 完整 Alpha 通道: 32 位 PNG 支持 8 位 Alpha。
- TexView2 兼容: TexView2 可以打开并将 PNG 转换为 PAA。
- UI 友好: 许多模组中的 UI 图像集和图标使用 PNG 作为源格式。
何时使用 PNG
- UI 纹理和图标: PNG 是图像集和 HUD 元素的实用选择。
- 简单重新纹理: 当你只需要颜色/漫反射贴图而没有复杂 Alpha 时。
- 跨工具工作流程: PNG 在图像编辑器、网页工具和脚本中得到普遍支持。
注意: PNG 不是 Bohemia 的官方源格式——他们偏好 TGA。但是,转换工具可以无问题地处理 PNG,许多模组制作者都成功使用它。
纹理命名约定
DayZ 使用严格的后缀系统来标识每个纹理的角色。引擎和材质通过文件名引用纹理,后缀告诉引擎和其他模组制作者纹理包含什么类型的数据。
必需后缀
| 后缀 | 全称 | 用途 | 典型格式 |
|---|---|---|---|
_co | Color / Diffuse | 表面的基础颜色(反照率) | RGB,可选 Alpha |
_nohq | Normal Map (High Quality) | 表面细节法线,定义凹凸和凹槽 | RGB(切线空间法线) |
_smdi | Specular / Metallic / Detail Index | 控制光泽度和金属属性 | RGB 通道编码单独的数据 |
_ca | Color with Alpha | Alpha 通道携带有意义数据(透明度、遮罩)的颜色纹理 | RGBA |
_as | Ambient Shadow | 环境光遮蔽 / 阴影烘焙 | 灰度 |
_mc | Macro | 在远距离可见的大尺度颜色变化 | RGB |
_li | Light / Emissive | 自发光贴图(发光部分) | RGB |
_no | Normal Map (Standard) | 较低质量的法线贴图变体 | RGB |
_mca | Macro with Alpha | 带 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 <-- 带 Alpha 的颜色(如果需要透明度)_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,HUD 元素 64x64。
- 地形: 卫星地图 4096x4096,材质贴片 512x512 或 1024x1024。
- 法线贴图: 与对应颜色纹理相同的分辨率。
- SMDI 贴图: 与对应颜色纹理相同的分辨率。
警告: 如果纹理的尺寸不是二的幂次方,引擎将拒绝加载它或显示品红色错误纹理。TexView2 在转换时会显示警告。
Alpha 通道支持
纹理中的 Alpha 通道承载颜色之外的附加数据。其解读方式取决于纹理后缀和材质着色器。
Alpha 通道角色
| 后缀 | Alpha 解读 |
|---|---|
_co | 通常未使用;如果存在,可能为简单材质定义透明度 |
_ca | 透明度遮罩(0 = 完全透明,255 = 完全不透明) |
_nohq | 高光功率贴图(越高 = 越锐利的高光) |
_smdi | 通常未使用 |
_li | 自发光强度遮罩 |
创建带 Alpha 的纹理
在你的图像编辑器(Photoshop、GIMP、Krita)中:
- 正常创建 RGB 内容。
- 添加 Alpha 通道。
- 在需要完全不透明/效果的地方涂白色(255),在不需要的地方涂黑色(0)。
- 导出为 32 位 TGA 或 PNG。
- 使用 TexView2 转换为 PAA——它会自动检测 Alpha 通道。
在 TexView2 中验证 Alpha
在 TexView2 中打开 PAA 并使用通道显示按钮:
- RGBA -- 显示最终合成效果
- RGB -- 仅显示颜色
- A -- 仅显示 Alpha 通道(白色 = 不透明,黑色 = 透明)
格式之间的转换
TexView2(主要工具)
TexView2 包含在 DayZ Tools 中,是标准的纹理转换工具。
打开文件:
- 从 DayZ Tools 或直接从
DayZ Tools\Bin\TexView2\TexView2.exe启动 TexView2。 - 打开你的源文件(TGA、PNG 或 EDDS)。
- 验证图像是否正确并检查尺寸。
转换为 PAA:
- 在 TexView2 中打开源纹理。
- 进入 File --> Save As。
- 选择 PAA 作为输出格式。
- 选择压缩类型:
- DXT1 用于不透明纹理(不需要 Alpha)
- DXT5 用于具有 Alpha 透明度的纹理
- ARGB4444 用于文件大小重要的小型 UI 纹理
- 点击 Save。
通过命令行批量转换:
# 将单个 TGA 转换为 PAA
"P:\DayZ Tools\Bin\TexView2\TexView2.exe" -i "source.tga" -o "output.paa"
# TexView2 会根据 Alpha 通道的存在自动选择压缩方式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(另存为 TGA) | 用于编辑现有纹理 | |
| PAA --> PNG | TexView2(另存为 PNG) | 用于提取为便携格式 | |
| PSD --> TGA/PNG | Photoshop/GIMP | 从编辑器导出,然后转换 |
纹理质量与压缩
压缩类型选择
| 场景 | 推荐压缩 | 原因 |
|---|---|---|
不透明漫反射 (_co) | DXT1 | 最佳比率,无需 Alpha |
透明漫反射 (_ca) | DXT5 | 完整 Alpha 支持 |
法线贴图 (_nohq) | DXT5 | Alpha 通道携带高光功率 |
高光贴图 (_smdi) | DXT1 | 通常不透明,仅 RGB 通道 |
| UI 纹理 | ARGB4444 或 DXT5 | 小尺寸,清晰边缘 |
自发光贴图 (_li) | DXT1 或 DXT5 | 如果 Alpha 携带强度则用 DXT5 |
质量 vs. 文件大小
格式 2048x2048 大约大小
-----------------------------------------
ARGB8888 16.0 MB (未压缩)
DXT5 5.3 MB (4:1 压缩)
DXT1 2.7 MB (6:1 压缩)
ARGB4444 8.0 MB (2:1 压缩)游戏内质量设置
玩家可以在 DayZ 的视频设置中调整纹理质量。当质量降低时,引擎会选择较低的 Mip 级别,因此你的纹理在较低设置下会逐渐变得模糊。这是自动的——你不需要创建单独的质量级别。
实际示例
武器纹理集
典型的武器模组包含以下纹理文件:
MyWeapons/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. Alpha 使用了错误的压缩
症状: 透明度看起来块状或二值化(开/关没有渐变)。 修复: 对需要平滑 Alpha 渐变的纹理使用 DXT5 而不是 DXT1。
4. 忘记 Mipmap
症状: 纹理近处看起来正常,但远处闪烁/闪亮。 修复: TexView2 生成的 PAA 文件自动包含 Mipmap。如果你使用非标准工具,请确保启用了 Mipmap 生成。
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,只在需要 Alpha 时使用 DXT5。 DXT1 的文件大小是 DXT5 的一半,对于不透明纹理看起来完全相同。
在低质量设置下测试。 在超高画质下看起来很棒的东西在低画质下可能无法辨认,因为引擎会激进地降低 Mip 级别。
导航
| 上一章 | 上级 | 下一章 |
|---|---|---|
| 第 3 部分:GUI 系统 | 第 4 部分:文件格式与 DayZ Tools | 4.2 3D 模型 |
