跳轉到內容

Trainz/containers/mesh-table 容器

來自華夏公益教科書,開放世界開放書籍
logo
Trainz 註釋參考
TOC | 開始趣事 | AM&C | 創作 | 書中參考 ORP 參考:  • 索引 • 容器 • 種類 • 標籤 | 附錄  • 版本

KIND 層次結構

[編輯 | 編輯原始碼]

"mesh-table" 容器是幾乎所有呈現可見數字形狀的 資產型別 使用的頂級 config.txt 檔案 條目,這意味著任何可放置的資產。即使是音效資產也具有最小的 2 個三角形網格或矩形(資產建立者的選項),只有那些始終是依賴項的資產,例如 HTML 檔案或地面紋理不會。

mesh-table 是一個沒有獨立標籤的網格子容器列表。標籤以標準化格式解析,但並非所有 內容型別(即 KIND) 都支援下面列出的全部標籤。每個網格都從子容器的標籤名稱派生其名稱,一個保留的 列舉 資料關鍵字或識別符號。這些識別符號名稱用於從 mesh-table 中以及從互動式或動畫資產中的指令碼中引用特定網格,從而提供定義和引用的通用性,從而將資產定義的靜態程式碼與可由合適的軟體檢測到的動態操作狀態的互動靈活性連線起來。

每個網格子容器都使用以下格式。

已知的依賴父型別

[編輯 | 編輯原始碼]
主文章,請參閱:kind mesh

這裡列出的內容型別使用 mesh-table 容器作為其定義的一部分。


以下配置容器也以某種方式引用回其資產的 mesh-table 容器

另請參閱
 • 建模指南
 • 建模風景  

細節級別 (LOD)

[編輯 | 編輯原始碼]

有關 LOD 的討論,請參閱 Level_of_DetailLOD_ExampleLM.txt_file(或參閱 Level_of_DetailLOD_ExampleLM.txt_file 未經修改的原始檔案)

簡單的 mesh-table 容器

[編輯 | 編輯原始碼]
這個簡單的配置將在許多使用 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 容器 條目直接定義路徑的約定所取代,從而使內容創作者免於使用這些字尾來表示資產元件組。因此,較新的資產通常使用單個根資料夾,並且可能沒有子資料夾。  

實際上,許多內容創作者仍在使用此約定,因此新的 Trainzer 應該知道它是一個約定,但不是必需的標準。



無論如何,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)。這可能包含子路徑。

animation-loop-speed

[編輯 | 編輯原始碼]
型別:浮點數
預設:0
必填:否
描述:如果資產在放置時要進行動畫處理,則必須存在此標籤。如果放置時不存在此標籤,則預設情況下動畫不會播放,但可能會透過指令碼控制進行播放。標籤中可以使用不同的值(例如 0.5、2.0)以不同的速度播放 3D 建模工具中建立的動畫。
型別:附件點
預設:""
必填:否
描述:網格(如果有動畫)將插入網格附件點,而不是原點(如果沒有此行,網格將相對於父模型的原點放置)。

att-parent

[編輯 | 編輯原始碼]
型別:網格名稱
預設:預設為“default”,即父網格
必填:否
描述:此標籤告訴 Trainz 附件點位於哪個網格中。插入附件點位於網格“name”中,如 config.txt 中所列。

auto-create

[編輯 | 編輯原始碼]
型別:布林值
預設:0
必填:否
描述:模型在放置時或載入包含模型的地圖時自動生成。在某些情況下,您不希望網格可見(因為這可能透過指令碼控制)。如果 auto-create 為 0,則放置時網格不可見。

critical-animation

[編輯 | 編輯原始碼]
型別:布林值
預設:1(待定:這應該是 false(0))
必填:否
描述:“critical-animation” 指示此網格的動畫會生成對腳本系統行為至關重要的事件。如果您的資產沒有指令碼,不使用指令碼動畫事件,或者僅將事件用於顯示目的並且如果偶爾錯過事件也不會出現問題,則應將此標籤設定為 *false(0)*。將此標誌設定為 *true(1)* 會造成 *顯著* 的效能損失。

custom-render-plugin

[編輯 | 編輯原始碼]
型別:KUID
預設:""
必填:否
描述:待定

effects 子容器

[編輯 | 編輯原始碼]
型別:Corona Effect | Name Effect | Attachment Effect | Animation Effect | Texture-Replacement Effect
預設 {}
必填:否
描述:effects 容器 可以包含一個效果子容器列表。效果子容器支援以下通用標籤。
kind ""
name ""
每個效果子容器都支援額外的標籤,具體取決於效果型別。支援以下效果型別
型別:布林值
預設:True(1)
必填:否
描述:如果為 true,則此標籤會導致未縫合的網格連結到 Trainz 照明模型。這會導致網格對方向照明變化做出反應,例如太陽的角度或火車前燈。這對於法線貼圖正常工作也是必需的。將此標籤設定為零將從 Trainz 照明模型中移除網格。一般來說,您永遠不要將此標籤設定為零 - 幾乎所有可以透過這種方法實現的效果都可以透過使用適當的法線貼圖或適當的幾何細節來更好地實現。
此標籤對縫合的網格沒有影響,縫合的網格始終受 Trainz 照明影響。由於內容建立者無法直接影響哪些網格會受到 Mesh Stitching 的影響,並且所有間接影響都可能會在 Trainz 版本之間發生變化,因此強烈建議避免使用此標籤,以確保結果一致。

lod-level

[編輯 | 編輯原始碼]
型別: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 標籤。

mesh-asset

[編輯 | 編輯原始碼]
型別:KUID
預設:<NULLKUID>
必填:否
描述:指定與“mesh”標籤一起使用的網格資產庫。在“mesh”標籤中指定的網格名稱必須位於此資產中,因為內容管理器不會檢查網格是否存在。如果網格不在網格資產的根資料夾中,則將路徑作為“mesh”標籤中網格名稱的一部分包含在內。

mesh-scale

[編輯 | 編輯原始碼]
型別:Floatlist
預設:0,0,0
必填:否
描述:此標籤定義網格的最小和最大縮放值,其中 1.0 是建模的大小。世界上存在的每個網格例項都將在此範圍內隨機化。隨機化不會在執行之間或 Trainz 版本之間發生變化,但可能會根據世界中網格的位置等因素髮生變化。此標籤目前僅在 SpeedTree 資產上受支援;嘗試在其他資產上使用此標籤會導致未定義的行為。

mesh-season

[編輯 | 編輯原始碼]
型別: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: 啟用後,此標籤表示渲染剔除應使用整個物件的邊界框而不是此網格的邊界框進行。當動畫將物件的幾何體從繫結位置移動到相當遠的距離時,單個網格上的邊界框可能無法正確更新。此標誌可以幫助緩解此類影響,但會造成微小的效能損失。


網格表示例

[編輯 | 編輯原始碼]

以下是一個實現兩個細節級別的簡單網格表的示例。通常,資產設計師應該嘗試將網格減少到最多四個 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
   }
 }

 

註釋和參考

[編輯 | 編輯原始碼]
華夏公益教科書