Skip to content

FBX File Doc Geometry Mesh Data

JoshuaKlaser edited this page Jun 9, 2014 · 4 revisions

This is where you will find the data:

  • Vertices
  • Vertex indices
  • Edges
  • Normals
  • UVs
  • UV indices
  • Material indicies

This section is found within the Object Properties, with the heading:

Geometry: 227408672, "Geometry::", "Mesh" {

The first part 'Geometry:' is the name of the object property.
The second part '227408672' is the id of this object property.
The third part 'Geometry::' is the name of this object property. This has no name as the actual name is located to the right of the '::'.
The fourth part 'Mesh' is the type of this object property.

The vertices are found within:

Vertices: *48 {
}

This is a list of floats separated by commas and when imported form a list of Vector3.
This format string of this section goes - x,y,z,x,y,z,x,y,z.
The amount is provided next to the title and is 48 in this example, however due to the format of the data it is actually 48 divided by 3 (since 3 parts of the string make 1 part of the Vector3 list).

The vertex indices are found within:

PolygonVertexIndex: *48 {
}

This is a list integers separated by commas and when imported form a list of integers.
This format string of this section goes - face1ind1, face1ind2, face1ind3, -face1ind4last, face2ind1, etc. , which means the indices are saved as a triangle fan, per face. You will notice that there are negative numbers in this list, these numbers refer to the final index of the current face. These numbers have been XOR'd by -1 which means that in order to convert them back you must use the algorithm AI = ((I x -1) - 1), where I is the index value; Ex. -4 would convert to AI = ((-4 x -1) - 1) : AI = (4 - 1) : AI = 3.
The amount is provided next to the title and is 48 in this example, however keep in mind that 48 is the number of indices in this format. If you wish to convert this list to a triangle strip or something else, then the number may or may not be different.

The edges are found within:

Edges: *24 {
}

This is a list of integers separated by commas and when imported form a list of integers.
No research has been done on the edges to state what the format string is.
The amount is provided next to the title and is 24 in this example. This number reflects the amount of integers in the string, and also reflects the amount of edges on the model (excluding extra ones made by triangle rendering).

The normals are found within:

LayerElementNormal: 0 {
MappingInformationType: "ByPolygonVertex"
Normals: *144 {
}
}

This example has been set so the normals are bound to the vertex and this can be seen by the 'MappingInformationType' property. The information provided will be based upon vertex normals only as no research has been done on face normals.
This is a list of integers separated by commas and when imported form a list of Vector3.
This format string of this section goes - x,y,z,x,y,z.
The amount provided is next to the title and is 144 in this example. Since this number needs to be reduced by a division of 3, you will notice that the actual list is 48. Given that there are 48 normals while only having 16 vertices, it's quite obvious the normals are based upon something else to reflect on the vertices. So they reflect on the vertex indices to direct them to the vertex in which they need to be applied, where the first normal of the list uses the first vertex index, and the second normal uses the second vertex index, and so on.

Clone this wiki locally