[Soc-2005-dev] Inverse Kinematics

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Jul 27 18:54:31 CEST 2005


Hi,

Ton Roosendaal wrote:
> Hi,
> 
>> Well, my proposal is to have 3 checkboxes to disable/enable the
>> X/Y/Z DOF's, and 3 upper + lower limits for their angles, just like  most
>> other apps.
>>
>> The difference from Euler angles would be in how these values are
>> interpreted. Euler angles are three sequential rotation (in blender ZYX
>> I think). What I propose is:
>>
>> Y (roll) is always the last rotation, after a swing over the X and/or  
>> Z axes.
> 
> 
> Well... then it's a local transform, so actually you do it first (pre  
> multiplied). :)

Yah, depends on your notation :).

>> If both X and Z are enabled, the swing part is defined as a direct  
>> rotation
>> (axis-angle) to compute the x and z parameters. Otherwise, the swing
>> part is a simple rotation over the X or Z axis.
>>
>> This would only affect the interpretation of the upper/lower limit  
>> values.
>>
>> Advantages:
>> - parameters are more intuitive
>> - singularity at 180° instead of 90°
>> - no weird rotation order switching to avoid singularity
> 
> 
> I don't get the 'swing' then, it will get 2 parameters (for X and Z).  
> Will that enable an oval swing 'space' or so?
> But sound good to me!

Swing basically defines a region on a sphere, so it defines in
which directions the bone can point. For example figure 9 in
this (very nice) paper on the topic:
http://vrlab.epfl.ch/~boulic/Publications_html/2000/AVATAR.pdf

And yes, this can define an oval swing region, that's what I
coded just now actually. Looks much more natural than a
rectangular region.

Even a polygon would be possible for more complex joints
like a shoulder. But can look at that later.

Brecht.


More information about the Soc-2005-dev mailing list