OBD talk:TRBS: Difference between revisions

From OniGalore
Jump to navigation Jump to search
mNo edit summary
m (using Image: consistently to make it easier to find all image refs on a page)
 
(15 intermediate revisions by 3 users not shown)
Line 1: Line 1:
__TOC__
==XML section==
{{Template:XMLModdingHints}}
{| border=0 cellspacing=20 cellpadding=0 align=center
<!--|The xml code on this page is compatible with onisplit '''v????'''-->
|}
'''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''/TRBS''name''.oni
'''creation'''
onisplit -create ''output_folder input_folder''/TRBS''name''.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> <nowiki><!-- 300 triangles --></nowiki>
            <Link>TRBSkonoko_body_high_TRCM2.dae</Link> <nowiki><!-- 842 triangles --></nowiki>
            <Link>TRBSkonoko_body_high_TRCM3.dae</Link> <nowiki><!-- 1250 triangles --></nowiki>
            <Link>TRBSkonoko_body_high_TRCM4.dae</Link> <nowiki><!-- 2038 triangles --></nowiki>
            <Link>TRBSkonoko_body_high_TRCM5.dae</Link> <nowiki><!-- 3294 triangles --></nowiki>
        </Elements>
    </TRBS>
</Oni>
===custom TRIA===
When extracting a TRBS with onisplit v0.9.41.0 the [[TRIA#Investigation|TRIA]] instance gets exposed. It can be modified to change the hierarchy of body parts.
Onisplit can create the TRIA instance on its own. The extracted xml code looks a bit different but ingame the model appears to have the same hierarchy.
A character with non-standard TRIA needs a complete set of new animations, those animations must be created based on that new TRIA.
{| class="wikitable" width=100%
| '''standard TRIA'''
| '''hexhound TRIA'''
| '''hexhound TRIA'''
|-
| original
| self-made
| onisplit-generated (v0.9.68.0)
|-
|
    <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>14</Sibling>
            </TRIAElement>
            <TRIAElement>
                <Parent>11</Parent>
                <Child>13</Child>
                <Sibling>0</Sibling>
            </TRIAElement>
            <TRIAElement>
                <Parent>12</Parent>
                <Child>0</Child>
                <Sibling>0</Sibling>
            </TRIAElement>
            <TRIAElement>
                <Parent>10</Parent>
                <Child>15</Child>
                <Sibling>17</Sibling>
            </TRIAElement>
            <TRIAElement>
                <Parent>14</Parent>
                <Child>16</Child>
                <Sibling>0</Sibling>
            </TRIAElement>
            <TRIAElement>
                <Parent>15</Parent>
                <Child>0</Child>
                <Sibling>0</Sibling>
            </TRIAElement>
            <TRIAElement>
                <Parent>10</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>
|}
==Old talk==
==Old talk==
===New 19-bone TRIA===
===New 19-bone TRIA===
Basically, a 4-legged (19-bone) character would be playable if we create enough new TRAM files. A simple test can be seen here: [http://dl.dropbox.com/u/139715/OniGalore/talk/simple_hex_model_walk_test.wmv vid] + [http://dl.dropbox.com/u/139715/OniGalore/talk/hex.h-test.zip files].
Basically, a 4-legged (19-bone) character would be playable if we create enough new TRAM files.


An open question is how we force the head to be the 11th part when we use the auto-TRIA-creation of onisplit v0.9.52.0. I dont't know whether head view animation are hardcoded or stored inside the TRAC/TRSC.
An open question is how we force the head to be the 11th part when we use the auto-TRIA-creation of onisplit v0.9.52.0. I dont't know whether head view animation are hardcoded or stored inside the TRAC/TRSC.


If you test the given files you can notice that the mouse axis are wrong. This might ceome from the mistake in the dae file. Haven't checked yet. --dox
If you test the given files you can notice that the mouse axis are wrong. This might ceome from the mistake in the dae file. Haven't checked yet. --[[User:Paradox-01|Paradox-01]] 14:47, 15 May 2011
 
:If by "head view animation" you mean aiming and looking around, then that information is in those special overlay TRAMs that are paired with a [[TRAS]] aiming screen (in that case, the keyframes of the TRAM do not correspond to a timeline, but rather to several looking/aiming directions: thus the pose for a generic direction is interpolated from several key poses). I may be out of touch, but I don't remember bone  number 11 (or is it 0x0A?) as being hardcoded, i.e., there is nothing special about the head AFAIK; however, weapons are hard-coded to be attached to the right (or left) wrist, i.e., they have the same parent as bone number 0x12 or 0x0E. Hope that helps (then again, no, what I ''really'' hope for is a game-ready Iron Demon ^_^ ) --[[User:Geyser|geyser]] 23:34, 22 May 2011 (UTC)
:If by "head view animation" you mean aiming and looking around, then that information is in those special overlay TRAMs that are paired with a [[TRAS]] aiming screen (in that case, the keyframes of the TRAM do not correspond to a timeline, but rather to several looking/aiming directions: thus the pose for a generic direction is interpolated from several key poses). I may be out of touch, but I don't remember bone  number 11 (or is it 0x0A?) as being hardcoded, i.e., there is nothing special about the head AFAIK; however, weapons are hard-coded to be attached to the right (or left) wrist, i.e., they have the same parent as bone number 0x12 or 0x0E. Hope that helps (then again, no, what I ''really'' hope for is a game-ready Iron Demon ^_^ ) --[[User:Geyser|geyser]] 23:34, 22 May 2011 (UTC)




===How about more body parts?===
===How about more body parts?===
[http://www.youtube.com/watch?v=1UuesYUvyAk HERE's] a quick and dirty test. (Done on PC.)
Here's a quick and dirty test (<nowiki>https://www.youtube.com/watch?v=1UuesYUvyAk</nowiki>, dead link). (Done on PC.)


So far Oni allows 19 body parts. The vid shows a character with 20 parts. He was roughly put together (via xml) and is made of heads... (Duuno why he hasn't textures.) You can access the used files [http://dl.dropbox.com/u/139715/OniGalore/talk/20_body_parts.rar HERE].
So far Oni allows 19 body parts. The vid shows a character with 20 parts. He was roughly put together (via xml) and is made of heads... (Duuno why he hasn't textures.).
 
[[Image:TRBS_hit_on_20th_bone.jpg|thumb]]
[[Image:TRBS_gun_fire_on_20th_bone.jpg|thumb]]


{| border=0 cellspacing=20 cellpadding=0 align=right
|
[http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/onisplit_stuff/screen_shot00080.jpg http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/onisplit_stuff/screen_shot00080_TN.jpg]
[http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/onisplit_stuff/screen_shot00085.jpg http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/onisplit_stuff/screen_shot00085_TN.jpg]
|}
There are some known and unknown problems. At least he made it into the game. ^_^ As we see in the vid the 20th body part has collision data and becomes recognized by AI as a obstacle. It also reacts on incoming attacks and has self-imunity (you cannot hurt yourself by weapon and melee).
There are some known and unknown problems. At least he made it into the game. ^_^ As we see in the vid the 20th body part has collision data and becomes recognized by AI as a obstacle. It also reacts on incoming attacks and has self-imunity (you cannot hurt yourself by weapon and melee).


TRAM files with 20 bones are possible (via old xml method) but they refuse to become incorporated into the raw file archive. (onisplit will even stop you at the oni-file creation if you use the newer conversion method (dae and xml).
TRAM files with 20 bones are possible (via old xml method) but they refuse to become incorporated into the raw file archive. (onisplit will even stop you at the oni-file creation if you use the newer conversion method (dae and xml).
On a side note: the aiming animation was affecting the new part. Why? I dunno.
Sure more tests are needed. :/
'''Thought on Oni / Onisplit modifications'''
Maybe this whole 19+ thing requires engine modding too but that's what I think what should be tried before.
:* changing limit variable from 19 to 32
:: for ONCC's CBPM (materials) and CBPI (HitImpacts, BlockedImpacts, KilledImpacts) (unsure if this work)
:: for TRBS (dae-to-oni import) (this should work because the old xml way does already)


:* allow import of up-to-32-bones-TRAM.dae files ([[OBD:TRAM/raw0x34#Compression_size_6|???]])
Probably this whole thing falls under the rubric "too difficult to achieve". --[[User:Paradox-01|Paradox-01]] 16:18, 14 May 2011‎
:* allow creation of raw archives with such TRAMs


http://i305.photobucket.com/albums/nn207/unknownfuture/Oni_Galore_Images/onisplit_stuff/no_raw_file_for_20-bones-TRAM.png
{{OBD}}

Latest revision as of 14:15, 13 May 2022

Old talk

New 19-bone TRIA

Basically, a 4-legged (19-bone) character would be playable if we create enough new TRAM files.

An open question is how we force the head to be the 11th part when we use the auto-TRIA-creation of onisplit v0.9.52.0. I dont't know whether head view animation are hardcoded or stored inside the TRAC/TRSC.

If you test the given files you can notice that the mouse axis are wrong. This might ceome from the mistake in the dae file. Haven't checked yet. --Paradox-01 14:47, 15 May 2011

If by "head view animation" you mean aiming and looking around, then that information is in those special overlay TRAMs that are paired with a TRAS aiming screen (in that case, the keyframes of the TRAM do not correspond to a timeline, but rather to several looking/aiming directions: thus the pose for a generic direction is interpolated from several key poses). I may be out of touch, but I don't remember bone number 11 (or is it 0x0A?) as being hardcoded, i.e., there is nothing special about the head AFAIK; however, weapons are hard-coded to be attached to the right (or left) wrist, i.e., they have the same parent as bone number 0x12 or 0x0E. Hope that helps (then again, no, what I really hope for is a game-ready Iron Demon ^_^ ) --geyser 23:34, 22 May 2011 (UTC)


How about more body parts?

Here's a quick and dirty test (https://www.youtube.com/watch?v=1UuesYUvyAk, dead link). (Done on PC.)

So far Oni allows 19 body parts. The vid shows a character with 20 parts. He was roughly put together (via xml) and is made of heads... (Duuno why he hasn't textures.).

TRBS hit on 20th bone.jpg
TRBS gun fire on 20th bone.jpg

There are some known and unknown problems. At least he made it into the game. ^_^ As we see in the vid the 20th body part has collision data and becomes recognized by AI as a obstacle. It also reacts on incoming attacks and has self-imunity (you cannot hurt yourself by weapon and melee).

TRAM files with 20 bones are possible (via old xml method) but they refuse to become incorporated into the raw file archive. (onisplit will even stop you at the oni-file creation if you use the newer conversion method (dae and xml).

Probably this whole thing falls under the rubric "too difficult to achieve". --Paradox-01 16:18, 14 May 2011‎