BlenderOni: Difference between revisions

From OniGalore
Jump to navigation Jump to search
(Added Options, Use cases, changed History a bit)
(→‎Options: Described first three options)
Line 12: Line 12:


==Options==
==Options==
To be further described
===Bake Keyframe Rotation Mode===
===Bake Keyframe Rotation Mode===
Keyframes the rotation data in the selected rotation mode for every selected object, for every frame in the specified frame range. Usually used for converting rotation data from Euler angles to Quaternions if needed.


===Change Rotation Mode===
===Change Rotation Mode===
Changes the rotation mode of every selected object to the selected rotation mode.


===Adjust Throw Target===
===Adjust Throw Target===
Moves the selected object by the specified offset for every frame in the specified frame range.
If the "Adjust and rotate throw target" operation is selected, the object will also get rotated by 180 degrees in the frame range.
If the "Adjust back throw target" operation is selected and the object's location is not { X , Y } = { 0 , 0 }, it gets moved to { X , Y } = { 0 , 0 }.
Used for adjusting the position of the throw target animation, both for forward (Adjust and rotate throw target) and back (Adjust back throw target) throws.
If you are importing an animation from Oni, the X, Y and Z fields are supposed to be taken from the <Position> tag. The position tag has the following order:
<pre><Position>x y z</Position></pre>
BlenderOni takes them in a different order due to differences in axis orientation:
<pre> X: x, Y: -z, Z: -y</pre>
So given the following <Position> tag with the following example values:
<pre><Position>1 2 -3</Position></pre>
The arguments in BlenderOni should be as follows:
<pre> X: 1, Y: 3, Z: -2</pre>
If you have created a new animation and want to adjust it back to { X , Y } = { 0 , 0 }, then the X and Y arguments will be the inversions of the X and Y location coordinates of the throw target's pelvis in the first frame of the animation. Z should be set to 0. The new resulting <Position> tag should be created using the order schematic above, with the exception of the height (Blender Z, <Position> y) - this value is mostly taken from other TRAMs and adjusted in a trial-and-error manner until the animation looks okay on most characters.
This is because the height adjustment is one and the same for every character type, regardless of their height - so if you pick the right height, smaller characters will float off the ground and the tallest ones will sink into it, while average height characters should have their feet on the ground.


===Object Constraint Switch===
===Object Constraint Switch===


===Bone Constraint Switch===
===Bone Constraint Switch===

Revision as of 20:56, 16 May 2022

Note to self: no more pizza before bed! Nightmares!

BlenderOni is a Blender add-on intended as an integral companion tool for the Animation rig for Blender. It contains functionalities that automate a lot of operations necessary for the rig to function and be used properly. However, the vast majority of the add-on's options can also be used for general Blender tasks.

BlenderOni can be downloaded HERE.

History

When the Rigify-Oni rig was first released to the public, it was meant to be used together with a number of scripts stored within the Blender scene containing the rig. However, those scripts were not ideal - they were awkward to use as setting up the appropriate values was possible only by changing the script code.

Those scripts have become obsolete with the introduction of BlenderOni, which is essentially little more than those scripts wrapped into a GUI. The scripts are nonetheless archived HERE for legacy purposes.

Options

Bake Keyframe Rotation Mode

Keyframes the rotation data in the selected rotation mode for every selected object, for every frame in the specified frame range. Usually used for converting rotation data from Euler angles to Quaternions if needed.

Change Rotation Mode

Changes the rotation mode of every selected object to the selected rotation mode.

Adjust Throw Target

Moves the selected object by the specified offset for every frame in the specified frame range. If the "Adjust and rotate throw target" operation is selected, the object will also get rotated by 180 degrees in the frame range. If the "Adjust back throw target" operation is selected and the object's location is not { X , Y } = { 0 , 0 }, it gets moved to { X , Y } = { 0 , 0 }.

Used for adjusting the position of the throw target animation, both for forward (Adjust and rotate throw target) and back (Adjust back throw target) throws.

If you are importing an animation from Oni, the X, Y and Z fields are supposed to be taken from the <Position> tag. The position tag has the following order:

<Position>x y z</Position>

BlenderOni takes them in a different order due to differences in axis orientation:

 X: x, Y: -z, Z: -y

So given the following <Position> tag with the following example values:

<Position>1 2 -3</Position>

The arguments in BlenderOni should be as follows:

 X: 1, Y: 3, Z: -2

If you have created a new animation and want to adjust it back to { X , Y } = { 0 , 0 }, then the X and Y arguments will be the inversions of the X and Y location coordinates of the throw target's pelvis in the first frame of the animation. Z should be set to 0. The new resulting <Position> tag should be created using the order schematic above, with the exception of the height (Blender Z, <Position> y) - this value is mostly taken from other TRAMs and adjusted in a trial-and-error manner until the animation looks okay on most characters.

This is because the height adjustment is one and the same for every character type, regardless of their height - so if you pick the right height, smaller characters will float off the ground and the tallest ones will sink into it, while average height characters should have their feet on the ground.

Object Constraint Switch

Bone Constraint Switch

Object Visual Transformer

Bone Visual Transformer

Set Object Constraint Targets

Set Rig Bone Constraint Targets

Constrain Character Model

Use cases

To be further described, but probably best to link to the rig documentation