跳转到内容

Trainz/refs/texture.txt 文件

来自维基教科书,开放世界中的开放书籍
logo
Trainz 注释参考页

Trainz 资源维护与创建
TOC | 开始趣味 | AM&C | 创建 | 书内参考 ORP 参考:  • 索引 • 容器 • 种类 • 标签 | 附录  • 版本

*.texture.txt 为后缀和扩展名的文本文件被用作指定几乎所有资源中的图形文件选项和处理过程的首选方法,包括那些采用包含烘焙纹理映射的较新技术的内容 网格,带有法线贴图和反射率(UV 贴图)——因为它们旨在配置 Trainz 中的纹理行为。这些文件也可以控制纹理如何由 内容管理器 处理,特别是通过提供 路径规范,并触发额外的验证以最佳地生成健康的资源。此外,具有法线或 UV 映射的较新的 LOD 网格集将有自己的 texture.txt 文件来控制其应用。

这些文件通常位于与纹理源图像文件相同的文件夹中,通常是 .bmp、.tga 或 .jpg 文件,因为 texture.txt 文件的工作是引用它们并指导网格 (.im 文件) 指向它们,但 texture.txt 可以位于其他地方,因为它可以利用短形式的 DOS/Windows 文件结构导航,在文件夹级别上移除一个文件夹,但不移除两个文件夹[注释 1].

纹理文件...

在 Trainz 社区中,三种相互关联的文件类型被称为 '纹理文件',甚至 N3V 编程人员也被观察到将每种文件类型称为“纹理文件”。该术语既适用于具有 .texture 扩展名的文件,也适用于与控制 .texture.txt 文件 配对的 图形显示文件类型。请注意,该术语在某些情况下也可能被用来指代 texture.txt 文件,它是一种控制文件或 INI 文件,包含控制其对应图像文件处理的指令,这两者在资源通过错误测试并被提交时,都会被内容管理器处理并压缩成 .texture 文件

  • 避免对此感到困惑的秘诀是认识到它们都是纹理文件,一个是以原始可编辑形式存在的(一个文件对,包含 texture.txt 和图形文件元素)
  • 另一个,那个奇怪的 文件名.texture运行时就绪(已压缩、处理并准备加载)两个源文件的组合形式,由 CM 在故障检查后,以及作为资源被 提交 的一部分生成。
  • .texture 文件可以使用 PevSoft(Pev)的 Images2TGA.exe 工具实用程序解压缩。CM/CMP 的某些版本在编辑资源时会保留它们,有些 CM 会在提交或检查资源时抱怨它们的存在,而有些 CM 则无所谓。一般来说,如果它们在导入 cdp 文件、解压缩 .chump 文件或打开资源进行编辑后仍然存在,则可以安全地删除它们。



实际上,texture.txt 文件必须位于与寻找它的网格相同的文件夹中!。图像文件可以被多个 texture.txt 文件和网格引用共享。这些是控制文件,由 Trainz 导出器或导入器自动生成(即从 GmaxBlender 和 AutoDesk 的 3dsMax 格式到 Trainz 数据需求的翻译软件——Auran/N3V 偶尔会更新这些文件),但可以在需要特殊化时手动编辑。

每个令牌在单独一行指定。在“=”符号两侧没有空格。空值有时有效。语法为

<token>=<value>

Texture.txt 文件可以使用 C++ 的“双斜线”注释风格进行注释

// This file was created for TRS2006-SP1 then retrograded to trainz-build 2.0 for TRS2004

以下是支持的令牌列表。任何其他值都不应使用。

  • 此外,必须理解
  1. 网格和 texture.txt 文件始终放在同一个文件夹中。
  2. 纹理(图像文件)本身可以位于一个公共位置,并由资源的多个网格引用(蒸汽机车的 8 个或更多网格需要多少个 black.tga 纹理?),但引用是通过 texture.txt 文件进行的,其名称必须与网格引用的名称匹配。即网格引用texture.txt 文件的名称,该名称不必与列出的作为主纹理的实际图像/纹理的名称匹配。
  3. 假设一个公共纹理文件、不同的网格名称和/或位置,以及来自额外图形的不同“外观”
    1. 以上示例中的八个网格中的四个每个都有一个不同的名称,可以引用相同的纹理并使用相同的处理“令牌”,但每个都必须存在以支持其在 网格文件中进行引用。
    2. 剩余的两个可能引用一个完全不同的“black2.tga”
    3. 而其他的引用相同的纹理,但使用上面复合示例中列出的、下面详细描述的不同令牌组合。
  4. 需要掌握的关键点是 texture.txt 文件和网格文件之间的 Onto 关系,以及纹理名称和位置可能截然不同——它们没有理由与网格或 texture.txt 文件共存。后者的任务是将两者结合起来,并定义该网格渲染纹理图像的方式。

并排示例

[编辑 | 编辑源代码]
大多数 texture.txt 文件只有两到四行,就像下面左侧和中间的两个示例。Alpha 通道数据通常由与作为主纹理列出的文件相同的文件传递,前提是图像类型支持此功能。最常见的是 BMP 和 TGA 文件,深度为 32 位,尽管还有一些其他现代类型正在开发中。在最后一个示例中,前四行类似于中间的示例。许多较旧的资源没有 AlphaHint 修饰符,也不支持其他扩展,例如右侧所示的扩展。

最常见的示例

Primary=SunBurn_Red.bmp
Tile=st

 

下一个最常见的示例

Primary=SemiCoolTexture.tga
Alpha=SemiCoolTexture.bmp [或者
Alpha=SemiCoolTexture.tga]
Tile=st
AlphaHint=masked [或者
AlphaHint=Semitransparent]


复合示例

Primary=WayCoolTexture.tga
Alpha=WayCoolTexture.tga
Tile=st
AlphaHint=masked
Anisotropy=16
MagFilter=linear
MinFilter=linear
MipFilter=linear
(仅示例,不推荐设置)

 

 

  • 在下面,我们将在一节中列出“示例行”。并用括号“()”括起补充说明。


首先,我们提供这些示例以与上面和下面的文本进行比较...

主纹理

[编辑 | 编辑源代码]

指定纹理文件名

  • <texture name> - 主纹理。包含扩展名的文件名,三个示例。
Primary=Whitehorse_pub.tga
(这个例子在非火车车厢资产中非常常见,也就是说大多数物体、建筑物、动物和树木不附着在轨道上或不适合在轨道上行驶。简单的轨道类资产(包括道路、电力线和围栏)也具有这种位置上的简单性。在有照明(夜间模式)的杆子和建筑物的情况下,通常会有一个夜间或夜间模式子容器,这是一种来自早期数据模型实践的方法。


Primary=PRR40'1910sBoxcar_body\PRR40'1910sBoxcar_body.tga
(这个例子在火车车厢资产中非常常见,许多内容创作者仍然遵循相同的做法。早期的数据模型标准做法是至少有三个子文件夹与资产文件名匹配,这些子文件夹有后缀:'_art', '_body', & '_shadow'。这并不像看起来那么奇怪,因为资产文件名标签也必须是用户名和资产的主要网格名称。火车车厢是多网格文物,所以控制或参考网格位于根目录,而主体和阴影网格从资产根目录具有可预测的路径,这节省了键入错误的时间,并使事情更加整洁。_art 文件夹支持涉及资产选择或显示的各种菜单(参见:{{TL|Railyard module]}).)
Primary=common_textures\Red-roof-tiles.tga
(这个folder\filename引用意味着 MESH 位置在包含名为 'common_textures' 的子文件夹的文件夹中,因此网格可能位于资产的根文件夹中,CM 将在路径 '{{TBS|username|p=..\editing\username or ..\..\editing\username, 在 N3V 将数据塞入 ..\UserData 文件夹的后期实践中,其中 \editing 存在.[注 2]'.)
Primary=..\green-siding.tga
  • (MESH 位置位于子文件夹中,'common_textures' 位于上层,可能是资产的根文件夹)
Primary=..\traincar_left_door\brass-window-trim.tga
  • (MESH 位置可能位于 '..\traincar_right_door\' '姐妹文件夹' 中,该文件夹包含 'shared_texture'。这两个文件夹都可能是 '\traincar_asset-name_body' 文件夹的子文件夹。这个例子来自使用 Randall Whitepass Pullman 客车和 brass.tga 纹理进行的测试。

 

Alpha 通道

[编辑 | 编辑源代码]

指定纹理的 Alpha 通道。请注意,如果只有一个带有 RGB 和 A 通道的 32 位文件,则仍然必须使用与主纹理中使用的相同名称指定它。

  • <texture name> - Alpha 纹理,可能与主纹理相同或不同。


水平、垂直或两者都包裹纹理寻址。否则纹理将被钳制。

  • <empty> - (默认) 不包裹
  • s - 水平包裹
  • t - 垂直包裹
  • st - 水平和垂直都包裹


纹理的维度数。由于当前仅支持 2D 纹理,因此不需要。

  • two - (默认) 二维
  • cube - (不支持)
  • volume - (不支持)
  • one - (不支持)


CMP 使用的压缩格式。如果未提供此参数,则将自动选择格式

  • none - 不压缩。警告:未压缩的纹理会消耗大量的内存并降低性能。
  • dxt1 - 适用于不透明或 Alpha 遮罩纹理
  • dxt3 - 如果纹理包含明显对比度,则可以作为 Alpha 混合纹理的最佳选择。请先尝试 DXT5。
  • dxt5 - 通常最适合 Alpha 混合纹理


纹理使用提示,仅供内部使用。请注意,不应使用此选项来尝试禁用 mip 映射。

  • static - (默认) 标准纹理资源
  • dynamic - 纹理将在内存中修改


法线贴图提示

[编辑 | 编辑源代码]

有关纹理是否是法线贴图的提示。使用它很重要,因为它会影响最终纹理质量。压缩、mip 映射生成和 XYZ(RGB)的重新归一化都会受到影响。

  • none - (默认) 这不是法线贴图
  • normalmap - 这是一张法线贴图


修改贴图

[编辑 | 编辑源代码]

允许在读取 texture.txt 文件时修改纹理。目前,这是为了允许法线贴图的绿色通道(Y 轴)翻转。

  • none - (默认) 不要修改纹理
  • flipgreen - 翻转绿色通道,即法线贴图的 Y 轴


Alpha 提示

[编辑 | 编辑源代码]

指定 Alpha 通道的使用方式。影响最终 Alpha 质量。也可能影响纹理压缩和 mip 生成。

  • opaque - (没有 Alpha 的默认值) 不使用 Alpha 通道。
  • semitransparent - (有 Alpha 的默认值) Alpha 混合
  • masked - Alpha 遮罩 - 这会从完全透明到完全阻止物体产生 8 位灰度阴影,具体取决于 Alpha 通道或遮罩的逐像素值。
警告:  TS09 之前的 Trainz 版本会从 AlphaHint 标记生成故障,并且可能还会生成下面大多数标记。PEVtool Images2tga 在 2010 年发布,现在可供下载 (这里) 即使在来自这些旧 Trainz 资产的资产中也可能生成它们。解决方法是用 '//' 注释掉这些行,资产应该可以在 TRS 时代的软件中运行。




各向异性

[编辑 | 编辑源代码]

各向异性采样质量。数字越大,视觉质量越好,但性能成本也会大幅增加。如果需要纹理质量,请指定更高的值。Trainz 现在可以通过滑块控制各向异性,因此默认情况下使用最高设置。

  • 1 - 无各向异性过滤
  • 2 - 低
  • 4 - 中等
  • 8 - 高
  • 16 - (默认) 非常高

自动Mip

[编辑 | 编辑源代码]

自动 mip 映射生成。Chris,这已经过时了吗?CMP 现在以最高质量生成 mip 映射,而不是在游戏加载/运行时生成。

  • none - 不要生成 mip 映射
  • default - (默认) 任何默认方法
  • fastest - 尝试以质量为代价提高加载时间
  • nicest - 尝试提高质量,无论时间如何


放大过滤

[编辑 | 编辑源代码]

纹理放大时使用的纹理采样过滤器

  • nearest - 不与相邻纹素混合
  • linear - (游戏默认) 与相邻纹素混合以实现平滑缩放效果
  • default - (默认) 游戏默认


缩小过滤

[编辑 | 编辑源代码]

纹理缩小时使用的纹理采样过滤器

  • nearest - 不与相邻纹素混合
  • linear - (游戏默认) 与相邻纹素混合以实现平滑缩小效果
  • default - (默认) 游戏默认


Mip 过滤

[编辑 | 编辑源代码]

纹理 mip 映射选择时使用的纹理采样过滤器

  • nearest - 不与其他 mip 映射混合
  • linear - (游戏默认) mip 映射之间平滑混合(注意,它独立运行,但应与各向异性采样结合使用)
  • default - (默认) 游戏默认
  • none - 禁用 CMP 中的 mip 映射生成,并在游戏中使用。专门用于用户界面元素。


评论与建议

[编辑 | 编辑源代码]
  • Hint 尽管旨在仅供内部使用,但由于它被善意的人发现后被使用和滥用,因此仍然被提及。Anisotropy 应用于提高纹理质量,而 MipFilter=none 应仅用于禁用界面纹理的 mip 映射。


华夏公益教科书