跳转到内容

Trainz/Kinds/kind 轨道

来自 Wikibooks,开放世界中的开放书籍
(重定向自 Trainz/KIND 轨道)
logo
Trainz 注释引用
TOC | 开始有趣 | AM&C | 创作 | 书内引用 ORP 引用:  • 索引 • 容器 • Kinds • 标签 | 附录  • 版本

传统轨道

[编辑 | 编辑源代码]

Trainz 数据模型 可以说在从 Trainz 1.3TANE轨道和样条线对象软件处理中发生了最显著的变化(这在连接点和脚本问题方面增加了很大的复杂性,比如 联锁塔)。这种演变从所谓的 块状轨道 到最初的 TANE kind 程序化轨道,共有三到四个不同的层级。在 Trainz UTC 和 TRS2004 的块状轨道之间,桥梁和隧道被一组kind 轨道所取代—— 这些类型的新正式定义,其中包括这些类型(这里显示的链接指向它们的 CCG 引用页面):一个关于 TRS/TC 时代 CCG 的公正表格将 [在此 URL 找到]:[1]

样条线对象
  • Kind:_轨道 - 从农作物到道路的样条线场景资产使用各种标签来定义,这些标签控制对象如何与世界交互。

这些方面有一些逐步改进,但 TS2009 向拼接轨道技术转变

KIND 轨道

[编辑 | 编辑源代码]

KIND 轨道Trainz-build 版本 2.9 及更高版本(轨道拼接处理成为默认渲染软件之后)开始,为所有基于样条线的资产提供唯一的资产 kind。与名称相反,正如道路类型被定义为轨道资产一样,这种 kind 的资产现在包括简单轨道、多轨道、桥梁、隧道、树篱、道路、墙壁、路堤、本地电力线、高压电力线、架空线(和其他轨道旁的 '附着轨道容器容器' 样条线)等等。

这种 kind 的资产使用一种以前被称为“拼接轨道”的渲染技术。现在,所有其他的样条线渲染都已过时,所有过去年的样条线类别现在简称为“轨道”,并使用具有适当标签设置的 kind 轨道 变体来实现数字模型。在 TANE 版本(v4.0 及更高版本)中,现在添加了一种替代轨道类型,kind_procedural-track,它包含了看到动画连接点部分的新功能。本页面不直接涉及 TANE 中的这种更新的技术。 

本页面描述了 trainz-builds v2.9–v3.7;TANE 轨道是完全不同的情况,是一个主要的数据库模型变更,目前,最好的数据来源是 Auran 论坛和 N3V Games Wiki 上的链接



KIND 层级结构

[编辑 | 编辑源代码]

{S ... SPLINEST ... TRACK },也就是说 Category-class 样条线类型的列表

SF     Fences
SR     Roads
SP     Platforms
SS     Structure
SV     Vegetation
TB     Bridge
TF     Fixed Track
TR     Rails
TT     Tunnel
  • Attached-track 是嵌入在行业资产中的资产,它从其末端顶点附着的轨道继承轨道特性。

支持的标签

[编辑 | 编辑源代码]

样条线对象 中定义 config.txt 文件KIND 轨道 在由 KIND TrainzBaseSpec 定义时支持以下标签。每个标签在此处显示其默认值。

      mesh-table    
      {    
      }    
      轨道容器    (子容器)
      {    
      }    
      endcap-prev    
      {    
      }    
      endcap-next    
      {    
      }    
      attached-splines    
      {    
      }    
      season-selector    
      {    
      }    
      carrate     0
      isroad     0
      isfreeway     0
      is_silent     0
      numlanes     0
      istrack     0
      istunnel     0
      surveyor-only     0
      visible-on-minimap (surveyor-only 的反义词)    
      track-sound    
      {    
      }    
      traffic-speed     10.0
      tunnel-roof-height     0.0

mesh-table

[edit | edit source]

"mesh-table"_Container "mesh-table"_Container 提供有关构成此资产的轨道和端盖网格的详细信息。目前大多数高级网格表选项不可用。重要的是要指定网格。具体而言,应使用 'mesh' 标签指定 IM 文件,并且 'mesh-asset' 标签可用于指定网格的备用源资产。


track

[edit | edit source]

"track" 标签是强制性的,它决定了如何从网格中形成样条几何体。它被指定为 轨道零件容器


attached-splines

[edit | edit source]

attached-splines 容器[2] 提供了一种机制,用于使子样条线附加,这些子样条线在略微偏移的位置遵循该父样条线的形状。附加样条线用于样条线需要与具有不同渲染或功能行为的样条线耦合的地方。例如,带有附加轨道的桥梁(风景),或者带有连接在它们之间的电线(剪切和拉伸以适应)的一组塔架(没有拉伸或剪切)。附加样条线可以是仅渲染样条线,除了渲染行为之外,它们实际上不存在,也可以是完全功能的样条线,它们唯一的特点是它们随其父级移动和删除。


endcap-prev & endcap-next

[edit | edit source]

"endcap-prev" 和 "endcap-next" 标签以相同的方式指定,但不是强制性的。如果存在,这些端盖将插入样条线两端的末端,除非样条线流到另一个相同类型的样条线上。这允许内容创建者“密封”样条线几何体,而不必在每个细分处引入低效的密封多边形。端盖服从正常的适应样条线行为,只是它们在样条线末端的瞬时方向上继续笔直。端盖从资产的 "track" 标签继承其默认设置,但任何单个值都可以根据需要覆盖。


Season-selector

[edit | edit source]

"Season-selector"_container "Season-selector" 容器 允许选择季节索引,该索引可由 "track-lod-tree"_container "track-lod-tree" 容器 使用。 

isroad

[edit | edit source]
类型:布尔值(1 或 0)

如果设置(1),则此类型的样条线被视为道路。道路支持 Carz 的生成。道路被 KIND MOCrossing 标记为阻塞,而过路口栅栏关闭。道路样条线通常可以连接,即使它们是不同的资产。

如果没有另外指定,设置了 'isroad' 标签的资产是 "道路样条线组" (<kuid:30501:100045>) 的成员(参见:KIND_Asset-group 中的已知资产组)。


carrate

[edit | edit source]

(仅适用于设置了 'isroad' 的样条线。)

游戏在这个路上生成 carz 之间等待 1x 到 3x 此十进制值,所以数字越小,道路产生的交通量就越多。


isfreeway

[edit | edit source]

(仅适用于设置了 'isroad' 的样条线。)

如果设置(1),此布尔标签将导致多车道道路充当高速公路。这允许 carz 随意变道,并导致所有交通仅在样条线的正向方向流动。在非高速公路上仍然允许超车。


is_silent

[edit | edit source]

(仅适用于设置了 'istrack' 的样条线。)

如果设置(1),此布尔标签将禁用在样条线上行驶的车辆的每轴声音的播放。


numlanes

[edit | edit source]

(仅适用于设置了 'isroad' 的样条线。)

定义道路上的 carz 车道数量。每条车道被认为宽 1.7 米。如果道路是高速公路,所有交通都朝着同一个方向行驶。待定:对于非高速公路,这意味着什么?


istrack

[edit | edit source]

如果设置(1),此布尔标签将导致样条线被视为 "轨道",这意味着火车可以预期在样条线上行驶。

这会影响样条线在小地图上的可见性,样条线资产会在测量师选取器中显示,测量师工具可以对资产进行操作,以及是否启用自动连接放置。

轨道样条线通常可以连接,即使它们是不同的资产。

如果没有另外指定,设置了 'istrack' 标签的资产是 "轨道样条线组" <kuid:30501:100043> 的成员。


istunnel

[edit | edit source]

如果设置(1),此布尔标签将导致样条线被视为 "像隧道一样"。尽管有这个名字,但这并不直接与真正的隧道样条线功能相关(有关详细信息,请参见 'tunnel-roof-height' 标签)。

在隧道内,某些类型的脱轨会被禁用,因为由此产生的用户体验会很差,因为火车车辆和玩家的摄像机会穿透隧道和地形。

当车辆的原点位于隧道样条线上时,脚本函数 Vehicle.IsInTunnel() 返回 'true'。

如果用户处于 '外部' 或 '自动跟踪' 摄像机模式,而摄像机目标位于隧道内,则摄像机将改为 "隧道外部" 模式。

当摄像机目标位于隧道内时,环境声音的音量会降低到 50%。

当车辆位于隧道内时,某些类型的车辆粒子发射器将被禁用。


surveyor-only

[edit | edit source]

如果设置(1),此布尔值将导致资产在 Driver 中不可见且不可用。这通常用于提供编辑帮助的样条线,例如模板、标记或尺子。


visible-on-minimap

[edit | edit source]

如果清除(0),则从 minimap 中隐藏此样条线。具有非仅渲染子级的样条线永远不会显示在 minimap 上。请注意,此标签没有固定的默认值,而是默认为 'surveyor-only' 标签的反义词。


track-sound

[edit | edit source]

(仅适用于设置了 'istrack' 的样条线。)

一个可选的 "track-sound" container "track-sound" container,它有助于计算火车车辆在该轨道上时播放哪个声音。


traffic-speed

[edit | edit source]

(仅适用于设置了 'isroad' 的样条线。)

定义道路的汽车速度限制,单位为米/秒。目前,汽车行驶速度最高可达限速的 80%-110%(取决于汽车),但超车时除外。此标签与火车无关。


隧道顶高

[编辑 | 编辑源代码]

隧道使用此标签来确定地形洞允许的顶高(以米为单位)。如果小于或等于零,则不会生成地形洞。如果大于零,则此样条线被视为真正的隧道,它将在地形网格中生成洞,其对地形网格的接近角度将被锁定为 45° 增量,并且端点将捕捉到 10 米的网格大小。

隧道旨在将样条线运行在地形网格下方。

隧道样条线试图弯曲,使得样条线以 45° 角增量结束。这有助于确保可以通过地形网格成功创建入口洞。

隧道样条线在 Surveyor 中的编辑语义略有修改。顶点标记在不同的条件下可见。不允许在隧道周围平滑地面。隧道样条线始终遵循样条线梯度,而不是对地面高度做出反应。

如果未另行指定,设置了 'istunnel' 标签的资产是 "隧道样条线组" 的成员 <kuid:30501:100044>


轨道资产通常包含多个网格。每个网格代表样条线的一部分,该部分通过各种变换端对端重复以创建整个样条线。多个网格允许 LOD、细节随机化等等,"track-lod-tree" 容器 "track-lod-tree" 容器 定义了在样条线上各个位置使用哪个网格。

网格应该使用法线贴图和单个高分辨率漫反射纹理。出于性能原因,应为所有网格使用单个材质(即单个纹理;请参见有关网格之间材质共享的说明),而不是为每个网格使用单独的材质。材质可以使用 alpha 遮罩(1 位 alpha)或 alpha 混合,但是任何 alpha 混合都不会进行排序(既不会针对轨道本身中的其他多边形,也不会针对场景中的其他 alpha 混合多边形)。因此,alpha 混合应该只用于低至地面的位置,这样从摄像机到网格的直线在到达地面之前不会穿过任何其他 alpha 混合对象。对于 alpha 混合和 alpha 遮罩网格,将应用正常的 z 缓冲行为。

组成轨道的各种网格部分是如此建模的,以至于任何类型都可以与其他任何类型完美衔接,没有明显的接缝。片段不需要严格对称,因为它们永远不会相对于前一个片段旋转,但是需要注意的是,支持多向连接的样条线会导致一个构造,其中一个样条线循环回到自身,并以相反的方向连接到自身。

以下是一些近似的多边形指南。创建者应避免使用超过他们需要用于准确描绘所讨论对象的更多多边形。

  • 极端细节网格 - 用于特写镜头。每 2 米段 1000 个多边形。
  • 高细节网格 - 用于近距离。每 2 米段 200 个多边形。
  • 中等细节网格 - 用于中等距离。每 10 米段 100 个多边形。
  • 低细节网格 - 用于远距离。每 10 米段 6 个多边形。轨道纹理化在压载物上,而不是多边形建模。
  • 初始端盖 - 用于样条线的起点。100 个多边形。
  • 最终端盖 - 用于样条线的终点。100 个多边形。

端盖提供任何必要的多边形来 "闭合" 样条线,以便从正面看时它不会出现空洞。其他网格不包含任何此类多边形。端盖由游戏自动应用在从一种轨道类型过渡到另一种轨道类型的地方,或者轨道突然开始或结束的地方。

每个网格的长度是独立指定的。建议每个网格在分配的多边形预算内尽可能长。

在对轨道样条线建模时,应注意确保钢轨顶端正好位于原点上方 0.3 米。这样可以确保它与火车车辆的车轮无重叠且无间隙。

样条线放置

[编辑 | 编辑源代码]

可以指定网格尽可能紧密地跟随其放置样条线(以前:弯曲),或者保持直线但剪切以防止接缝。这在 "track-lod-tree" 容器 "track-lod-tree" 容器 中进行了详细讨论。

网格上的顶点可能属于以下两种高度类别之一

  • 地面 - 顶点位置基于地面高度。
  • 样条线 - 顶点位置基于放置样条线。

顶点的高度类别由其在网格中的相对高度决定 - 如果它小于或等于每个网格指定的接地高度,则它被认为是接地的。

实际性能将根据以下因素而异

  • 高细节 LOD 消失的距离。一般来说,这应该非常近。
  • 较低 LOD 中的多边形数量。一般来说,这应该非常低。
  • 使用的材质数量。理想情况下,所有网格都使用单个材质,而不是每个网格使用一个或多个材质。
  • 每个网格的长度(越长越好)。
  • 的效率 "track-lod-tree" 容器 "track-lod-tree" 容器.
  • 用户可自定义的细节设置。
  • 等等。


  • Media:TS2009-track.zip - Auran TS2009 示例轨道的 MAX 源代码。仅出于教育目的从 TrainzDev 网站分发。未授予任何复制或重新分发包含的模型或纹理的许可。
  • Media:TS2012-tunnel.rar - 资产的 MAX 源代码:双轨隧道 <KUID:523:19721248>。仅出于教育目的从 TrainzDev 网站分发。未授予任何复制或重新分发包含的模型或纹理的许可。
  • Media:TS2012-bridge.rar - 资产的 MAX 源代码:板式桁架桥 <KUID:523:19721136>。仅出于教育目的从 TrainzDev 网站分发。未授予任何复制或重新分发包含的模型或纹理的许可。


[编辑 | 编辑源代码]

 

注释、脚注和参考资料

[编辑 | 编辑源代码]

Config.txt 文件是 Trainz 资产中普遍存在且无处不在的,因为没有一个资产可以没有这种类型的 计算机科学容器。在编辑或创建 Trainz 内容时,必须始终牢记关键词-键的值对。该 TrainzBaseSpec 包含在资产定义 config.txt 文件中最常见的键值和容器。 

注释

  1. 此链接(带有连字符的名称)更正确,但截至此注释日期,页面 KIND_Procedural-track 不存在。

 

脚注

 

参考资料

华夏公益教科书