19,987
edits
Paradox-01 (talk | contribs) m (+ cat) |
m (link fix) |
||
| (9 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
{{XML_File_Header | type=OFGA | {{XML_File_Header | prev=OBAN | type=OFGA | 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%" | |||
!width=150px| XML tag | |||
!width=120px| Content type | |||
! Description | |||
|- | |||
| <OFGA id="..."> | |||
| integer | |||
| Marks the beginning of the OFGA content. | |||
|- | |||
|valign=top| <EnvParticle> | |||
|valign=top| "#" + integer | |||
| ENVP instance number (#N) | |||
|- | |||
| <Elements> | |||
| - | |||
| You can put here practically any number of <OFGAElement> tags. The array is an int32. | |||
|- | |||
| <OFGAElement> | |||
| - | |||
| | |||
|- | |||
|valign="top"| <GunkFlags> | |||
|valign="top"| flag | |||
| Here are the common flags. For more theoretically-possible AGQG flags, see ''onisplit -help enums''. | |||
: None | |||
: NoCharacterCollision | |||
: NoObjectCollision | |||
: NoCollision | |||
: NoOcclusion | |||
: Invisible - used for collision boxes | |||
: TwoSided | |||
|- | |||
| <Geometry> | |||
| link | |||
| M3GM''file_name''<font color="#777777">.oni</font> <font color="#777777">(don't use file suffix)</font> | |||
|- | |||
| <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. | |||
|- | |||
|valign="top"| <ENVPParticle> | |||
|valign="top"| - | |||
| 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> | |||
| char[64] | |||
| <font color="#777777">BINA3RAP</font>''file_name''<font color="#777777">.oni</font> <font color="#777777">(don't use file prefix/suffix)</font> | |||
|- | |||
|valign="top"| <Tag> | |||
|valign="top"| char[48] | |||
| Particle name for BSL commands. For some reason an underscore "_" will be added to the name. '''Examples:''' | |||
=== | : FURN <Particle>test</Particle> + OFGA <Tag>streetlight</Tag> = '''test_streetlight''' | ||
: FURN <Particle></Particle> + OFGA <Tag>streetlight</Tag> = '''_streetlight''' | |||
: FURN <Particle>test</Particle> + OFGA <Tag></Tag> = '''test_''' | |||
|- | |||
| | | <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 | |||
|- | |||
|valign="top"| <Flags> | |||
|valign="top"| flag | |||
| | |||
:None | |||
:NotInitiallyCreated | |||
|} | |||
===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.]] | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||
| Line 61: | 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.]] | |||
<?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 [[Creating a level#Furniture.xml|furniture file]]. | |||
{{XML}} | {{XML}} | ||