XML:M3GM: Difference between revisions

From OniGalore
Jump to navigation Jump to search
m (oops, wrong header info)
No edit summary
Line 10: Line 10:


==M3GM==
==M3GM==
{| class="wikitable" width="100%"
!width=200px| XML tag
!width=100px| content type
! description
|-
| <M3GM id="...">
| integer
|
|-
|valign=top| <Points>
|valign=top| link
| "#" + instance Id of [[#PNTA|PNTA]].
: XYZ and UV coordinates are stored in parallel (same number of entries in PNTA and TXCA).
|-
|valign=top| <VertexNormals>
|valign=top| link
| "#" + instance Id of [[#VCRA|VCRA]].
: The first VCRA stores the normals for every vertex (same entries as in PNTA and TXCA).
: Vertex normals are used by Gouraud shading (directional lighting).
|-
|valign=top| <FaceNormals>
|valign=top| link
| "#" + instance Id of [[#VCRA|VCRA]].
: The second VCRA stores the normals for every face (groups defined by the second IDXA).
: Face normals are used for backface culling.
|-
|valign=top| <TextureCoordinates>
|valign=top| link
| "#" + instance Id of [[#TXCA|TXCA]].
: Vertex UVs.
|-
|valign=top| <TriangleStrips>
|valign=top| link
| "#" + instance Id of [[#IDXA|IDXA]].
: The first IDXA lists the triangles as strips. The IDs are the ones in PNTA and IDXA.
: The start of a new strip is signaled by a high bit in the ID of its first vertex.
: Strips are more optimal for rendering, they are generated when authoring an M3GM.
|-
|valign=top| <FaceNormalIndices>
|valign=top| link
| "#" + instance Id of [[#IDXA|IDXA]].
: The second IDXA groups the triangles into faces (oriented by the second VCRA).
|-
| <Texture>
| link
| TXMP''name''
|}


===PNTA===
===PNTA===
{| class="wikitable" width="100%"
!width=200px| XML tag
!width=100px| content type
! description
|-
| <PNTA id="...">
| integer
| Instance Id.
|-
| <BoundingBox>
| -
|
|-
| <Min>
| float x3
|
|-
| <Max>
| float x3
|
|-
| <BoundingSphere>
| -
|
|-
| <nowiki><Center></nowiki>
| float x3
|
|-
| <Radius>
| float
|
|-
| <Positions>
| -
| This is an int32 array for the <Vector3> tags.
|-
| <Vector3>
| float x3
| X Y Z coordinate of the point.
|}


===VCRA===
===VCRA===
{| class="wikitable" width="100%"
!width=200px| XML tag
!width=100px| content type
! description
|-
| <VCRA id="...">
| integer
| Instance Id.
|-
| <Normals>
| -
| This is an int32 array for the <Vector3> tags.
|-
| <Vector3>
| float x3
| X Y Z coordinate of the normal vector.
|}


===VCRA===


===TXCA===
===TXCA===
{| class="wikitable" width="100%"
!width=200px| XML tag
!width=100px| content type
! description
|-
| <TXCA id="...">
| integer
| Instance Id.
|-
| <TexCoords>
| -
| This is an int32 array for the <Vector2> tags.
|-
| <Vector2>
| float x2
| X Y coordinates.
|}


===IDXA===
===IDXA===
{| class="wikitable" width="100%"
!width=200px| XML tag
!width=100px| content type
! description
|-
| <IDXA id="...">
| integer
| Instance Id.
|-
| <Indices>
| -
| This is an int32 array for the <Int32> tags.
|-
|valign=top| <Int32>
|valign=top| int32
|
; [[OBD:IDXA_M3GM_1|First IDXA]]
: PNTA element ID (used to build triangles with the points of the PNTA instance)
; [[OBD:IDXA_M3GM_2|Second IDXA]]
: VCRA element ID (used to assign the normals to every triangle)
|}


===IDXA===


==Export==
==Export==
onisplit -extract:obj ''output_folder input_folder''/M3GM''file_name''.oni
Or use [[Vago_(tool)|Vago]].


==Import==
==Import==
onisplit -create:m3gm ''output_folder'' -tex:''input_folder''/TXMP''file_name''.oni ''input_folder''/''file_name''.obj


Or use [[Vago_(tool)|Vago]].




{{XML}}
{{XML}}

Revision as of 13:54, 29 April 2013

M3GM : Geometry
XML modding tips
  • See HERE to start learning about XML modding.
  • See HERE if you are searching for information on how to handle object coordinates.
  • See HERE for some typical modding errors and their causes.
XML.png
XML

M3GA << Other file types >> Mtrl

switch to OBD page


General information

  • The xml code on this page was tested with onisplit v0.9.86.0
  • M3GM files local (levelN) and global (level0).
    • Most global M3GMs are used by particle.
    • Most local M3GMs are doors or animated objects.


M3GM

XML tag content type description
<M3GM id="..."> integer
<Points> link "#" + instance Id of PNTA.
XYZ and UV coordinates are stored in parallel (same number of entries in PNTA and TXCA).
<VertexNormals> link "#" + instance Id of VCRA.
The first VCRA stores the normals for every vertex (same entries as in PNTA and TXCA).
Vertex normals are used by Gouraud shading (directional lighting).
<FaceNormals> link "#" + instance Id of VCRA.
The second VCRA stores the normals for every face (groups defined by the second IDXA).
Face normals are used for backface culling.
<TextureCoordinates> link "#" + instance Id of TXCA.
Vertex UVs.
<TriangleStrips> link "#" + instance Id of IDXA.
The first IDXA lists the triangles as strips. The IDs are the ones in PNTA and IDXA.
The start of a new strip is signaled by a high bit in the ID of its first vertex.
Strips are more optimal for rendering, they are generated when authoring an M3GM.
<FaceNormalIndices> link "#" + instance Id of IDXA.
The second IDXA groups the triangles into faces (oriented by the second VCRA).
<Texture> link TXMPname


PNTA

XML tag content type description
<PNTA id="..."> integer Instance Id.
<BoundingBox> -
<Min> float x3
<Max> float x3
<BoundingSphere> -
<Center> float x3
<Radius> float
<Positions> - This is an int32 array for the <Vector3> tags.
<Vector3> float x3 X Y Z coordinate of the point.


VCRA

XML tag content type description
<VCRA id="..."> integer Instance Id.
<Normals> - This is an int32 array for the <Vector3> tags.
<Vector3> float x3 X Y Z coordinate of the normal vector.


TXCA

XML tag content type description
<TXCA id="..."> integer Instance Id.
<TexCoords> - This is an int32 array for the <Vector2> tags.
<Vector2> float x2 X Y coordinates.


IDXA

XML tag content type description
<IDXA id="..."> integer Instance Id.
<Indices> - This is an int32 array for the <Int32> tags.
<Int32> int32
First IDXA
PNTA element ID (used to build triangles with the points of the PNTA instance)
Second IDXA
VCRA element ID (used to assign the normals to every triangle)


Export

onisplit -extract:obj output_folder input_folder/M3GMfile_name.oni

Or use Vago.


Import

onisplit -create:m3gm output_folder -tex:input_folder/TXMPfile_name.oni input_folder/file_name.obj

Or use Vago.