XML:OFGA: Difference between revisions

From OniGalore
Jump to navigation Jump to search
m (+ cat)
(object with particle)
Line 8: Line 8:




===file structure===
===tags===
There's space only for one particle but multiple OFGA elements.
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=120px| content type
! description
|-
| <OFGA id="...">
| integer
| marks the beginning of OFGA content
|-
|valign=top| <EnvParticle>
|valign=top| "#" + integer
| ENVP instance number (#N)
|-
| <Elements>
| -
| You can put here quite any number of <OFGAElement> tags. The array is an int32.
|-
| <OFGAElement>
| -
|
|-
|valign="top"| <GunkFlags>
|valign="top"| flag
|
: NoCharacterCollision
: NoOcclusion
: Invisible - used for collision boxes
: NoObjectCollision
|-
| <Geometry>
| link
| M3GM''file_name''<font color="#777777">.oni</font> (without file suffix .oni)
|-
| <ENVP id="...">
| integer
| Instance number. Use the one from <EnvParticle>.
|-
| <Particles>
| -
| Can hold multiple <ENVPParticle>.
|-
| <ENVPParticle>
| -
|
|-
| <Class>
| string
| BINA3RAPname.oni (don't use file pre-/suffix)
|-
| <Tag>
| string
| 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 4*3 + X Y Z position of the particle.
|-
| <DecalScale>
| ?
| X Y
|-
| <Flags>
| flag
| ?
|}
 


;Example 1
{| border=0 cellspacing=20 cellpadding=0 style="float:right"
{| border=0 cellspacing=20 cellpadding=0 style="float:right"
|width=200px|
|width=200px|
Line 19: Line 89:
the single parts were then imported into Mod Tool
the single parts were then imported into Mod Tool
|}
|}
  <?xml version="1.0" encoding="utf-8"?>
  <?xml version="1.0" encoding="utf-8"?>
  <Oni>
  <Oni>
Line 62: Line 131:




===tags===
;Example 2
{| class="wikitable" width="100%"
{| border=0 cellspacing=20 cellpadding=0 style="float:right"
!width=150px| XML tag
|width=200px|
!width=120px| content type
[http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/3D_modding/streetlights_zps47653ed9.png http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/3D_modding/streetlights_tn_zps4d4f227f.png]
! description
|-
|valign=top| <EnvParticle>
|valign=top| ?
| if used, the name is equal to ONLV => ENVP => <Tag>...</Tag> ?
|-
| <Elements>
| -
| You can put here quite any number of <OFGAElement> tags. The array is an int32.
|-
| <OFGAElement>
| -
|
|-
|valign="top"| <GunkFlags>
|valign="top"| flag
|
: NoCharacterCollision
: NoOcclusion
: Invisible - used for collision boxes
: NoObjectCollision
|-
| <Geometry>
| link
| M3GM''file_name''<font color="#777777">.oni</font> (without file suffix .oni)
|}
|}
<?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==
==export==
The direct export ignores geometry with the flag "Invisible".
The direct export ignores geometry with the flag "Invisible".
  onisplit -extract:obj out in/OFGA*.oni
  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.
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:xml out in/OFGA*.oni
  onisplit -extract:obj out in/M3GM*.oni
  OniSplit -extract:obj out in/M3GM*.oni




==import==
==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


==error prevention==
After TXMP, M3GM and OFGA creation you can go on to [[XML:ONLV#Furniture.xml|furniture file]].




{{XML}}
{{XML}}

Revision as of 16:46, 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 (without file suffix .oni)
<ENVP id="..."> integer Instance number. Use the one from <EnvParticle>.
<Particles> - Can hold multiple <ENVPParticle>.
<ENVPParticle> -
<Class> string BINA3RAPname.oni (don't use file pre-/suffix)
<Tag> string 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 4*3 + X Y Z position of the particle.
<DecalScale> ? 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.