I'm using a combination of keyframe and (cheap) skeletal animation for my
characters.  Well, not true "skeletal", but fully jointed models (torso,
hips, knees, shoulders, elbows), and then I come up with joint and bone
rotation and transformation info (roughly modelled in Max).  Each body part
is loaded with the rotation joint at the origin, rotated, and transformed to
the correct location.

Then a real simple interpolator creates the transition from any orientation
to any other orientation, and a sequencer controls the transition from
keyframe to keyframe.

The "bones" are each contained in a tranform group, starting with the torso
at the top, then the upper arms/upper loegs ad head, then the lower
arms/lower legs.  Each transform group affects all the children, making this
really simple.

This whole thing took me about 2 hours to put together in code.  Took much
more time to come up with the various joint transforms and rotations.  But
the cool thing is there's no limit to the combinations of animations, and
more sequences don't have a performance or memory impact, as mesh morphing
would.

The over head for adjusting the transformation/rotation of all the "bones"
(which are really just body parts), for one character every single frame, is
about 8 FPS (when running at a normal average of 120FPS). For the other
characters within viewing range, I only run the joint animation when they're
fairly close to the viewer...

Scott
Virtopia 2 3D Project
http://vp2.onebigvillage.com
----- Original Message -----
From: "Chris Forrester" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, April 22, 2002 4:55 PM
Subject: Re: [JAVA3D] Animation


> Character Animation = FAQ material.
>
> Keyframe animation is the speediest way to go, since you can use very
simple
> interpolation routines for smooth animation, and just feed that into the
> TransformGroup. Plus with this, you can share vertex information with
BYREF
> arrays to save lots of memory.
>
> Morph animations, which is what you are talking about with 1 & 2, are by
far
> the worst way to go for character animations. Huge, huge memory
consumption,
> and you cannot do LOD's on this either (well you can, but the memory for
> this is insane, since you will need 2d arrays of vertex information).
>
> The third option is what you want, and for finely detailed animation you
> will want bones animation. For this, you will have increased memory
> consumption because you cannot share vertex info (since they will all be
> updated with the bones information)
>
> So, you should read animation directly from max (and if you haven't worked
> with maxSDK before, there will be many a sleepless night hacking around
all
> the inconsistancies that will pop up), and either use the rotation values
of
> the components for a simple keyframe solution, or use the bones
information
> in max to set up skeletons and then integrate that with your other
> transforms in your application.
>
> Needless to say, since you will have to code everything yourself (Though I
> will release my 3dsmax exporter soon, and it contains keyframe animation
> support), this will be a daunting task indeed.
>
> And.. optimizing everything and creating countless remapping tables for
> geometry/texture/materials will take a lot of time, too, and must - MUST -
> be planned for from the beginning.
>
> Good luck, and if you need any help, feel free to email me.
>
> >From: Chad Zalkin <[EMAIL PROTECTED]>
> >Reply-To: Discussion list for Java 3D API <[EMAIL PROTECTED]>
> >To: [EMAIL PROTECTED]
> >Subject: [JAVA3D] Animation
> >Date: Mon, 22 Apr 2002 14:46:32 -0600
> >
> >What is the best way to do Character animation?  I will have a potential
> >for a large (could be 20 or 30 or more) number of characters on the
screen
> >at any given time, all animated.  (I am willing to LOD the characters as
> >more than 10 or so come on screen if I need to, but I hope I can void
that
> >and have good performance).
> >
> >I will have fully animated characters (exported from 3d studio max as 3ds
> >files or my own format).  Many characters will be based from the same
model
> >(identical or almost identical... model color changed, texture changed,
or
> >extra models added to the same Branch/TransformGroup to appear as
clothing
> >or items held)
> >
> >
> >I see three options here:
> >1) Create each frame as a separate model and use switch groups.  (Too
much
> >memory required)
> >2) Create each frame as  separate point and texture coord arrays and call
> >setCoordinates() and setTextureCordinates() every frame (same memory
> >concern?  Speed?  Sharing issues?)
> >3) Create some mathematical formula for positionals (IK/Bones/some cool
> >parametric placement function, keyframing).. (again speed issues?  And
> >again, could this be a sharing issue or will cloning techniques fix
that?)
> >
> >When I export the characters from MAX, I don't plan on reading animation
in
> >from the file, if I need to change point arrays, I plan on creating my
own
> >format to hold the frames. If I need to do a switch group, I plan on
> >loading a series of max files (and optimising!!).   Am I looking in the
> >wrong direction?
> >
> >Anyone have any insight into the issue?
> >Thanks a lot
> >Chad Zalkin
> >
>
>===========================================================================
> >To unsubscribe, send email to [EMAIL PROTECTED] and include in the
body
> >of the message "signoff JAVA3D-INTEREST".  For general help, send email
to
> >[EMAIL PROTECTED] and include in the body of the message "help".
>
>
>
>
> ------------------------
>
> Chris Forrester
>
> http://www.geocities.com/Psionic81
>
>
> _________________________________________________________________
> Get your FREE download of MSN Explorer at
http://explorer.msn.com/intl.asp.
>
>
===========================================================================
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
body
> of the message "signoff JAVA3D-INTEREST".  For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to