跳转到内容

Trainz/containers/track-lod-tree 容器

来自维基教科书,开放世界中的开放书籍
logo
Trainz 注释参考
TOC | 开始乐趣 | AM&C | 创建 | 书内参考 ORP 参考:  • 索引 • 容器 • 种类 • 标签 | 附录  • 版本

"track-lod-tree" 容器是 config.txt 文件 中的顶级条目,由 kind track 使用。

track-lod-tree 是一种递归格式,描述了二叉树结构。当拼接轨道几何体时,Trainz 会将样条曲线分解成更小的部分(由轨道的 mesh-length 标签决定),然后解析 track-lod-tree 以确定使用哪个网格。

编辑说明:  此页面描述了 spline 资产 trainz-build 2.9–3.7 版本中有效的 Kind track 子资产配置容器。




 

支持的标签

[编辑 | 编辑源代码]

track-lod-tree 中的每个节点都支持以下标签。每个标签在这里都显示了它的默认值。

mesh ""
subdivisions 1
lod-distance 0.0
lod-length 0.0
lod-tessellation-length 0.0
lod-random-bias 0.0
lod-is-surveyor 0
lod-season-index 255
high-detail
{
}
low-detail
{
}

每个节点可以从 mesh-table 容器 中选择一个网格,也可以分支成两个新的节点。

细分 标签表明指定的数据将被用于多个重复。这究竟如何影响渲染取决于节点类型,并在下面详细说明。Trainz 可以选择在某些情况下只渲染一些重复,例如非常短的轨道长度——内容创建者不应该过度关注此方面的细节。


网格节点

[编辑 | 编辑源代码]

网格节点从 mesh-table 容器 中选择单个网格,该网格始终使用。它不直接指定 .IM 格式文件。

subdivisions 1
mesh "track-lod2"

细分 标签导致网格重复指定的次数。


分支节点

[编辑 | 编辑源代码]

分支节点指定了 高细节低细节 路径,并提供信息让 Trainz 在它们之间进行选择。

subdivisions 4
lod-distance 100.0
lod-length 10.0
lod-tessellation-length 6.0
high-detail
{
  ..
}
low-detail
{
  ..
}

高细节低细节 路径都是另一个 track-lod-tree 容器,导致这种结构是递归的。


细分 标签会导致当前轨道部分被细分成多个部分,这些部分将继续通过 track-lod-tree。每个部分都可能在树中走不同的路径,但是它们都从当前树节点开始向下移动(即,它们不从树的根部重新解析)。

lod-距离

[编辑 | 编辑源代码]
lod-距离 标签决定了 Trainz 将切换到使用低细节路径的距离(米)。此距离是一个指南,可能会受到用户性能设置的影响。

lod-长度

[编辑 | 编辑源代码]
轨道部分在一定程度上根据生成的轨道段的长度和 mesh-length 标签进行缩放。lod-长度 标签提供了一种机制,即使低细节路径在距离上是合适的,也能强制在短的部分上使用高细节路径。具体来说,如果生成的几何体将小于 lod-长度 设置,则会选择高细节路径。使用此标签时应格外小心,因为它有可能破坏 LOD 方案,从而降低性能。此标签应仅用于在长(高效)低细节网格和多个短(效率较低)低细节网格之间进行选择,绝不应强制更改为实际的高细节网格。

lod-细分长度

[编辑 | 编辑源代码]
Trainz 根据一些因素确定所需的细分长度,这些因素包括地面起伏和样条曲线的弯曲角度。

lod-细分长度 标签提供了一种机制,用于强制在具有高细分要求的轨道部分上使用高细节路径。此标签中指定的长度(米)指的是网格中细分点之间的距离,而不是网格的整个长度。例如,lod-细分长度 为 6.0 表示 低细节 路径适用于大约六米的细分,而 高细节 路径则需要小于六米的细分。在这种情况下,高细节路径通常应该与低细节路径看起来相同,但在 Y 轴方向上具有略微增加的细分。这使得 Trainz 可以增加细分,而无需更改为实际的高细节网格的成本。

lod-细分长度 分支最好尽可能深地指定在 track-lod-tree 中,因为 Trainz 可能会在它遍历树的过程中细化此数据——在考虑细分之前设置的參數越多,細分過程越準確。

lod-随机偏差

[编辑 | 编辑源代码]
lod-随机偏差 并不是真正的 LOD 方案,而是允许在高或低“细节”路径之间进行随机选择。在默认设置 0.0 时,它没有影响。随着数字向 1.0 升高,强制使用高“细节”路径的几率增加。在 1.0 或更高时,始终会选择高细节路径。虽然此标签可以与其他 lod-* 标签一起使用,但行为有些任意,因此不推荐这样做。值为 0.5 表示高和低“细节”路径之间有 50% 的变化。

lod-是否为测量师

[编辑 | 编辑源代码]
lod-is-surveyor 实际上并非 LOD 方案,而是允许在 Surveyor(编辑模式)和 Driver(游戏模式)中显示不同的网格。当设置为“1”时,此标签会在编辑模式下选择高“细节”路径。

lod-season-index

[编辑 | 编辑源代码]
lod-season-index 实际上并非 LOD 方案,而是允许显示季节性网格。当指定特定季节索引(根据 季节选择器容器)时,此标签会在该季节当前时选择高“细节”路径。

以下是一个简单的 2 LOD 的轨道-lod-tree 容器,用于轨道资产。

 track
 {
  mesh-length                           20
  
  track-lod-tree
  {
    lod-distance                        250
    
    high-detail
    {
      mesh                              "default-lod0"
    }
    
    low-detail
    {
      mesh                              "default-lod1"
    }
  }
 }

以下示例说明了如何使用 季节选择器容器 为轨道/样条/道路选择季节性网格(提供 lod-season-index 1 代表冬季)。

 track
 {
  mesh-length                           4
  
  track-lod-tree
  {
    lod-distance                        250
    
    high-detail
    {
        lod-season-index              1
 			
 	high-detail
 	{
 		mesh                        "track-lod0w"
 	}
 			
 	low-detail 
 	{
 		mesh                        "track-lod0"
 	}
    }
    
    low-detail
    {
        lod-season-index              1
 			
 	high-detail
 	{
 		mesh                        "track-lod1w"
 	}
 		
  	low-detail
 	{
 		mesh                        "track-lod1"
 	}
    }
  }
 }
华夏公益教科书