Trainz/containers/mesh-table 容器
"mesh-table" 容器是几乎所有呈现可见数字形状的 资产类型 使用的顶级 config.txt 文件 条目,这意味着任何可放置的资产。即使是音效资产也具有最小的 2 个三角形网格或矩形(资产创建者的选项),只有那些始终是依赖项的资产,例如 HTML 文件或地面纹理不会。
mesh-table 是一个没有独立标签的网格子容器列表。标签以标准化格式解析,但并非所有 内容类型(即 KIND) 都支持下面列出的全部标签。每个网格都从子容器的标签名称派生其名称,一个保留的 枚举 数据关键字或标识符。这些标识符名称用于从 mesh-table 中以及从交互式或动画资产中的脚本中引用特定网格,从而提供定义和引用的通用性,从而将资产定义的静态代码与可由合适的软件检测到的动态操作状态的交互灵活性连接起来。
- 每个网格子容器都使用以下格式。
- 主文章,请参阅:kind mesh
这里列出的内容类型使用 mesh-table 容器作为其定义的一部分。
此页面 正在构建中 此处的內容可能會在短时间内發生重大更改。所有了解此主题的 Trainzer 和 Wikibookians 欢迎提供帮助。 您可以在 页面 更加成熟时删除此标签,并将其替换为 {{Trainz-stub}} 或使用未完成部分的节标签模板 ({{Trainz-sect-stub}})。 |
以下配置容器也以某种方式引用回其资产的 mesh-table 容器
有关 LOD 的讨论,请参阅 Level_of_Detail、LOD_Example 和 LM.txt_file(或参阅 Level_of_Detail、LOD_Example 和 LM.txt_file 未经修改的原始文件)
- 这个简单的配置将在许多使用 IM 网格的 TS09 之前的资产中看到
mesh-table { default { mesh "traincar-body.im" auto-create 1 } shadow { mesh "shadow.im" } }
TS2006(v2.5)之前的资产最初使用较旧的渐进网格 (PM 网格) 技术(v1.0--v2.6 时代,v2.5 弃用)最常使用 Trainz 的“后缀”子文件夹名称与配置文件的 asset-name definition
以及使用该字符串命名子文件夹的约定,并附加后缀 '_body'、'_art' 和 '_shadow' 以定义资产根目录中的子文件夹以及这些子文件夹中的主网格、纹理或 texture.txt 文件。除了这些标准化的“通过后缀命名”子文件夹之外,nightmode 标签 标签是早期的升级,它与今天的 mesh-table 容器组件标签一样,提供了指向夜间文件夹的路径规范,该文件夹具有广泛不同的名称(尽管许多内容创作者使用简单的“night”和“nightmode”子文件夹名称,而另一些则遵循后缀约定,并将asset-filename+_night
连接起来。
此约定已被使用 mesh-table 容器 条目和 thumbnails 容器 条目直接定义路径的约定所取代,从而使内容创作者免于使用这些后缀来表示资产组件组。因此,较新的资产通常使用单个根文件夹,并且可能没有子文件夹。
|
无论如何,nightmode 标签表示并分配了夜间显示的文件夹名称和其中的网格名称。UTC 之后的等效项是 mesh 表中的“night”网格容器
mesh-table { default { mesh "Shop_Ralph's_Discount_DES.IM" auto-create 1 } night { mesh "night/night.IM" night-mesh-base "default" } }
例如,一个 v1.3 机车资产 <kuid:86105:6225>,在 config.txt 文件的 asset-filename "KansasCitySouthernSD40-2" 中具有子文件夹 kansascitysouthernsd40-2_art 和 kansascitysouthernsd40-2_body,如果安装了阴影,应该还具有 kansascitysouthernsd40-2_shadow 子文件夹。
- TC3 之后的版本的 Content Manager 并不总是能够在旧内容的子文件夹模式/标准中找到并解释 PM 或 IM 网格,并会生成错误消息“错误:无法加载网格文件:'filename_shadow.pm'”,即使存在,或者更糟的是,被转换为 IM。
- 在这两种情况下,所需的修复是添加正确配置的mesh-table 容器.
每个网格子容器都支持以下标签。每个标签在此处都显示了其默认值。 ∅
mesh-asset <NULLKUID> mesh "" anim "" lod-level 255 mesh-season 255 att "" att-parent "" opacity 1.0 position 0,0,0 orientation 0,0,0 auto-create 0 use-parent-bounds 0 should-respond-to-clicks 1 animation-loop-speed 0 critical-animation 1 effects { } night-mesh-base ""
*att-parent 默认值为“default”,即父网格。att-parent 标签可以包含路径。
每个网格子容器都支持以下标签。
- 类型:文件
- 默认:""
- 必填:否
- 描述:从 3D 建模工具导出或 TrainzMeshImporter 导出的动画文件(.kin)。这可能包含子路径。
- 类型:浮点数
- 默认:0
- 必填:否
- 描述:如果资产在放置时要进行动画处理,则必须存在此标签。如果放置时不存在此标签,则默认情况下动画不会播放,但可能会通过脚本控制进行播放。标签中可以使用不同的值(例如 0.5、2.0)以不同的速度播放 3D 建模工具中创建的动画。
- 类型:附件点
- 默认:""
- 必填:否
- 描述:网格(如果有动画)将插入网格附件点,而不是原点(如果没有此行,网格将相对于父模型的原点放置)。
- 类型:网格名称
- 默认:默认为“default”,即父网格
- 必填:否
- 描述:此标签告诉 Trainz 附件点位于哪个网格中。插入附件点位于网格“name”中,如 config.txt 中所列。
- 类型:布尔值
- 默认:0
- 必填:否
- 描述:模型在放置时或加载包含模型的地图时自动生成。在某些情况下,您不希望网格可见(因为这可能通过脚本控制)。如果 auto-create 为 0,则放置时网格不可见。
- 类型:布尔值
- 默认:1(待定:这应该是 false(0))
- 必填:否
- 描述:“critical-animation” 指示此网格的动画会生成对脚本系统行为至关重要的事件。如果您的资产没有脚本,不使用脚本动画事件,或者仅将事件用于显示目的并且如果偶尔错过事件也不会出现问题,则应将此标签设置为 *false(0)*。将此标志设置为 *true(1)* 会造成 *显着* 的性能损失。
- 类型:KUID
- 默认:""
- 必填:否
- 描述:待定
- 类型:Corona Effect | Name Effect | Attachment Effect | Animation Effect | Texture-Replacement Effect
- 默认 {}
- 必填:否
- 描述:effects 容器 可以包含一个效果子容器列表。效果子容器支持以下通用标签。
- kind ""
- name ""
- 每个效果子容器都支持额外的标签,具体取决于效果类型。支持以下效果类型
- 类型:布尔值
- 默认:True(1)
- 必填:否
- 描述:如果为 true,则此标签会导致未缝合的网格链接到 Trainz 照明模型。这会导致网格对方向照明变化做出反应,例如太阳的角度或火车前灯。这对于法线贴图正常工作也是必需的。将此标签设置为零将从 Trainz 照明模型中移除网格。一般来说,您永远不要将此标签设置为零 - 几乎所有可以通过这种方法实现的效果都可以通过使用适当的法线贴图或适当的几何细节来更好地实现。
- 此标签对缝合的网格没有影响,缝合的网格始终受 Trainz 照明影响。由于内容创建者无法直接影响哪些网格会受到 Mesh Stitching 的影响,并且所有间接影响都可能会在 Trainz 版本之间发生变化,因此强烈建议避免使用此标签,以确保结果一致。
- 类型:Int (0-8)
- 默认:255
- 必填:否
- 描述:显示此网格的对象 LOD 级别。默认值 (255) 表示此网格在所有细节级别都可见。另请参阅 kind mesh 中的“mesh-detail-level” 标签。
- 类型:网格名称
- 默认:""(如果为 null,将引发错误)
- 必填:是 (3.4)
- 描述:“主” 网格名称。这可能包含子路径。例如:mesh nightwindows/nightwindows.im,其中文件 nightwindows.im 已放置在子目录 nightwindows 中。如果您希望资产具有“细节级别”网格减少,请使用 .im 文件或引用 LM.txt_file 文件。
- 网格名称也可以引用网格资产库中的 IM 文件,如果指定了 mesh-asset 标签。
- 类型:KUID
- 默认:<NULLKUID>
- 必填:否
- 描述:指定与“mesh”标签一起使用的网格资产库。在“mesh”标签中指定的网格名称必须位于此资产中,因为内容管理器不会检查网格是否存在。如果网格不在网格资产的根文件夹中,则将路径作为“mesh”标签中网格名称的一部分包含在内。
- 类型:Floatlist
- 默认:0,0,0
- 必填:否
- 描述:此标签定义网格的最小和最大缩放值,其中 1.0 是建模的大小。世界上存在的每个网格实例都将在此范围内随机化。随机化不会在运行之间或 Trainz 版本之间发生变化,但可能会根据世界中网格的位置等因素发生变化。此标签目前仅在 SpeedTree 资产上受支持;尝试在其他资产上使用此标签会导致未定义的行为。
- 类型:Int (0-250)
- 默认:255
- 必填:否
- Desc: 此网格显示的季节索引。默认值(255)表示此网格在所有季节可见。另请参阅 季节选择器容器。
- 类型:网格名称
- 默认:""
- 必填:否
- Desc: 此夜间网格与指定网格关联,仅在夜间可见。如果指定网格不可见,则它也不可见(如果使用自动创建 0 行,则指定网格可由脚本控制)。
- 类型: 浮点数 (0.0 - 1.0)(见下文)
- 默认值: 1.0
- 必填:否
- Desc: 指定网格的整体透明度。除 0.0 或 1.0 以外的值使用 alpha 混合,0.0 的值与隐藏网格的效果相同。请注意,此标签在 TS2009 的 SP4 之前的版本中存在错误。
- 类型: 浮点列表 (弧度)
- 默认:0,0,0
- 必填:否
- Desc: X、Y、Z 轴的方向。允许子网格相对于其插入点旋转。要将网格绕 Z 轴旋转 180 度,请添加标签:方向 0,0,3.14159
- 类型: 浮点列表 (米)
- 默认:0,0,0
- 必填:否
- Desc: 使用 X、Y、Z 轴相对于其插入点的网格位置。
- 类型:浮点数
- 默认值: 待定
- 必填:否
- Desc: 待定(这应该在 mesh-table_container_(interior_version) 中吗?)
- 类型:布尔值
- 默认:True(1)
- 必填:否
- Desc: 如果在作为资产一部分的网格上设置为 false (0),它将从用于检查用户是否点击了该特定资产的“边界框”的计算中删除该网格。这对于光线效果或动画非常有用,这些效果或动画显着超出了正常的边界体积,并且可能会导致运动聚焦在错误的资产上。例如,火车车厢可能需要一个标记为 should-respond-to-clicks 设置为 false 的网格,以确保当它构成一部分时,可以为正确的火车车厢检测点击。首次引入于 TS12 SP1 HF4(构建 61388)。默认值(True)是之前行为(网格将被视为边界框的一部分,用于注册点击)。
- 类型:布尔值
- 默认值: 待定
- 必填:否
- Desc: 待定(这应该在 mesh-table_container_(interior_version)Ø 中吗?)
- 类型:布尔值
- 默认值: False(0)
- 必填:否
- Desc: 启用后,此标签表示渲染剔除应使用整个对象的边界框而不是此网格的边界框进行。当动画将对象的几何体从绑定位置移动到相当远的距离时,单个网格上的边界框可能无法正确更新。此标志可以帮助缓解此类影响,但会造成微小的性能损失。
此 Trainz/Containers/mesh-table 容器 部分是一个存根占位符,是这本书该部分不完整的提纲或标记。 您可以通过 扩展它 来帮助 Wikibooks Trainz 项目,其中包含更完整的主题讨论。 所需工作: 需要更清晰地解释何时切换、引用以及各种类型的示例。 |
以下是一个实现两个细节级别的简单网格表的示例。通常,资产设计师应该尝试将网格减少到最多四个 LOD 级别 LOD0、LOD1、LOD2 和 LOD4∅。
mesh-table { default-lod0 { mesh "example-lod0.im" auto-create 1 lod-level 0 } default-lod1 { mesh "example-lod1.im" auto-create 1 lod-level 1 } }
此参考页面改编自 TrainzOnline Wiki,根据 CC-BY-SA 3.0 许可证。此页面可能包含比 同一主题的源页面 更详细的文本解释、阐述、历史和/或示例。 TrainzOnline Wiki 主要由程序员或知识渊博的 内容创建者 维护,并且可能包含有关当前 trainz-build 代码 标准的更新信息,这些标准在软件添加功能时会发生一些变化。 |