<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>http://www.fsdeveloper.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lmoelleb</id>
	<title>FSDeveloper Wiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="http://www.fsdeveloper.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lmoelleb"/>
	<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php/Special:Contributions/Lmoelleb"/>
	<updated>2026-04-29T21:11:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=MDL_file_format_(FSX)&amp;diff=2528</id>
		<title>MDL file format (FSX)</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=MDL_file_format_(FSX)&amp;diff=2528"/>
		<updated>2007-06-01T17:17:48Z</updated>

		<summary type="html">&lt;p&gt;Lmoelleb: /* LODE */ lod level is int, not float&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the structure of FsX MDL files. This document is mainly useful for people who want to read or decode these MDL files in a tool.&lt;br /&gt;
&lt;br /&gt;
Compared to the Fs2004 MDL format there are quite a few changes. One of the biggest is that aircraft and scenery MDL files now have the same format. At the moment the knowledge in this document mainly comes from evaluating simple scenery objects, so it is certainly not yet complete. If you have anything to add, please do so.&lt;br /&gt;
&lt;br /&gt;
== MDL sections ==&lt;br /&gt;
&lt;br /&gt;
The MDL file uses the RIFF format, this means that the file consists of different sections. Each section starts with a four character label, followed by the size of the content in bytes (this size is thus without the length of the header itself). The tabel below shows how the different section can be nested.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Parent section&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| RIFF&lt;br /&gt;
| General RIFF section (covers entire file)&lt;br /&gt;
| None&lt;br /&gt;
|- &lt;br /&gt;
| MDLH&lt;br /&gt;
| MDL header&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| MDLG&lt;br /&gt;
| Object GUID&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| MDLN&lt;br /&gt;
| Object friendly name&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| PARA&lt;br /&gt;
| Parameters Block&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| CRAS&lt;br /&gt;
| Object crashbox&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| BBOX&lt;br /&gt;
| Object boundingbox&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| RADI&lt;br /&gt;
| Object radius&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| MDLD&lt;br /&gt;
| Exterior Node Root&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| TEXT&lt;br /&gt;
| Texture list&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| MATE&lt;br /&gt;
| Material list&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| INDE&lt;br /&gt;
| Triangle index list&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| VERB&lt;br /&gt;
| Vertex buffer list&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| VERT&lt;br /&gt;
| Vertex list&lt;br /&gt;
| VERB&lt;br /&gt;
|- &lt;br /&gt;
| TANS&lt;br /&gt;
| Tangent Space list (?)&lt;br /&gt;
| VERB&lt;br /&gt;
|- &lt;br /&gt;
| TRAN&lt;br /&gt;
| Static transformation matrices&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| AMAP&lt;br /&gt;
| Animation Map&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| SCEN&lt;br /&gt;
| Scenegraph Node Root&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| SGAL&lt;br /&gt;
| Scenegraph Animation Linkage&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| SGVL&lt;br /&gt;
| Scenegraph Visibility Linkage&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| SGJC&lt;br /&gt;
| Scenegraph Joint Constraints&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| SGBR&lt;br /&gt;
| Scenegraph Bone Reference&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| LODT&lt;br /&gt;
| LOD table&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| LODE&lt;br /&gt;
| LOD Entry&lt;br /&gt;
| LODT&lt;br /&gt;
|- &lt;br /&gt;
| PART&lt;br /&gt;
| Part list&lt;br /&gt;
| LODE&lt;br /&gt;
|- &lt;br /&gt;
| ANIB&lt;br /&gt;
| Animation Block&lt;br /&gt;
| MDLD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The main RIFF section itself has one additional parameter, this is a four character string that indicates the type of RIFF MDL file. For an FsX MDL file the value should always be MDLX.&lt;br /&gt;
&lt;br /&gt;
The following subsection show more details about the content of these different sections.&lt;br /&gt;
&lt;br /&gt;
=== MDLH ===&lt;br /&gt;
&lt;br /&gt;
This the FS MDL object header. It seems to contain of an integer that always has the value of 123456 and a float of value 10. The purpose of these parameter is unknown.&lt;br /&gt;
&lt;br /&gt;
=== MDLG ===&lt;br /&gt;
&lt;br /&gt;
This section stores the object GUID. The GUID is stored in the following parts:&lt;br /&gt;
&lt;br /&gt;
 unsigned long data1&lt;br /&gt;
 unsigned short data2&lt;br /&gt;
 unsigned short data3&lt;br /&gt;
 unsigned char data4[8]&lt;br /&gt;
&lt;br /&gt;
In hexadecimal form the GUID is then written as:&lt;br /&gt;
&lt;br /&gt;
 {data1-data2-data3-data4[0:1]-data4[2:7]}&lt;br /&gt;
&lt;br /&gt;
=== MDLN ===&lt;br /&gt;
&lt;br /&gt;
This section contains a string with the friendly name of the object.&lt;br /&gt;
&lt;br /&gt;
=== PARA ===&lt;br /&gt;
&lt;br /&gt;
This is the ParamsBlock section, containing parameter block data.&lt;br /&gt;
&lt;br /&gt;
=== CRAS ===&lt;br /&gt;
&lt;br /&gt;
This section stores the crashtree of the object. It has first two unknown integer values, then there are 3 float values giving the front lower left corner of the object, then 3 float values giving the length, height, and width, then another unknown integer, and then the branches of the tree, which are all integer values (instead of bytes which had been used in FS2004).&lt;br /&gt;
If the value of a cell is -1 the cell is solid, if it is -2 the cell is free, every other value is the offset of the octet of the next lower node in the branch.&lt;br /&gt;
&lt;br /&gt;
=== BBOX ===&lt;br /&gt;
&lt;br /&gt;
This section stores the bounding box of the object in the following format:&lt;br /&gt;
&lt;br /&gt;
 float xmin&lt;br /&gt;
 float ymin&lt;br /&gt;
 float zmin&lt;br /&gt;
 float xmax&lt;br /&gt;
 float ymax&lt;br /&gt;
 float zmax&lt;br /&gt;
&lt;br /&gt;
=== RADI ===&lt;br /&gt;
&lt;br /&gt;
This section stores the radius of the object as a float.&lt;br /&gt;
&lt;br /&gt;
=== MDLD ===&lt;br /&gt;
&lt;br /&gt;
This section contains the actual data defining the object.&lt;br /&gt;
&lt;br /&gt;
==== TEXT ====&lt;br /&gt;
&lt;br /&gt;
This section contains the list of all textures of the object. Each texture is given as a 64 character string. Unlike the Fs2004 format no additional parameters are stored in the texture list, only the texture name.&lt;br /&gt;
&lt;br /&gt;
==== MATE ====&lt;br /&gt;
&lt;br /&gt;
This section contains a list of all materials of the object. Each material is defined by a 120 byte long record. The definition of this record is given below:&lt;br /&gt;
&lt;br /&gt;
 short  material_type&lt;br /&gt;
 short  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 int    texture_index;&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  base_color_R&lt;br /&gt;
 float  base_color_G&lt;br /&gt;
 float  base_color_B&lt;br /&gt;
 float  base_color_A&lt;br /&gt;
 float  specular_color_R&lt;br /&gt;
 float  specular_color_G&lt;br /&gt;
 float  specular_color_B&lt;br /&gt;
 float  specular_color_A&lt;br /&gt;
 float  specular_power&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  specular_bloom_floor&lt;br /&gt;
 float  ambient_light_scale&lt;br /&gt;
 float  (?)&lt;br /&gt;
 int    source_blend&lt;br /&gt;
 int    destination_blend&lt;br /&gt;
 int    alpha_test_function&lt;br /&gt;
 float  alpha_test_threshold&lt;br /&gt;
 float  z_write_alpha&lt;br /&gt;
&lt;br /&gt;
The material_type is 1 for materials without a texture and 3 for a materials that have a texture.&lt;br /&gt;
&lt;br /&gt;
The source_blend and destination_blend parameters seem to use the following enumeration:&lt;br /&gt;
  1 zero&lt;br /&gt;
  2 once&lt;br /&gt;
  3 srcColor&lt;br /&gt;
  4 invSrcColor&lt;br /&gt;
  5 srcAlpha&lt;br /&gt;
  6 invSrcAlpha&lt;br /&gt;
  7 destAlpha&lt;br /&gt;
  8 invDestAlpha&lt;br /&gt;
  9 destColor&lt;br /&gt;
 10 invDestColor&lt;br /&gt;
&lt;br /&gt;
The alpha_test_function parameter seems to use the following enumeration:&lt;br /&gt;
 1 never&lt;br /&gt;
 2 less&lt;br /&gt;
 3 equal&lt;br /&gt;
 4 lessEqual&lt;br /&gt;
 5 greater&lt;br /&gt;
 6 notEqual&lt;br /&gt;
 7 greaterEqual&lt;br /&gt;
 8 always&lt;br /&gt;
&lt;br /&gt;
The z_write_alpha parameter has a value of 1 (float) when it is enabled (TRUE).&lt;br /&gt;
&lt;br /&gt;
==== INDE ====&lt;br /&gt;
&lt;br /&gt;
This section contains of a lot of triangles, each given by three short values. These values are the indices of the vertices to use. In the PART list an offset is specified for these indices, so the first vertex of a part seems to be zero always.&lt;br /&gt;
&lt;br /&gt;
==== VERB ====&lt;br /&gt;
&lt;br /&gt;
This section gives the vertex buffer of the object.&lt;br /&gt;
&lt;br /&gt;
===== VERT =====&lt;br /&gt;
&lt;br /&gt;
This section contains a list of all vertices of the object. Each vertex is given by a 32 byte record. The definition of this record is given below:&lt;br /&gt;
&lt;br /&gt;
 float position_x&lt;br /&gt;
 float position_y&lt;br /&gt;
 float position_z&lt;br /&gt;
 float normal_x&lt;br /&gt;
 float normal_y&lt;br /&gt;
 float normal_z&lt;br /&gt;
 float texture_mapping_x&lt;br /&gt;
 float texture_mapping_y&lt;br /&gt;
&lt;br /&gt;
===== TANS =====&lt;br /&gt;
&lt;br /&gt;
This section is contains tangent space list data. The first paramter of this list seems to be a zero. Then for each vertex two vectors are given that define a plane that is tangent to the vertex (these vectors are defined as three floats). This data only seems to be set for textured polygons, untextured polygons have null vectors defined here.&lt;br /&gt;
&lt;br /&gt;
==== TRAN ====&lt;br /&gt;
&lt;br /&gt;
This section stores the static transformation matrices. Each matrix is defined by 16 floats. For a definition of these matrices see the [http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_m_Summer_04/directx/direct3d/gettingstarted/transforms/matrices/matrices.asp DirectX SDK].&lt;br /&gt;
&lt;br /&gt;
==== AMAP ====&lt;br /&gt;
&lt;br /&gt;
This section contains animation map data.&lt;br /&gt;
&lt;br /&gt;
==== SCEN ====&lt;br /&gt;
&lt;br /&gt;
Unknown at the moment.&lt;br /&gt;
&lt;br /&gt;
==== SGAL ====&lt;br /&gt;
&lt;br /&gt;
This is the scenegraph animation linkage section.&lt;br /&gt;
&lt;br /&gt;
==== SGVL ====&lt;br /&gt;
&lt;br /&gt;
This is the scenegraph visibility linkage section.&lt;br /&gt;
&lt;br /&gt;
==== SGJC ====&lt;br /&gt;
&lt;br /&gt;
This scenegraph section contains IK joint constraint data.&lt;br /&gt;
&lt;br /&gt;
==== SGBR ====&lt;br /&gt;
&lt;br /&gt;
This is the scenegraph bone reference section.&lt;br /&gt;
&lt;br /&gt;
==== LODT ====&lt;br /&gt;
&lt;br /&gt;
This section defines the LOD table of the object. It is followed by a LODE section for each LOD level in the object.&lt;br /&gt;
&lt;br /&gt;
==== LODE ====&lt;br /&gt;
&lt;br /&gt;
This section defines a LOD level for the object. It contains an int that indicates the value of this LOD. The default value if only one LOD is used in the object is 100. This section is followed by a PART section for each part in this LOD level.&lt;br /&gt;
&lt;br /&gt;
==== PART ====&lt;br /&gt;
&lt;br /&gt;
This section defines an object part. The part definition contains the following parameters:&lt;br /&gt;
&lt;br /&gt;
 int  type (1 = Triangle List, 2 = Triangle Fan, 3 = Triangle Strip)&lt;br /&gt;
 int  scenegraph_reference (?)&lt;br /&gt;
 int  material_index&lt;br /&gt;
 int  vertex_buffer_index&lt;br /&gt;
 int  vertex_offset&lt;br /&gt;
 int  vertex_count  &lt;br /&gt;
 int  index_offset&lt;br /&gt;
 int  index_count&lt;br /&gt;
 int  mouse_rectangle_ref (?)&lt;br /&gt;
&lt;br /&gt;
vertex_buffer_index tells which VERT structure inside the VERB section is to be used.&lt;br /&gt;
&lt;br /&gt;
The index_offset and index_count are given in indices, so it should be divided by three to get a triangle offset and count.&lt;br /&gt;
&lt;br /&gt;
==== ANIB ====&lt;br /&gt;
&lt;br /&gt;
Animation block section. Data type is uint8.&lt;br /&gt;
&lt;br /&gt;
[[category:Scenery design]]&lt;br /&gt;
[[category:Aircraft design]]&lt;br /&gt;
[[category:File Formats]]&lt;/div&gt;</summary>
		<author><name>Lmoelleb</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=MDL_file_format_(FSX)&amp;diff=2527</id>
		<title>MDL file format (FSX)</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=MDL_file_format_(FSX)&amp;diff=2527"/>
		<updated>2007-05-30T17:32:12Z</updated>

		<summary type="html">&lt;p&gt;Lmoelleb: /* PART */ added type and scengraph reference (still need to find details on sceng ref)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the structure of FsX MDL files. This document is mainly useful for people who want to read or decode these MDL files in a tool.&lt;br /&gt;
&lt;br /&gt;
Compared to the Fs2004 MDL format there are quite a few changes. One of the biggest is that aircraft and scenery MDL files now have the same format. At the moment the knowledge in this document mainly comes from evaluating simple scenery objects, so it is certainly not yet complete. If you have anything to add, please do so.&lt;br /&gt;
&lt;br /&gt;
== MDL sections ==&lt;br /&gt;
&lt;br /&gt;
The MDL file uses the RIFF format, this means that the file consists of different sections. Each section starts with a four character label, followed by the size of the content in bytes (this size is thus without the length of the header itself). The tabel below shows how the different section can be nested.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Parent section&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| RIFF&lt;br /&gt;
| General RIFF section (covers entire file)&lt;br /&gt;
| None&lt;br /&gt;
|- &lt;br /&gt;
| MDLH&lt;br /&gt;
| MDL header&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| MDLG&lt;br /&gt;
| Object GUID&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| MDLN&lt;br /&gt;
| Object friendly name&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| PARA&lt;br /&gt;
| Parameters Block&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| CRAS&lt;br /&gt;
| Object crashbox&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| BBOX&lt;br /&gt;
| Object boundingbox&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| RADI&lt;br /&gt;
| Object radius&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| MDLD&lt;br /&gt;
| Exterior Node Root&lt;br /&gt;
| RIFF&lt;br /&gt;
|- &lt;br /&gt;
| TEXT&lt;br /&gt;
| Texture list&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| MATE&lt;br /&gt;
| Material list&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| INDE&lt;br /&gt;
| Triangle index list&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| VERB&lt;br /&gt;
| Vertex buffer list&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| VERT&lt;br /&gt;
| Vertex list&lt;br /&gt;
| VERB&lt;br /&gt;
|- &lt;br /&gt;
| TANS&lt;br /&gt;
| Tangent Space list (?)&lt;br /&gt;
| VERB&lt;br /&gt;
|- &lt;br /&gt;
| TRAN&lt;br /&gt;
| Static transformation matrices&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| AMAP&lt;br /&gt;
| Animation Map&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| SCEN&lt;br /&gt;
| Scenegraph Node Root&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| SGAL&lt;br /&gt;
| Scenegraph Animation Linkage&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| SGVL&lt;br /&gt;
| Scenegraph Visibility Linkage&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| SGJC&lt;br /&gt;
| Scenegraph Joint Constraints&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| SGBR&lt;br /&gt;
| Scenegraph Bone Reference&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| LODT&lt;br /&gt;
| LOD table&lt;br /&gt;
| MDLD&lt;br /&gt;
|- &lt;br /&gt;
| LODE&lt;br /&gt;
| LOD Entry&lt;br /&gt;
| LODT&lt;br /&gt;
|- &lt;br /&gt;
| PART&lt;br /&gt;
| Part list&lt;br /&gt;
| LODE&lt;br /&gt;
|- &lt;br /&gt;
| ANIB&lt;br /&gt;
| Animation Block&lt;br /&gt;
| MDLD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The main RIFF section itself has one additional parameter, this is a four character string that indicates the type of RIFF MDL file. For an FsX MDL file the value should always be MDLX.&lt;br /&gt;
&lt;br /&gt;
The following subsection show more details about the content of these different sections.&lt;br /&gt;
&lt;br /&gt;
=== MDLH ===&lt;br /&gt;
&lt;br /&gt;
This the FS MDL object header. It seems to contain of an integer that always has the value of 123456 and a float of value 10. The purpose of these parameter is unknown.&lt;br /&gt;
&lt;br /&gt;
=== MDLG ===&lt;br /&gt;
&lt;br /&gt;
This section stores the object GUID. The GUID is stored in the following parts:&lt;br /&gt;
&lt;br /&gt;
 unsigned long data1&lt;br /&gt;
 unsigned short data2&lt;br /&gt;
 unsigned short data3&lt;br /&gt;
 unsigned char data4[8]&lt;br /&gt;
&lt;br /&gt;
In hexadecimal form the GUID is then written as:&lt;br /&gt;
&lt;br /&gt;
 {data1-data2-data3-data4[0:1]-data4[2:7]}&lt;br /&gt;
&lt;br /&gt;
=== MDLN ===&lt;br /&gt;
&lt;br /&gt;
This section contains a string with the friendly name of the object.&lt;br /&gt;
&lt;br /&gt;
=== PARA ===&lt;br /&gt;
&lt;br /&gt;
This is the ParamsBlock section, containing parameter block data.&lt;br /&gt;
&lt;br /&gt;
=== CRAS ===&lt;br /&gt;
&lt;br /&gt;
This section stores the crashtree of the object. It has first two unknown integer values, then there are 3 float values giving the front lower left corner of the object, then 3 float values giving the length, height, and width, then another unknown integer, and then the branches of the tree, which are all integer values (instead of bytes which had been used in FS2004).&lt;br /&gt;
If the value of a cell is -1 the cell is solid, if it is -2 the cell is free, every other value is the offset of the octet of the next lower node in the branch.&lt;br /&gt;
&lt;br /&gt;
=== BBOX ===&lt;br /&gt;
&lt;br /&gt;
This section stores the bounding box of the object in the following format:&lt;br /&gt;
&lt;br /&gt;
 float xmin&lt;br /&gt;
 float ymin&lt;br /&gt;
 float zmin&lt;br /&gt;
 float xmax&lt;br /&gt;
 float ymax&lt;br /&gt;
 float zmax&lt;br /&gt;
&lt;br /&gt;
=== RADI ===&lt;br /&gt;
&lt;br /&gt;
This section stores the radius of the object as a float.&lt;br /&gt;
&lt;br /&gt;
=== MDLD ===&lt;br /&gt;
&lt;br /&gt;
This section contains the actual data defining the object.&lt;br /&gt;
&lt;br /&gt;
==== TEXT ====&lt;br /&gt;
&lt;br /&gt;
This section contains the list of all textures of the object. Each texture is given as a 64 character string. Unlike the Fs2004 format no additional parameters are stored in the texture list, only the texture name.&lt;br /&gt;
&lt;br /&gt;
==== MATE ====&lt;br /&gt;
&lt;br /&gt;
This section contains a list of all materials of the object. Each material is defined by a 120 byte long record. The definition of this record is given below:&lt;br /&gt;
&lt;br /&gt;
 short  material_type&lt;br /&gt;
 short  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 int    texture_index;&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  base_color_R&lt;br /&gt;
 float  base_color_G&lt;br /&gt;
 float  base_color_B&lt;br /&gt;
 float  base_color_A&lt;br /&gt;
 float  specular_color_R&lt;br /&gt;
 float  specular_color_G&lt;br /&gt;
 float  specular_color_B&lt;br /&gt;
 float  specular_color_A&lt;br /&gt;
 float  specular_power&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  (?)&lt;br /&gt;
 float  specular_bloom_floor&lt;br /&gt;
 float  ambient_light_scale&lt;br /&gt;
 float  (?)&lt;br /&gt;
 int    source_blend&lt;br /&gt;
 int    destination_blend&lt;br /&gt;
 int    alpha_test_function&lt;br /&gt;
 float  alpha_test_threshold&lt;br /&gt;
 float  z_write_alpha&lt;br /&gt;
&lt;br /&gt;
The material_type is 1 for materials without a texture and 3 for a materials that have a texture.&lt;br /&gt;
&lt;br /&gt;
The source_blend and destination_blend parameters seem to use the following enumeration:&lt;br /&gt;
  1 zero&lt;br /&gt;
  2 once&lt;br /&gt;
  3 srcColor&lt;br /&gt;
  4 invSrcColor&lt;br /&gt;
  5 srcAlpha&lt;br /&gt;
  6 invSrcAlpha&lt;br /&gt;
  7 destAlpha&lt;br /&gt;
  8 invDestAlpha&lt;br /&gt;
  9 destColor&lt;br /&gt;
 10 invDestColor&lt;br /&gt;
&lt;br /&gt;
The alpha_test_function parameter seems to use the following enumeration:&lt;br /&gt;
 1 never&lt;br /&gt;
 2 less&lt;br /&gt;
 3 equal&lt;br /&gt;
 4 lessEqual&lt;br /&gt;
 5 greater&lt;br /&gt;
 6 notEqual&lt;br /&gt;
 7 greaterEqual&lt;br /&gt;
 8 always&lt;br /&gt;
&lt;br /&gt;
The z_write_alpha parameter has a value of 1 (float) when it is enabled (TRUE).&lt;br /&gt;
&lt;br /&gt;
==== INDE ====&lt;br /&gt;
&lt;br /&gt;
This section contains of a lot of triangles, each given by three short values. These values are the indices of the vertices to use. In the PART list an offset is specified for these indices, so the first vertex of a part seems to be zero always.&lt;br /&gt;
&lt;br /&gt;
==== VERB ====&lt;br /&gt;
&lt;br /&gt;
This section gives the vertex buffer of the object.&lt;br /&gt;
&lt;br /&gt;
===== VERT =====&lt;br /&gt;
&lt;br /&gt;
This section contains a list of all vertices of the object. Each vertex is given by a 32 byte record. The definition of this record is given below:&lt;br /&gt;
&lt;br /&gt;
 float position_x&lt;br /&gt;
 float position_y&lt;br /&gt;
 float position_z&lt;br /&gt;
 float normal_x&lt;br /&gt;
 float normal_y&lt;br /&gt;
 float normal_z&lt;br /&gt;
 float texture_mapping_x&lt;br /&gt;
 float texture_mapping_y&lt;br /&gt;
&lt;br /&gt;
===== TANS =====&lt;br /&gt;
&lt;br /&gt;
This section is contains tangent space list data. The first paramter of this list seems to be a zero. Then for each vertex two vectors are given that define a plane that is tangent to the vertex (these vectors are defined as three floats). This data only seems to be set for textured polygons, untextured polygons have null vectors defined here.&lt;br /&gt;
&lt;br /&gt;
==== TRAN ====&lt;br /&gt;
&lt;br /&gt;
This section stores the static transformation matrices. Each matrix is defined by 16 floats. For a definition of these matrices see the [http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_m_Summer_04/directx/direct3d/gettingstarted/transforms/matrices/matrices.asp DirectX SDK].&lt;br /&gt;
&lt;br /&gt;
==== AMAP ====&lt;br /&gt;
&lt;br /&gt;
This section contains animation map data.&lt;br /&gt;
&lt;br /&gt;
==== SCEN ====&lt;br /&gt;
&lt;br /&gt;
Unknown at the moment.&lt;br /&gt;
&lt;br /&gt;
==== SGAL ====&lt;br /&gt;
&lt;br /&gt;
This is the scenegraph animation linkage section.&lt;br /&gt;
&lt;br /&gt;
==== SGVL ====&lt;br /&gt;
&lt;br /&gt;
This is the scenegraph visibility linkage section.&lt;br /&gt;
&lt;br /&gt;
==== SGJC ====&lt;br /&gt;
&lt;br /&gt;
This scenegraph section contains IK joint constraint data.&lt;br /&gt;
&lt;br /&gt;
==== SGBR ====&lt;br /&gt;
&lt;br /&gt;
This is the scenegraph bone reference section.&lt;br /&gt;
&lt;br /&gt;
==== LODT ====&lt;br /&gt;
&lt;br /&gt;
This section defines the LOD table of the object. It is followed by a LODE section for each LOD level in the object.&lt;br /&gt;
&lt;br /&gt;
==== LODE ====&lt;br /&gt;
&lt;br /&gt;
This section defines a LOD level for the object. It contains a float that indicates the value of this LOD. The default value if only one LOD is used in the object is 100. This section is followed by a PART section for each part in this LOD level.&lt;br /&gt;
&lt;br /&gt;
==== PART ====&lt;br /&gt;
&lt;br /&gt;
This section defines an object part. The part definition contains the following parameters:&lt;br /&gt;
&lt;br /&gt;
 int  type (1 = Triangle List, 2 = Triangle Fan, 3 = Triangle Strip)&lt;br /&gt;
 int  scenegraph_reference (?)&lt;br /&gt;
 int  material_index&lt;br /&gt;
 int  vertex_buffer_index&lt;br /&gt;
 int  vertex_offset&lt;br /&gt;
 int  vertex_count  &lt;br /&gt;
 int  index_offset&lt;br /&gt;
 int  index_count&lt;br /&gt;
 int  mouse_rectangle_ref (?)&lt;br /&gt;
&lt;br /&gt;
vertex_buffer_index tells which VERT structure inside the VERB section is to be used.&lt;br /&gt;
&lt;br /&gt;
The index_offset and index_count are given in indices, so it should be divided by three to get a triangle offset and count.&lt;br /&gt;
&lt;br /&gt;
==== ANIB ====&lt;br /&gt;
&lt;br /&gt;
Animation block section. Data type is uint8.&lt;br /&gt;
&lt;br /&gt;
[[category:Scenery design]]&lt;br /&gt;
[[category:Aircraft design]]&lt;br /&gt;
[[category:File Formats]]&lt;/div&gt;</summary>
		<author><name>Lmoelleb</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=SDSX_domain_model_for_3D_models&amp;diff=1894</id>
		<title>SDSX domain model for 3D models</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=SDSX_domain_model_for_3D_models&amp;diff=1894"/>
		<updated>2006-10-21T09:35:24Z</updated>

		<summary type="html">&lt;p&gt;Lmoelleb: Added a short description of the model&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document contains an overview of the domain model (data model) used for 3D objects.&lt;br /&gt;
&lt;br /&gt;
Notice saving to and loading from various formats like MDL (FSX/FS9), BGL (libraries and FS9/FS8 scenery files) is not covered in this document as these are operations on the domain model, not part of the model itself.&lt;br /&gt;
&lt;br /&gt;
== Class Diagram ==&lt;br /&gt;
[[image:SDSX-ClassDiagram3DModel.png]]&lt;br /&gt;
&lt;br /&gt;
The Model contains one PartContainer (TODO: Update diagram as it indicates it can have several). This specific PartContainer will be instantiated with [[http://www.martinfowler.com/eaaCatalog/lazyLoad.html Lazy Loading]]. A PartContainer contains a collection of Parts, where a Part can be another PartContainer (for example a RotationTransform), a light, a TriangleSet, an AttachPoint, or a Platform. Each part can have one or more display conditions which must all be valid for the part to display in Flight Simulator.&lt;br /&gt;
&lt;br /&gt;
A TriangleSet is a part consisting of a number of triangles (with 3 vertexes per triangle obviously), a material, and optionally a number of textures in a TextureSet.&lt;br /&gt;
&lt;br /&gt;
TODO: Should we have a TextuerSet, or simply include all textures directly in the TriangleSet, adding a flag to each to indicate the textuer purpose (nightmap etc):&lt;br /&gt;
&lt;br /&gt;
While conditional display is not directly supported for all types of model parts (platform and attach points) the domain model still allows it, as it is possible to simulate the effect by adding an animation moving the object far below the surface when it should not be displayed. Notice this is extremely unlikely to be supported in the first versions of SDSX, but disallowing it in the domain model would result in both more complexity of the domain model, and problems with future development.&lt;/div&gt;</summary>
		<author><name>Lmoelleb</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=SDSX_domain_model_for_3D_models&amp;diff=1893</id>
		<title>SDSX domain model for 3D models</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=SDSX_domain_model_for_3D_models&amp;diff=1893"/>
		<updated>2006-10-21T09:20:17Z</updated>

		<summary type="html">&lt;p&gt;Lmoelleb: Initial version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document contains an overview of the domain model (data model) used for 3D objects.&lt;br /&gt;
&lt;br /&gt;
Notice saving to and loading from various formats like MDL (FSX/FS9), BGL (libraries and FS9/FS8 scenery files) is not covered in this document as these are operations on the domain model, not part of the model itself.&lt;br /&gt;
&lt;br /&gt;
== Class Diagram ==&lt;br /&gt;
[[image:SDSX-ClassDiagram3DModel.png]]&lt;br /&gt;
&lt;br /&gt;
The PartContainer referenced from the Model object will be instantiated with [[http://www.martinfowler.com/eaaCatalog/lazyLoad.html Lazy Loading]].&lt;br /&gt;
&lt;br /&gt;
While conditional display is not directly supported for all types of model parts (platform and attach points) the domain model still allows it, as it is possible to simulate the effect by adding an animation moving the object far below the surface when it should not be displayed. Notice this is extremely unlikely to be supported in the first versions of SDSX, but disallowing it in the domain model would result in both more complexity of the domain model, and problems with future development.&lt;/div&gt;</summary>
		<author><name>Lmoelleb</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=File:SDSX-ClassDiagram3DModel.png&amp;diff=1892</id>
		<title>File:SDSX-ClassDiagram3DModel.png</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=File:SDSX-ClassDiagram3DModel.png&amp;diff=1892"/>
		<updated>2006-10-21T09:07:48Z</updated>

		<summary type="html">&lt;p&gt;Lmoelleb: Class diagram for 3D models in SDSX&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Class diagram for 3D models in SDSX&lt;/div&gt;</summary>
		<author><name>Lmoelleb</name></author>
	</entry>
	<entry>
		<id>http://www.fsdeveloper.com/wiki/index.php?title=SDSX_Design&amp;diff=1891</id>
		<title>SDSX Design</title>
		<link rel="alternate" type="text/html" href="http://www.fsdeveloper.com/wiki/index.php?title=SDSX_Design&amp;diff=1891"/>
		<updated>2006-10-21T08:58:55Z</updated>

		<summary type="html">&lt;p&gt;Lmoelleb: Initial version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Functional and technical designs for the future Scenery Design Suite X (SDSX) tool. For discussions about this tool, please use the SDSX forum.&lt;br /&gt;
&lt;br /&gt;
Before reading the design, it is recommended to take a look at the [[SDSX Requirements]]&lt;br /&gt;
&lt;br /&gt;
== Domain Model ==&lt;br /&gt;
[[SDSX domain model for 3D models]]&lt;br /&gt;
&lt;br /&gt;
[[category:Scenery design]]&lt;/div&gt;</summary>
		<author><name>Lmoelleb</name></author>
	</entry>
</feed>