# Posts tagged ‘Inverse Kinematics’

So Ive been away on vacation over the past two weeks in beautiful Montreal (an amazing city). I had time to think about rigging, ways to break it up and what it is at its heart: intergrating systems.

Rigging can be regarded as modular in one sence and choatic in another. It can also be though of a group of systems that interact with each other in simple and hybrid types of ways. There are three main ‘Driven Systems’ at its heart:

Kinematic – the animator drives the rig with keyframes, purely controlling the puppet and f-curves

Procedural – the animator drives values which adds automatic driven motion, the wave if you will doesnt however have to be procedural and handmade in a fourier synthetic way.

Dynamic – the animator drives controls in which there ‘children’ act in a physically based way. The controls themselves could also act dynamic.

Theses are the bases, but many hybrid versions of these can be combined, waves driving dynamics for instance. A rig should only support this if its really really neccesary – we need to understand what a rig needs. At its heart is what the animator wants, especially interms of control. But we can also make our own assumptions and give some basic rules in constructing a rig:

1. A rig is a series of systems.

This can be a hard idea to understand, but if we treat a part of a rig as a system than a series of joints (more of an outwardly looking in analysis), we can work out what we need. A good example is a tentacle – because were are treating this entirely as a system – e.g. a splineIK base with a layer of FK controls. The tentacle is treated as a whole unit and this is how we should look at it when rigging. Lets break it down:

A tentacle that needs to be fk, dynamic, driven and procedural – we’ll first off we can pair these together fk/procedural and dynamic/driven as a system. By doing this we can see that the fk/procedural can ‘ride’ the dynamic driven system. And this dynamic driven system itself can be treated as one: A dynamic chain solution that rides a bezier spline based on tension, and a fk procedural system that rides this in tern.

A tentacle is essentially an easy example as we regard it as unit, but can this be the same for a wing, leg or even spine? A spine or torso can be summed up as three independant units that are glued together either or additionally by a positon or a main control. It can be regarded as a system. A wing is essentially an arm, that feathers ride along and intern have dynamics (air resistance etc)

I posted this at cgtalk

Has anyone though of using VCK with a transposed arc length method to get rotations about the elbow? Basically VCK ‘vector coupled ik’ is an ik chain driven by the vector magnitude to positioning the goal whilst having standard rotation for general fk, it basically allows you to break the ik and add nice arcs to the animation – the problem i see with it is you cant drive about the elbow. But what if we use a transposed arch length method, which would ontop drive the general rotation and the magnitude we could get rotation about the elbow- this could even have its own fk controller driving additively over the top i think -you need just a few variables such as bone length, as you drive it as an additive to the main control i.e a layer over the top.

I now must go to bed.

I was reading up on the stunning work Crytek are doing in Germany – they mention ccd-ik as one approach to parametric animation. CCDIK or ‘Cyclic-Coordynate Descent Inverse kinematics’ is a simple non-analytical approach to IK that doesnt envolve trigonometry, locking bone chains to two or even a deterministic ik goal – the goal with this system can be anywhere, and so can the number of bones in the chain and where the ik starts and ends from.

I’ll look into this more – i have a funny idea that CAT tools use the same approach to FIK.

Edit:  I dont know how the swivel/pole vector is handled, but I have some ideas.

I thought about an idea for unifying an fk/ik system today – using a single fk chain driven by a detached wrist to define a hypotenuse, to make it act like IK. And driving the same wrist with weak node referencing, and storing two matrix3 values driving its transform space so it stays glued to the end of the elbow joint. Rotation would use the same method.

So you would move the wrist, and in doing so define the 3 lengths needed for ik solution (2 of the lengths are constant unless you introduce stretching). And when you rotate the bones – on another float_list (bezier controller) you drive the transform positional space of the wrist, keeping it glues to the end of the elbow.

Weak referencing could also be used for gluing the knee control to the knee, and also a control at the elbow to break it, stretch it etc.

Some issues maybe doubling of transforms, plus controlling the elbow. Also pulling the wrist too far from the the ik solution – this i think could be fixed.