Rocket Club:
Home PageCommunity:
Bulletin Board
Developer Pages:
Overview
Developers:
Development_Notes
Synthetic Reality
|
Inverse
KineWHATics? Um... in the world of 3D model
animation there are two basic schools of thought.
One is that the computer should do everything.
You tell it that your four legged creature is
'running' and it works out how each leg should be
bent in every display frame so as to give the
illusion of running, while at the same time feet
connect with the ground realistically, the chest
heaves with each breath, and the Klargon
Warrior-Slave riding the beast also bounces up
and down appropriately.
The other school
says "Man, that looks awful!" and
realizes that humans are very discerning when it
comes to noticing un-realistic body motion. Even
more so with animals they have experience with
(people, horses, dogs, etc.) This group feels
only a talented artist has any hope of making an
animation look believable.
Well, OK,
there's the third group that likes putting on
blue suits covered with ping pong balls and
dancing around in an empty room while a computer
with a camera takes notes.
The point is
that the first group has some initial startup
issues and after that can have an infinite
variety of animations for free. Animations that
do, in fact, probably look a little sucky. But
the second two groups either have to pay top
dollar to an animator, or buy a lot of extra ping
pong balls, for every new animation they need.
Oh, sorry,
inverse kinematics is the task of figuring out
"What angle do I need to bend the knee so
that his foot is on the ground, when his hip is
right HERE. (i.e. given the end point constraints
caused by gravity, ground, and previous motion,
figure out all the in-between values for joint
rotations.. preferably without actually bending
things in directions which would normally make a
real animal scream)
|
Which
School does Rocket Club Attend? Rocket Club waffles. For
each animatable object, Rocket Club expects you
to create a certain number of 'poses' (animation
keyframes). For example, your little creature
standing, sitting, jumping, etc. Some actions
require multiple poses (walking requires you to
make 8 poses).
At any given
time, your little creature is moving FROM one
pose and TOWARDs a new pose. The computer then
calculates all the in-between frames
automatically, and then does a little IK work
(try to say IK (inverse kinematics) as much as
possible, so you sound really smart. If someone
challenges you on it, just say "which
quaternion library do you use?" (I wrote my
own!)) for special things like gluing your feet
to the ground (when appropriate) or your butt to
the ejection seat.
Rocket club can
also (or at least plans to) inject a little
random variance to add a little spice and
individuality. Eventually I have to get to the
spot where monsters can 'bite' you and at that
point there will be a lot of fudging to make them
turn their head in a way to look dangerous.
Also, rocket
club is set up to re-use animations with
different objects, so, for example, all bipedal
two-armed creatures COULD share an animation.
Admittedly I have not gotten this to work very
well yet, sorry.
|
So Why
Bring This Up Now? I needed a spot to
document the frame numbers I am using, since
right now they must be the same for all
animations. Eventually I may allow the plan file
to override via some sort of intermediary
animation hints file. (Something like "use
animation from THIS model file HERE, and use
frame 34 for the flying frame")
So, the rest of
this page is just what each of the frames are
for. Hopefully with a visual example:
- POSEStandingIndex
(1) // the rest pose we return
to between other poses
- POSEWalkingIndex
(10) // first of 8
poses for walking
- POSEDrivingIndex
(20) // Seated in
vehicle
- POSERidingIndex
(22) // Riding an
animal
- POSESeatedIndex
(24) // sitting in a
chair
- POSESquattingIndex
(26) // cross legged
on the ground
- POSEJumpingIndex
(28) // in mid jump
- POSEFlyingIndex
(29) // Superman in
flight
Pose numbers are
Milkshape animation frame numbers. Note that
animations include not only the angles of every
joint, but also a position offset. When an
animation is played, it does not modify the
action physical location of the 'root' of the
character. Hence an animation which is to be used
for 'sitting cross legged on the ground' will
actually offset the whole model to be 'below' the
root node (which will be about 1 meter above the
ground).
There is no
substitute for experience here, so good luck! I
personally have experienced some frustration in
this process and had to re-do my work a lot
(mainly when I neglected to select all the bones
I needed). I strongly advise carefully keeping
backups of the file BEFORE you start to fiddle
with the animation, and don't just overwrite it
when you're done, at least not until you have
THOROUGHLY confirmed that you didn't break
anything. I advise just frequently saving to
files with ever increasing version numbers, so
you can always go back to some previous version
and start over.
|
POSEStandingIndex
(1) // the rest pose we return to
between other poses
POSEWalkingIndex
(10) // first of 8 poses for walking
POSEWalkingIndex
(11) // 2nd of 8 poses for walking
POSEWalkingIndex
(12) // 3rd of 8 poses for walking
POSEWalkingIndex
(13) // 4th of 8 poses for walking
POSEWalkingIndex
(14) // 5th of 8 poses for walking
POSEWalkingIndex
(15) // 6th of 8 poses for walking
POSEWalkingIndex
(16) // 7th of 8 poses for walking
POSEWalkingIndex
(17) // 8th of 8 poses for walking
POSEDrivingIndex
(20) // Seated in vehicle
POSERidingIndex
(22) // Riding an animal
POSESeatedIndex
(24) // sitting in a chair
POSESquattingIndex
(26) // cross legged on the ground
POSEJumpingIndex
(28) // in mid jump
POSEFlyingIndex
(29) // Superman in flight
|
|
|