XML:TRBS: Difference between revisions

From OniGalore
Jump to navigation Jump to search
(Created page with "__TOC__ {{Template:XMLModdingHints}} {| border=0 cellspacing=20 cellpadding=0 style="margin-left:auto; margin-right:auto" <!--|The xml code on this page is compatible with o...")
 
mNo edit summary
Line 61: Line 61:


Taking this into account it should be possible to let Mod Tool generate a TRMA file fitting to TRBS.
Taking this into account it should be possible to let Mod Tool generate a TRMA file fitting to TRBS.
'''VBS code piece for TRMA creation'''
* The objects get listed one after another (TRMA-ready).
* The textures are listed for TRMA and TXMP creation.
* There's a texture size check to see if "-large" argument is necessary.
{| border=0 cellspacing=20 cellpadding=0 align=right
| hexhound hierarchy
[http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/3D_modding/hexhound_hierarchy_zpsf32e971c.png http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/3D_modding/hexhound_hierarchy_tn_zpsd82230ce.png]
|}
if selection.count > 0 then
' any part could be selected, let's find the root body part
SelectNeighborObj selection(0), 4
' get all members including the pelvis
set bodyparts = '''selection(0).FindChildren( , , siMeshFamily)'''
for each member in bodyparts
logmessage "object name: " & member.name
if not typename(member.Material.CurrentImageClip) = "Nothing" then
logmessage "texture: " & member.Material.CurrentImageClip.source.filename.value
'logmessage "material: " & member.Material.name
'logmessage "shader: " & member.Material.shaders(0).name
logmessage "X: " & member.Material.CurrentImageClip.source.Parameters("XRes").Value
logmessage "Y: " & member.Material.CurrentImageClip.source.Parameters("YRes").Value
end if
logmessage "----------------------------------------------------------"
next
logmessage "counted body parts: " & bodyparts.count
end if
' INFO  : object name: A
' INFO  : texture: C:\Users\RRM\Desktop\A.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: R
' INFO  : texture: C:\Users\RRM\Desktop\R.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: S
' INFO  : texture: C:\Users\RRM\Desktop\S.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: P
' INFO  : texture: C:\Users\RRM\Desktop\P.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: Q
' INFO  : texture: C:\Users\RRM\Desktop\Q.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: N
' INFO  : texture: C:\Users\RRM\Desktop\N.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: O
' INFO  : texture: C:\Users\RRM\Desktop\O.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: L
' INFO  : texture: C:\Users\RRM\Desktop\L.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: M
' INFO  : texture: C:\Users\RRM\Desktop\M.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: B
' INFO  : texture: C:\Users\RRM\Desktop\B.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: C
' INFO  : texture: C:\Users\RRM\Desktop\C.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: D
' INFO  : texture: C:\Users\RRM\Desktop\D.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: E
' INFO  : texture: C:\Users\RRM\Desktop\E.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: F
' INFO  : texture: C:\Users\RRM\Desktop\F.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: G
' INFO  : texture: C:\Users\RRM\Desktop\G.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: H
' INFO  : texture: C:\Users\RRM\Desktop\H.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: I
' INFO  : texture: C:\Users\RRM\Desktop\I.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: J
' INFO  : texture: C:\Users\RRM\Desktop\J.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : object name: K
' INFO  : texture: C:\Users\RRM\Desktop\K.tga
' INFO  : X: 512
' INFO  : Y: 512
' INFO  : ----------------------------------------------------------
' INFO  : counted body parts: 19





Revision as of 09:27, 7 November 2012


Template:XMLModdingHints

general information

  • TRBS files are stored globally (in edition/GameDataFolder/level0_Final)
  • these files are used by ONCC
  • they contain 5 models differing in ("LOD") level of detail (triangle number)


extraction

onisplit -extract:xml output_folder input_folder/TRBSname.oni


creation

onisplit -create output_folder input_folder/TRBSname.xml


example

TRBSkonoko_body_high.xml (extracted with onisplit v0.9.68.0)

<?xml version="1.0" encoding="utf-8"?>
<Oni>
   <TRBS id="0">
       <Elements>
           <Link>TRBSkonoko_body_high_TRCM1.dae</Link> <!-- 300 triangles -->
           <Link>TRBSkonoko_body_high_TRCM2.dae</Link> <!-- 842 triangles -->
           <Link>TRBSkonoko_body_high_TRCM3.dae</Link> <!-- 1250 triangles -->
           <Link>TRBSkonoko_body_high_TRCM4.dae</Link> <!-- 2038 triangles -->
           <Link>TRBSkonoko_body_high_TRCM5.dae</Link> <!-- 3294 triangles -->
       </Elements>
   </TRBS>
</Oni>


custom TRIA

Onisplit creates the TRIA instance on its own.

When extracting a TRBS with onisplit v0.9.41.0 the TRIA instance gets exposed. Then it can be modified by hand to change the hierarchy of body parts.

In the table you can see examples of TRIA instances: one from Konoko and one from a more or less hypothetical hex-hound.

Onisplit v0.9.58.0 and lower needs a dae file where the body part names are strictly correct but the order doesn't matter. The result will be always a standard TRIA.
Onisplit v0.9.68.0 and higher(?) tolerates unusual body part names but it takes the order serious to build the hierarchy.
In other words, when building a custom hierarchy with new onisplit versions you don't need any longer to edit the TRIA instance in xml.

Note that the head could be at a different location in the order. As result the head animation would be applied to a different body part.

Normally such overlay animation have "Head" as "<UsedBones>", if your new model's head isn't the 11th part you need to change it.

A character with non-standard TRIA needs a complete set of new animations, those animations must be created based on that new TRIA.


Changing the body part order

Inside Mod Tool, the objects have an order which can be seen in the Schematics. The user can influence that order by using the Reorder Nodes Tool [I].

Taking this into account it should be possible to let Mod Tool generate a TRMA file fitting to TRBS.


example

standard TRIA hexhound TRIA
   <Instance id="8" type="TRIA">
       <Elements>
           <TRIAElement>
               <Parent>0</Parent>
               <Child>1</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>0</Parent>
               <Child>2</Child>
               <Sibling>4</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>1</Parent>
               <Child>3</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>2</Parent>
               <Child>0</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>0</Parent>
               <Child>5</Child>
               <Sibling>7</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>4</Parent>
               <Child>6</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>5</Parent>
               <Child>0</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>0</Parent>
               <Child>8</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>7</Parent>
               <Child>9</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>8</Parent>
               <Child>10</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>9</Parent>
               <Child>0</Child>
               <Sibling>11</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>9</Parent>
               <Child>12</Child>
               <Sibling>15</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>11</Parent>
               <Child>13</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>12</Parent>
               <Child>14</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>13</Parent>
               <Child>0</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>9</Parent>
               <Child>16</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>15</Parent>
               <Child>17</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>16</Parent>
               <Child>18</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>17</Parent>
               <Child>0</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
       </Elements>
   </Instance>
   <Instance id="4" type="TRIA">
       <Elements>
           <TRIAElement>
               <Parent>0</Parent>
               <Child>1</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>0</Parent>
               <Child>2</Child>
               <Sibling>3</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>1</Parent>
               <Child>0</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>0</Parent>
               <Child>4</Child>
               <Sibling>5</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>3</Parent>
               <Child>0</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>0</Parent>
               <Child>6</Child>
               <Sibling>7</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>5</Parent>
               <Child>0</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>0</Parent>
               <Child>8</Child>
               <Sibling>9</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>7</Parent>
               <Child>0</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>0</Parent>
               <Child>10</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>9</Parent>
               <Child>11</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>10</Parent>
               <Child>12</Child>
               <Sibling>13</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>11</Parent>
               <Child>0</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>10</Parent>
               <Child>14</Child>
               <Sibling>16</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>13</Parent>
               <Child>15</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>14</Parent>
               <Child>0</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>10</Parent>
               <Child>17</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>16</Parent>
               <Child>18</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
           <TRIAElement>
               <Parent>17</Parent>
               <Child>0</Child>
               <Sibling>0</Sibling>
           </TRIAElement>
       </Elements>
   </Instance>