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".