跳转至内容

Trainz/refs/texture.txt 文件

来自维基教科书,开放世界开放书籍
(从 Trainz/Textures 重定向)
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 和图形文件元素)
  • 另一种是奇怪的 filename.texture,这是由 CM 在故障检查后并作为资产被 提交 的一部分生成的,已准备运行 (已压缩、处理并准备加载) 的 两个源文件的组合形式
  • .texture 文件可以使用 PevSoft (Pev's) Images2TGA.exe 工具实用程序解压缩。某些版本的 CM/CMP 在编辑资产时会保留它们,一些 CM 在提交或故障检查资产时会抱怨它们存在,而另一些 CM 则毫不在意。一般来说,如果它们在导入 cdp 文件、解压缩 .chump 文件或打开资产进行编辑后存在,则可以安全地删除它们。



实际上,texture.txt 文件必须与寻找它的网格位于同一个文件夹中。图像文件可以被多个 texture.txt 文件和网格引用共享。这些是由 Trainz 导出器或导入器(即来自 GmaxBlender 和 AutoDesk 的 3dsMax 格式到 Trainz 数据需求的转换器软件——Auran/N3V 不时地对这些软件进行源代码和更新)自动生成的控制文件,但如果需要专业化,可以手动编辑。

每个标记都在新的一行上指定。在 '=' 号两侧没有空格。有时空值有效。语法是

<token>=<value>

Texture.txt 文件可以使用 C++ 'hack-hack' 注释风格进行注释

// 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
(仅示例,不推荐的设置)

 

 

  • 在下面,我们将提供与上面和下面的文本进行比较的“示例行”。并在后面的 () 中放大注释。


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

指定纹理文件名

  • <纹理名称> - 主要纹理。包括扩展名的文件名,三个示例。
Primary=Whitehorse_pub.tga
(这个示例在非火车车厢资产中非常常见,也就是说,大多数物体、建筑物、动物和树木都不连接到轨道或打算在轨道上行驶。简单的轨道类资产——包括道路、电力线和栅栏——也共享这种位置的简单性。对于带有灯光(夜间模式)的杆子和建筑物,通常会有一个夜间或夜间模式子容器,这是一种来自早期数据模型实践的方法。


Primary=PRR40'1910sBoxcar_body\PRR40'1910sBoxcar_body.tga
(此示例在火车车厢资源中非常常见,许多内容创作者仍然遵循相同的做法。早期的 数据模型 标准做法是至少拥有三个与资源文件名匹配的子文件夹,这些子文件夹的后缀分别为:'_art'、'_body' 和 '_shadow'。这并不像看起来那么奇怪,因为资源文件名标签也必须是用户名和资源的主网格名称。火车车厢是多网格资源,因此控制网格或参考网格位于根目录中,而主体网格和阴影网格从资源根目录中拥有可预测的路径,这可以节省打字错误的时间,并使内容更加整洁。_art 文件夹支持各种涉及资源选择或显示的菜单(参见:{{TL|Railyard 模块}})。)
Primary=common_textures\Red-roof-tiles.tga
(此 文件夹\文件名 引用意味着 MESH 位置位于包含名为“common_textures”的子文件夹的文件夹中,因此该网格很可能位于资源的根文件夹中,CM 将在路径“{{TBS|用户名|p=..\editing\用户名或 ..\..\editing\用户名,在 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 通道。请注意,如果只有一个包含 RGB 和 A 通道的 32 位文件,则仍必须使用与“Primary”中使用的相同名称指定它。

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


水平、垂直或同时包裹纹理寻址。否则,纹理将被裁剪。

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


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

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


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

  • none - 不压缩。警告:未压缩的纹理会占用大量内存并降低性能。
  • dxt1 - 适用于不透明或 alpha 遮罩纹理。
  • dxt3 - 或者,如果纹理包含锐利的对比度,则最适合 alpha 混合纹理。首先尝试 DXT5。
  • dxt5 - 通常最适合 alpha 混合纹理。


纹理使用提示,仅供内部使用。请注意,这不应该用于尝试禁用 mip 映射。

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


NormalMapHint

[编辑 | 编辑源代码]

关于纹理是否是法线贴图的提示。使用此参数非常重要,因为它会影响最终的纹理质量。压缩、mip 映射生成和 XYZ(RGB)的重新标准化都会受到影响。

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


ModifyMap

[编辑 | 编辑源代码]

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

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


AlphaHint

[编辑 | 编辑源代码]

指定 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 映射生成。Chris,这已弃用吗?CMP 现在以最高质量生成 mip 映射,而不是在游戏加载/运行时生成。

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


MagFilter

[编辑 | 编辑源代码]

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

  • nearest - 不与相邻纹素混合。
  • linear - (游戏默认) 与相邻纹素混合,以获得平滑的缩放效果。
  • default - (默认) 游戏默认。


MinFilter

[编辑 | 编辑源代码]

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

  • nearest - 不与相邻纹素混合。
  • linear - (游戏默认) 与相邻纹素混合,以获得平滑的缩小效果。
  • default - (默认) 游戏默认。


MipFilter

[编辑 | 编辑源代码]

在 mip 映射选择中使用的纹理采样过滤器。

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


评论和建议

[编辑 | 编辑源代码]
  • Hint 即使它仅用于内部使用,但也提到了它,因为自它被发现以来,它一直被好心人使用和滥用。Anisotropy 应该用于提高纹理质量,而 MipFilter=none 应该仅用于禁用界面纹理的 mip 映射。


华夏公益教科书