06-17-2016, 03:49 PM
Has anyone figured out the bone rotation calculation for the OMO files?
It's the only one that I cannot make sense of.
I'll put all the information here if someone can figure it out. I don't really know how to format and explain this very well, though...
---------------------------------------------------------------------------------------------------------------------------------------------------------------
So here is the values I'm trying to get:
1.093467 -0.7491351 1.719104
These are the rotation values on the hip bone for the first frame of Bayonetta's run cycle (yes I know for a fact these are accurate from in-game research)
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Now here is the information the file has to get those those values.
This is the bone's t-pose rotation values:
1.570796 -0.140513 1.570796
Now, the coordinates for the animation are interpolated between two given values. For this bone, here they are:
X 0.50319177 Y 0.07790809 Z 0.53269935
X 0.26636285 Y 0.3868885 Z 0.23858005
The interpolation values for the first frame are:
0.18551919 0.21870756 0.8119631
So the interpolated values calculated in the same manor as the translation (which is correct) are this:
0.5526072 0.16252354 0.72641754
These values aren't even close to the expected ones, so I'm not sure what to do with them.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
(1st Coordinate Value) + (2nd Coordinate Value) * (Interpolated value)
That is the seemly correct formula for calculating the translation values.
So here is an example of how the translation calculation works for this bone.
Info for translation coordinates:
X -0.081674 Y -1.756892 Z 0.833183
X 0.210284 Y 0.805438 Z 0.769363
0.04893568 0.8805066 0.15428397
So using the above calculation on the X coordinate: (-0.081674) + (0.210284) * (0.04893568) = -0.07138361
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Expected Translation values for this frame:
-0.071381 -1.047687 0.9518849
Calculated values:
-0.07138361 -1.0476985 0.9518834
Works near perfectly with slight rounding errors, and it seems to work for every frame.
So that's where I'm stuck. If given this information you can figure out how to make the rotation values be near the expected ones, then I could make an smd and maybe fbx animation convertor.
It's the only one that I cannot make sense of.
I'll put all the information here if someone can figure it out. I don't really know how to format and explain this very well, though...
---------------------------------------------------------------------------------------------------------------------------------------------------------------
So here is the values I'm trying to get:
1.093467 -0.7491351 1.719104
These are the rotation values on the hip bone for the first frame of Bayonetta's run cycle (yes I know for a fact these are accurate from in-game research)
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Now here is the information the file has to get those those values.
This is the bone's t-pose rotation values:
1.570796 -0.140513 1.570796
Now, the coordinates for the animation are interpolated between two given values. For this bone, here they are:
X 0.50319177 Y 0.07790809 Z 0.53269935
X 0.26636285 Y 0.3868885 Z 0.23858005
The interpolation values for the first frame are:
0.18551919 0.21870756 0.8119631
So the interpolated values calculated in the same manor as the translation (which is correct) are this:
0.5526072 0.16252354 0.72641754
These values aren't even close to the expected ones, so I'm not sure what to do with them.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
(1st Coordinate Value) + (2nd Coordinate Value) * (Interpolated value)
That is the seemly correct formula for calculating the translation values.
So here is an example of how the translation calculation works for this bone.
Info for translation coordinates:
X -0.081674 Y -1.756892 Z 0.833183
X 0.210284 Y 0.805438 Z 0.769363
0.04893568 0.8805066 0.15428397
So using the above calculation on the X coordinate: (-0.081674) + (0.210284) * (0.04893568) = -0.07138361
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Expected Translation values for this frame:
-0.071381 -1.047687 0.9518849
Calculated values:
-0.07138361 -1.0476985 0.9518834
Works near perfectly with slight rounding errors, and it seems to work for every frame.
So that's where I'm stuck. If given this information you can figure out how to make the rotation values be near the expected ones, then I could make an smd and maybe fbx animation convertor.