Making an animated human sounds like a fascinating project and should be more than possible on a 500 Mhz PC.  Many video-games do similar work.
 
Animating the texture map for the face has been used with great effect in other projects.  You can break down the speech into phonemes and have unique textures associated with each different sound as you mentioned.  Alternatively you could change the mesh underneath the texture, causing it to stretch - or you could just change the entire head, new texture, new mesh etcetera.
 
As far as animating the body, this is harder.  Let's assume you've made your human in some modelling package such as 3DSMAX or Cosmo, and then you've imported it into Java3D using the VRML importer.  Now you have this creature you need to animate.  Probably the best solution would be to have lots of small animation snippets that you also created elsewhere.  You could used a weighted system to blend between animations ( for example to move the left arm at the same time as the right arm you might export full body animations but allow both animations to be applied simultaneously).  Another but less likely solution would be to write an inverse kinematics layer yourself rather than relying on the one inside 3DSMAX - so that you could procedurally animate limbs.  With a jointed and articulated creature you can't simply 'set' the location of a body part because you must preserve the spatial relationships to other body parts.  Either you utilize the inverse kinematics of a 3d modelling package and export snapshot 'solutions' from that package, or you do it yourself.  In a video game I worked on a couple of years ago we used a combination of blending animation snippets and some inverse kinematics and this does work quite effectively.  We had a vocabulary of body positions that we could composit and then had some specialization for head turning, torso and hands.
 
Have you seen projects like 'Jack' etcetera? Or the puppet theater at MIT (or somewhere like that)?  There's quite a bit of neat stuff out there that might give you some ideas.
 
Well this is a kind of abstract overview rather than a specific details oriented one but I hope it helps anyway.
  - Andy
 
 
-----Original Message-----
From: Evan Drumwright <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED] <[EMAIL PROTECTED]>
Date: Sunday, November 07, 1999 1:21 PM
Subject: [JAVA3D] animating person in real time

Hi,
 
I'm a computer science graduate student who is in over his head when it comes to 3D graphics programming.  Please help and sorry for the length!
 
I am required to animate a person in real time.  This person, which can look very simple (no curves req'd, very blocky) must be able to rotate its head 90 degrees, talk, move its arm, and blink its eyes simultaneously.  The actions do not have to be complicated either- for example, I have determined that only four mouth positions are required to give a decent appearance of talking.
 
I am worried that this will not be computationally feasible on our machine, a 500 MHz PC with a generic 3D graphics accelerator.  One other hitch as well- we  also must use speech synthesis simultaneously, which I am guessing will eat around 10-15% of the processor.
 
So, my questions:
 
1) Can Java 3D perform this in real time?
 
2) If it can, what would be the best way to animate a talking mouth for example?  I can load this 3D person in and change out mouth positions (we have tested this in 2D and it is not distracting) by exchanging mouths or exchanging textures.  Any other suggestions?
 
3) If Java 3D is not feasible, what is?  I am restricted to Java but other than that I have my choices open (including 2D representations if possible).
 
Thanks!
Evan Drumwright
 

Reply via email to