Part 2 - Frame Editing
A basic frame looks like this
rpl code:
FRAME 0; 552 0 0 552
JOINT 0; 0 3 1 3 2 1 3 3 4 3 5 4 6 3 7 3 8 4 9 3 10 3 11 3 12 4 13 2 14 4 15 1 16 4 17 4 18 3 19 3
POS 0; 1.00000000 0.90000004 2.59000014 1.00000000 0.94999999 2.14000010 1.00000000 0.94999999 1.89000010 1.00000000 1.00000000 1.69000005 1.00000000 1.05000001 1.49000000 0.75000000 0.94999999 2.09000014 0.44999999 0.94999999 2.24000000 0.05000000 0.94999999 2.24000000 1.25000000 0.94999999 2.09000014 1.54999995 0.94999999 2.24000000 1.95000005 0.94999999 2.24000000 -0.34999999 0.90000004 2.24000000 2.34999990 0.90000004 2.24000000 0.80000001 1.05000001 1.39000010 1.20000005 1.05000001 1.39000010 0.80000001 1.05000001 1.04000007 1.20000005 1.05000001 1.04000007 1.20000005 1.05000001 0.43999999 0.80000001 1.05000001 0.43999999 0.80000001 0.94999999 0.04000000 1.20000005 0.94999999 0.04000000
QAT 0; 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000
LINVEL 0; 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
ANGVEL 0; 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
JOINT 1; 0 3 1 3 2 3 3 4 4 4 5 4 6 4 7 4 8 4 9 4 10 3 11 3 12 3 13 3 14 3 15 3 16 3 17 3 18 3 19 3
POS 1; 1.00000000 -1.09999996 2.59000014 1.00000000 -1.14999992 2.14000010 1.00000000 -1.14999992 1.89000010 1.00000000 -1.19999993 1.69000005 1.00000000 -1.24999994 1.49000000 1.25000000 -1.14999992 2.09000014 1.55000001 -1.14999992 2.24000000 1.95000000 -1.14999992 2.24000000 0.75000000 -1.14999992 2.09000014 0.45000005 -1.14999992 2.24000000 0.04999995 -1.14999992 2.24000000 2.34999999 -1.09999996 2.24000000 -0.34999990 -1.09999996 2.24000000 1.19999999 -1.24999994 1.39000010 0.79999995 -1.24999994 1.39000010 1.19999999 -1.24999994 1.04000007 0.79999995 -1.24999994 1.04000007 0.79999995 -1.24999994 0.43999999 1.19999999 -1.24999994 0.43999999 1.19999999 -1.14999992 0.04000000 0.79999995 -1.14999992 0.04000000
QAT 1; 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000
LINVEL 1; 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
ANGVEL 1; 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
However like previously we'll only be looking at the necessary parts.
- FRAME
- LINVEL
- ANGVEL
- CRUSH
- FRAC
- JOINT
- QAT
- POS
FRAME is the current frame, number after the command being what frame it is, however from my knowledge the numbers after the semicolon are internal things as i have modified them and nothing has changed.
LINVEL is linear velocity, So let's get into it.
rpl code:
ANGVEL 0; 3.887897 2.909421 0.859350 3.887976 2.905716 0.857180 3.884751 2.873996 0.889672 3.801628 -1.914417 -0.648312 3.828268 -1.942320 -0.647967 3.883252 2.917695 0.828853 3.839391 0.039181 -0.125350 3.835047 0.004155 -0.026220 3.888485 2.906720 0.858142 3.809940 -2.663626 -0.960868 3.829347 -2.628224 -1.069299 3.835392 0.004387 -0.028577 3.829121 -2.628964 -1.067829 3.842651 -1.269504 -0.436902 3.818576 -1.877246 -0.630992 -8.050213 -0.769011 -1.577571 -5.661578 -1.299420 -2.076931 -1.054843 -1.630641 -1.343465 0.925293 -1.115907 -0.713256 0.915214 -1.114438 -0.720016 -1.053842 -1.642086 -1.330327
This may look complicated, but once you understand it, it really isn't.
Every 3 numbers is a linear (constant) velocity on a body part, a list of each part can be found below:
text code:
0 - head
1 - breast
2 - chest
3 - stomach
4 - groin
5 - r_pecs
6 - r_biceps
7 - r_triceps
8 - l_pecs
9 - l_biceps
10 - l_triceps
11 - r_hand
12 - l_hand
13 - r_butt
14 - l_butt
15 - r_thigh
16 - l_thigh
17 - l_leg
18 - r_leg
19 - r_foot
20 - l_foot
ANGVEL is sort of the same as LINVEL, it is just the angular force on the joints.
CRUSH this isn't in my example, but this is where things get interesting.
rpl code:
CRUSH is the command, number after it represents which player shall be 'crushed'/dismembered, 0 being tori and 1 being uke. The number(s) after it represent what joints to dismember. As before here is the list of joints for this command.
text code:
0 = neck
1 = chest
2 = lumbar
3 = abs
4 = right pec
5 = right shoulder
6 = right elbow
7 = left pec
8 = left shoulder
9 = left elbow
10 = right wrist
11 = left wrist
12 = right glute
13 = left glute
14 = right hip
15 = left hip
16 = right knee
17 = left knee
18 = right ankle
19 = left ankle
FRAC is basically the same thing as CRUSH, however instead of dismembering the joint, it rather fractures it, renders the joint useless.
I don't need to list the joints as they are listed above.
JOINT is the last thing we will look at, as it is the most dangerous to edit, as it could potentially ruin your replay if edited incorrectly. So without further ado, Here we go.
rpl code:
JOINT 0; 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 10 4 11 4 12 4 13 4 14 4 15 4 16 4 17 4 18 4 19 4
JOINT is the command. The number after it is the player to edit, oonce again 0 being tori, and 1 being uke. Now for the numbers after it, it is simply the joint number/id, and it's current state. once again the joint id's can be found previously. for the states however they are as follows.
text code:
1 = extend/right rotate/right bend
2 = contract/left rotate/left bend
3 = hold
4 = relax
QAT stands for quaternion (thanks pusga), which is escentially a really complicated rotational thing dealing with math, but to simplify it:
rpl code:
QAT 0; 0.700000 0.000000 0.200000 0.000000 etc etc ...
Just think of it as a fancy vector. It comes in batches of 4 values instead of the regular 3 for the x y z axis, but the only reason it has 4 values instead of 3 is because multiplying 2 different imaginary numbers is bullshit, in reality you should treat its 4 values (w x y z) as follows:
x is "vertical" rotation, it has values between -1 and 1, for example when applied to tori's head, negative values make you look up and positive values make you look down.
y makes the bodypart lean left and right, like the picture. Values are between -1 and 1, positive makes it lean left and negative makes it lean right.
z makes you look left and right (when applied to the head), values are between -1 and 1, positive makes you look left and negative makes you look right.
w is the overall "intensity" of the rotation, it seems to be a way to increase the amount of rotation on all 3 axis simultaneously. Its values go from 1 to 0, 1 having no effect at all, and values closer to 0 having stronger rotation (regardless of your x y z values, having 0 on the w value seems to always make it so that the rotation is the steepest possible or fuck it up completely, so if you want a steep rotation you probably want to use a value around 0.1).
the first number is the body part id, which can be viewed above.
POS is position in space, simple xyz coordinates of each bodypart.