Bones Pro 1.5
<<When an object is created and modified in the 3D editor a transformation
matrix is established for the objects position, rotation, scaling, etc…any
changes made to this object at frame 0 (zero) in the keyframer will only
compound the matrix, unless you normalize it with the Reset XFORM command in
the 3D editor.>>
Thats partially correct. The rotation and translation operations are stored in
the translation matrix for a 3D Editor object, while the scaling isn't. The
reason is that certain transformations performed in a given order mean that the
transformation matrix can't be inverted. If the matrix can't be inverted then
the object can't be repositioned and realigned to object coordinates ready for
the Keyframer. So the scaling is applied, like all other tranformations,
directly to the object vertices but it not stored for inverting later.
The problem only arises if you change the scale at frame 0 in the Keyframer.
There is no problem rotating a bone at the first frame. The reason is that
Bones Pro assumes that no scaling has been done on the first frame. This is an
adequate assumption since all objects when they initially come from the 3D
Editor have a scale of 1.0. The problem is that Bones Pro doesn't check to see
if in the Keyframer that the scale has changed for the first frame. Instead it
assumes it is always 1.0, when in fact it could be anything the user inputs.
This is why Reset X Form corrects the problem. By using Reset X Form the
transformation matrix is reset to identity and, most importantly, the scaling
shown at frame 0 is 1.0 in the Keyframer. The side effect is that you lose the
object's local orientation which sometimes means that boxes are no longer
aligned with their local axiis.
So when you set the scale to something other than 1.0 in the Keyframer(not in
the 3D Editor) Bones Pro goes batty. For instance if you set the scale to 2.0
at the first frame and don't do any other scaling for the rest of the
animation, after the first frame the object will be scaled twice as big. This
is because Bones Pro assumed the scale was 1.0 at frame 0, when in fact it was
2.0. So Bones Pro sees it like this…
Scale
Frame 0: 1.0
Frame 1: 2.0
…
When in fact it is…
Scale
Frame 0: 2.0
Frame 1: 2.0
…
The reason why Bones Pro scales up the boned mesh is that it thinks the bone
changed from a scaling of 1.0 to a scaling of 2.0 after frame 0, when in fact
it didn't change at all. What Bones Pro needs to do is look at frame 0,
determine what scale is used, rather than assuming 1.0, and then apply the
deformations during the animation RELATIVE to the initial scale. If the initial
scale is 2.0 then all further scales should be calculated relative to this
initial scale. So a scaling of a bone of 4.0 would cause a doubling in the size
of the mesh object, not quadrupling, while a scale of 2.0 wouldn't change the
mesh since this was the initial value.
I hope they fix this problem since you often have to do alot of changes to
bones in order to get it right and having to go through the unlink, Reset X
Form, link process everytime you rescale a bone in the Keyframer is a pain.
Especially when you have a lot of objects and a lot of frames!
<<Because Bones Pro creates object transformation data starting at frame 0
(zero) any un-normalized scaling and rotational data will be transfered to the
mesh>>
This is another reason why they it should work relative to the transformation
matrix at frame(0) rather than assuming that the scaling has been normalized.
<<After being tormented with the same problem I thought I would share my
research into a possible cause.>>
Thanks Roy, it always good to hear the same war stories from others.
DaviD "down in the trenches" GouID