跳轉到內容

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"
 	}
    }
  }
 }
華夏公益教科書