Контейнер track-lod-tree

Материал из RusTram
Перейти к: навигация, поиск
Эта статья является переводом. С оригиналом вы можете ознакомиться здесь: http://online.ts2009.com/mediaWiki/index.php5/%22track-lod-tree%22_container

track-lod-tree контейнер верхнего уровне в конфиге, используемый в типе track (какой же он "верхнего уровня", если лежит в контейнере track?! - прим.переводчика).

track-lod-tree - рекурсивный формат с бинарной древовидной структурой. При построении геометрии трека, Траинз делит сплайн на более мелкие части (ориентируясь на тег mesh-length контейнера track) и затем анализирует track-lod-tree, чтобы определить какую сетку использовать.

Эта страница описывает trainz-build 3.7.

Содержание

Поддерживаемые теги

Каждый узел поддерживает следующие теги. Все теги показаны с их значениями по умолчанию.

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, или разветвляться на два новых узла.

Тег subdivisions указывает, что указанные данные будут использоваться для нескольких повторов. Как это влияет на отображение зависит от типа узла и подробно описано ниже. Траинз может выбрать для отображения только некоторые из повторов в конкретных сценариях, таких как очень короткий участок пути - детали этого должны сильно волновать автора контента. (???)

Узел меша

Узел меша выбирает одну меш из контейнера mesh-table, которая используется всегда. Он не указывает на .im файл напрямую.

subdivisions 1
mesh "track-lod2"

Тег subdivisions приводит к тому, что меш повторяется указанное число раз.

Узел ветвления

Узел ветвления описывает ветки high-detail и low-detail и предоставляет информацию Траинз о выборе между ними.

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

Каждый из контейнеров high-detail и low-detail также является контейнером track-lod-tree, в результате чего эта структура становится рекурсивной.

subdivisions

The subdivisions tag causes the current track part to be subdivided into multiple parts, which continue to be passed through the track-lod-tree. Each part may take a separate path through the tree, however they all start at the current tree node and move downward (ie. they do not re-parse from the root of the tree.)

lod-distance

The lod-distance tag determines the distance (meters) at which Trainz will swap to using the lower detail path. This distance is a guideline and may be affected by user performance settings.

lod-length

Track parts are scaled to some extent based on the length of the Track Stretch being generated and the mesh-length tag. The lod-length tag provides a mechanism for forcing the high-detail path for short parts, even when the low-detail path would be appropriate given the distance. Specifically, if the generated geometry will be shorter than the lod-length setting, the high-detail path is chosen. This tag should be used with extreme caution, since it has the potential to ruin the LOD scheme and thus kill performance. This tag should only be used to select between a long (efficient) low detail mesh and multiple short (less efficient) low detail meshes, and never to force a change to an actual high detail mesh.

lod-tessellation-length

Trainz determines a desired tessellation length based on factors which include the ground bumpiness and the bend angle of the spline.

The lod-tessellation-length tag provides a mechanism for forcing the high-detail path for track parts with high tessellation requirements. The length (m) specified in this tag refers to the distance between tessellation points in the mesh, not to the whole length of the mesh. For example, a lod-tessellation-length of 6.0 indicates that the low-detail path is suitable for tessellation at around six meters, whereas the high-detail path is required for tessellation finer than six meters. The high detail path in this case should generally look identical to the low detail path, but with slightly increased tessellation along the Y-axis. This allows Trainz to increase tessellation without the cost of changing to an actual high detail mesh.

The lod-tessellation-length branch should ideally be specified as deep in the track-lod-tree as possible, as Trainz may refine this data as it progresses through the tree - the more parameters that have been set in stone before tessellation is considered, the more accurate the tessellation process will be.

lod-random-bias

The lod-random-bias isn't really a LOD scheme and instead allows for random selection between the high or low "detail" paths. At the default setting of 0.0, this has no effect. As the number is raised toward 1.0, the chance of forcing the high "detail" path is increased. At 1.0 or higher, the high detail path would always be chosen. While this tag can be used in tandem with other lod-* tags, the behavior is somewhat arbitrary so this isn't recommended. A value of 0.5 gives a 50% variation between high and low "detail" paths.

lod-is-surveyor

The lod-is-surveyor isn't really a LOD scheme and instead allows for the display of different meshes in Surveyor (editing mode) versus Driver (gameplay mode.) When set to '1', this tag causes the high "detail" path to be chosen when in editing mode.

lod-season-index

The lod-season-index isn't really a LOD scheme and instead allows for the display of seasonal meshes. When a specific season index (as per the "Season-selector" container) is specified, this tag causes the high "detail" path to be chosen when that season is current.

Примеры

Пример контейнера track-lod-tree для пути с 2 уровнями ЛОДов:

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

Следующий пример показывает как использовать контейнер season-selector для выбора сезонного меша пути/сплайна/дороги (при условии, что 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"
	}
   }
 }
}
Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты