XML:OFGA: Difference between revisions
Jump to navigation
Jump to search
Paradox-01 (talk | contribs) m (creating true sections for examples) |
m (copy-edit) |
||
Line 1: | Line 1: | ||
{{XML_File_Header | type=OFGA | prev=OBAN | next=ONCC | name=Object Furniture Geometry Array }} | {{XML_File_Header | type=OFGA | prev=OBAN | next=ONCC | name=Object Furniture Geometry Array}} | ||
== | ==General information== | ||
* The | * The XML on this page is compatible with OniSplit '''v0.9.61.0''' and '''v0.9.68.0'''. | ||
* OFGA are level specific | * OFGA are level-specific (and maybe can be global too? Not tested). | ||
* OFGA files were rarely used in game | * OFGA files were rarely used in-game — only to get the bounding box of the geometry. | ||
* Nowadays they are used to import objects with no | * Nowadays they are used to import objects with no function. (Doors and consoles get imported through object collections. See [[XML:ONLV|ONLV]] for more information.) | ||
==XML tags== | |||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
!width=150px| XML tag | !width=150px| XML tag | ||
!width=120px| | !width=120px| Content type | ||
! | ! Description | ||
|- | |- | ||
| <OFGA id="..."> | | <OFGA id="..."> | ||
| integer | | integer | ||
| | | Marks the beginning of the OFGA content. | ||
|- | |- | ||
|valign=top| <EnvParticle> | |valign=top| <EnvParticle> | ||
Line 24: | Line 23: | ||
| <Elements> | | <Elements> | ||
| - | | - | ||
| You can put here | | You can put here practically any number of <OFGAElement> tags. The array is an int32. | ||
|- | |- | ||
| <OFGAElement> | | <OFGAElement> | ||
Line 32: | Line 31: | ||
|valign="top"| <GunkFlags> | |valign="top"| <GunkFlags> | ||
|valign="top"| flag | |valign="top"| flag | ||
| | | Here are the common flags. For more theoretically-possible AGQG flags, see ''onisplit -help enums''. | ||
: None | : None | ||
: NoCharacterCollision | : NoCharacterCollision | ||
Line 51: | Line 50: | ||
| <Particles> | | <Particles> | ||
| - | | - | ||
| You can put here | | You can put here practically any number of <ENVPParticle> tags. The array is an int16. | ||
|- | |- | ||
|valign="top"| <ENVPParticle> | |valign="top"| <ENVPParticle> | ||
|valign="top"| - | |valign="top"| - | ||
| ENVP is used to store particles attached to objects or furniture: | | ENVP is used to store particles attached to objects or furniture: locklights, lights, fire, smoke, steam, bolts of electricity, etc. Loose particles are normally added to the level's [[XML:BINA/OBJC/PART|particle collection]]. | ||
|- | |- | ||
| <Class> | | <Class> | ||
Line 71: | Line 70: | ||
| <Transform> | | <Transform> | ||
| matrix | | matrix | ||
| Float 3*3 + float X Y Z position of the particle. Can be used to orient and stretch the particles (decals, locklights, etc). (How?) | | Float 3*3 + float X Y Z position of the particle. Can be used to orient and stretch the particles (decals, locklights, etc.). (How? Expand on this.) | ||
|- | |- | ||
| <DecalScale> | | <DecalScale> | ||
Line 84: | Line 83: | ||
|} | |} | ||
===Example 1=== | |||
[[Image:OFGA_extracted_M3GMs_of_V_tctf_cruiser.png|thumb|200px|right|Extracted "V_tctf_cruiser.oni" (OFGA) from shared folder (furniture), seen in Mod Tool, Wireframe mode.]] | [[Image:OFGA_extracted_M3GMs_of_V_tctf_cruiser.png|thumb|200px|right|Extracted "V_tctf_cruiser.oni" (OFGA) from shared folder (furniture), seen in Mod Tool, Wireframe mode.]] | ||
Line 129: | Line 127: | ||
</Oni> | </Oni> | ||
===Example 2=== | |||
[[Image:OFGA_streetlights_with_particle_ingame.png|thumb|200px|right|Streetlights are originally part of the level geometry. For import tests they have been transformed into a M3GM and OFGA file.]] | |||
[[Image:OFGA_streetlights_with_particle_ingame.png|thumb|200px|right| | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||
Line 164: | Line 161: | ||
</Oni> | </Oni> | ||
==Export== | |||
To extract the OFGA file: | |||
== | |||
To extract the OFGA file | |||
OniSplit -extract:xml out in/OFGA*.oni | OniSplit -extract:xml out in/OFGA*.oni | ||
To extract M3GM parts only | To extract M3GM parts only: | ||
OniSplit -extract:obj out in/OFGA*.oni | OniSplit -extract:obj out in/OFGA*.oni | ||
==Import== | |||
== | Be sure your OBJ file contains triangulated meshes. Quads can give you visual glitches. | ||
Be sure your | |||
OniSplit out_folder -create:m3gm [-tex:texture_name] input_folder/file.obj | OniSplit out_folder -create:m3gm [-tex:texture_name] input_folder/file.obj | ||
: -tex argument is optional but you should use it to prevent bugs | : The "-tex" argument is optional but you should use it to prevent bugs. | ||
After the creation of the TXMP, M3GM and OFGA, you can go on to the [[XML:ONLV#Furniture.xml|furniture file]]. | |||
{{XML}} | {{XML}} |
Revision as of 19:28, 22 March 2021
OFGA : Object Furniture Geometry Array | ||
---|---|---|
XML
OBAN << Other file types >> ONCC |
General information
- The XML on this page is compatible with OniSplit v0.9.61.0 and v0.9.68.0.
- OFGA are level-specific (and maybe can be global too? Not tested).
- OFGA files were rarely used in-game — only to get the bounding box of the geometry.
- Nowadays they are used to import objects with no function. (Doors and consoles get imported through object collections. See ONLV for more information.)
XML tags
XML tag | Content type | Description |
---|---|---|
<OFGA id="..."> | integer | Marks the beginning of the OFGA content. |
<EnvParticle> | "#" + integer | ENVP instance number (#N) |
<Elements> | - | You can put here practically any number of <OFGAElement> tags. The array is an int32. |
<OFGAElement> | - | |
<GunkFlags> | flag | Here are the common flags. For more theoretically-possible AGQG flags, see onisplit -help enums.
|
<Geometry> | link | M3GMfile_name.oni (don't use file suffix) |
<ENVP id="..."> | integer | Instance number. Use the one from <EnvParticle>. |
<Particles> | - | You can put here practically any number of <ENVPParticle> tags. The array is an int16. |
<ENVPParticle> | - | ENVP is used to store particles attached to objects or furniture: locklights, lights, fire, smoke, steam, bolts of electricity, etc. Loose particles are normally added to the level's particle collection. |
<Class> | char[64] | BINA3RAPfile_name.oni (don't use file prefix/suffix) |
<Tag> | char[48] | Particle name for BSL commands. For some reason an underscore "_" will be added to the name. Examples:
|
<Transform> | matrix | Float 3*3 + float X Y Z position of the particle. Can be used to orient and stretch the particles (decals, locklights, etc.). (How? Expand on this.) |
<DecalScale> | integer, integer | X Y |
<Flags> | flag |
|
Example 1
<?xml version="1.0" encoding="utf-8"?> <Oni> <OFGA id="0"> <EnvParticle></EnvParticle> <Elements> <OFGAElement> <GunkFlags>NoCharacterCollision NoOcclusion</GunkFlags> <Geometry>M3GMV_tctf_cruiser_0</Geometry> </OFGAElement> <OFGAElement> <GunkFlags>NoCharacterCollision NoOcclusion</GunkFlags> <Geometry>M3GMV_tctf_cruiser_1</Geometry> </OFGAElement> <OFGAElement> <GunkFlags>NoCharacterCollision NoOcclusion</GunkFlags> <Geometry>M3GMV_tctf_cruiser_2</Geometry> </OFGAElement> <OFGAElement> <GunkFlags>NoCharacterCollision NoOcclusion</GunkFlags> <Geometry>M3GMV_tctf_cruiser_3</Geometry> </OFGAElement> <OFGAElement> <GunkFlags>NoCharacterCollision NoOcclusion</GunkFlags> <Geometry>M3GMV_tctf_cruiser_4</Geometry> </OFGAElement> <OFGAElement> <GunkFlags>NoCharacterCollision NoOcclusion</GunkFlags> <Geometry>M3GMV_tctf_cruiser_5</Geometry> </OFGAElement> <OFGAElement> <GunkFlags>NoCharacterCollision NoOcclusion</GunkFlags> <Geometry>M3GMV_tctf_cruiser_6</Geometry> </OFGAElement> <OFGAElement> <GunkFlags>Invisible NoObjectCollision</GunkFlags> <Geometry>M3GMV_tctf_cruiser_7</Geometry> </OFGAElement> </Elements> </OFGA> </Oni>
Example 2
<?xml version="1.0" encoding="utf-8"?> <Oni> <OFGA id="0"> <EnvParticle>#1</EnvParticle> <Elements> <OFGAElement> <GunkFlags>NoOcclusion</GunkFlags> <Geometry>M3GMstreetlight_0</Geometry> </OFGAElement> </Elements> </OFGA> <ENVP id="1"> <Particles> <ENVPParticle> <Class>env_lensflare09</Class> <Tag>streetlight</Tag> <Transform>1 -4.559326E-08 1.35404189E-05 -1.354042E-05 -2.03512554E-05 1 -4.53176945E-08 -1 -2.03512554E-05 1.3262 63.5907 10.4082</Transform> <DecalScale>1 1</DecalScale> <Flags></Flags> </ENVPParticle> <ENVPParticle> <Class>env_lensflare09</Class> <Tag>streetlight</Tag> <Transform>1 -4.559326E-08 1.35404189E-05 -1.354042E-05 -2.03512554E-05 1 -4.53176945E-08 -1 -2.03512554E-05 1.3262 63.5907 -8.877</Transform> <DecalScale>1 1</DecalScale> <Flags></Flags> </ENVPParticle> </Particles> </ENVP> </Oni>
Export
To extract the OFGA file:
OniSplit -extract:xml out in/OFGA*.oni
To extract M3GM parts only:
OniSplit -extract:obj out in/OFGA*.oni
Import
Be sure your OBJ file contains triangulated meshes. Quads can give you visual glitches.
OniSplit out_folder -create:m3gm [-tex:texture_name] input_folder/file.obj
- The "-tex" argument is optional but you should use it to prevent bugs.
After the creation of the TXMP, M3GM and OFGA, you can go on to the furniture file.