XML:OFGA: Difference between revisions

From OniGalore
Jump to navigation Jump to search
(object with particle)
mNo edit summary
Line 40: Line 40:
| <Geometry>
| <Geometry>
| link
| link
| M3GM''file_name''<font color="#777777">.oni</font> (without file suffix .oni)
| M3GM''file_name''<font color="#777777">.oni</font> <font color="#777777">(don't use file suffix)</font>
|-
|-
| <ENVP id="...">
| <ENVP id="...">
Line 48: Line 48:
| <Particles>
| <Particles>
| -
| -
| Can hold multiple <ENVPParticle>.
| You can put here quite a number of <ENVPParticle> tags. The array is an int16.
|-
|-
| <ENVPParticle>
|valign="top"| <ENVPParticle>
| -
|valign="top"| -
|
| ENVP is used to store particles attached to objects or furniture: Locklights, lights, fire, smoke, steam, "electricity" etc. Loose particles are normally added to the level [[XML:BINA/OBJC/PART|particle collection]].
|-
|-
| <Class>
| <Class>
| string
| char[64]
| BINA3RAPname.oni (don't use file pre-/suffix)
| <font color="#777777">BINA3RAP</font>file_name<font color="#777777">.oni</font> <font color="#777777">(don't use file prefix/suffix)</font>
|-
|-
| <Tag>
|valign="top"| <Tag>
| string
|valign="top"| char[48]
| Particle name for BSL commands. For some reason an underscore "_" will be added to the name. '''Examples:'''
| Particle name for BSL commands. For some reason an underscore "_" will be added to the name. '''Examples:'''


Line 68: Line 68:
| <Transform>
| <Transform>
| matrix
| matrix
| Float 4*3 + X Y Z position of the particle.
| Float 3*3 + float X Y Z position of the particle. Can be used to orient and stretch the particles (decals, locklights, etc). (How?)
|-
|-
| <DecalScale>
| <DecalScale>
| ?
| integer, integer
| X Y
| X Y
|-
|-

Revision as of 18:57, 3 March 2013

OFGA : Object Furniture Geometry Array
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

OBAN << Other file types >> ONCC

switch to OBD page

general information

  • The xml code on this page is compatible with onisplit v0.9.61.0 and v0.9.68.0
  • OFGA are level specific.
  • 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 functions. (Doors, consoles, etc. becomes imported by their object collections. See ONLV for more information.)


tags

XML tag content type description
<OFGA id="..."> integer marks the beginning of OFGA content
<EnvParticle> "#" + integer ENVP instance number (#N)
<Elements> - You can put here quite any number of <OFGAElement> tags. The array is an int32.
<OFGAElement> -
<GunkFlags> flag
NoCharacterCollision
NoOcclusion
Invisible - used for collision boxes
NoObjectCollision
<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 quite a 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, "electricity" etc. Loose particles are normally added to the level 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:
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?)
<DecalScale> integer, integer X Y
<Flags> flag ?


Example 1

OFGAV_tctf_cruiser_tn.png

extracted OFGAV_tctf_cruiser.xml file led to the 8 M3GM instances

the single parts were then imported into Mod Tool

<?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

streetlights_tn_zps4d4f227f.png

<?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

The direct export ignores geometry with the flag "Invisible".

OniSplit -extract:obj out in/OFGA*.oni


You can also identify the single geometry parts by going through the xml file and then export the M3GM file of your interest.

OniSplit -extract:xml out in/OFGA*.oni
OniSplit -extract:obj out in/M3GM*.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
-tex argument is optional but you should use it to prevent bugs

After TXMP, M3GM and OFGA creation you can go on to furniture file.