I got a question from one of the new Reykjavik PandaBMLR developers on controlling the face.  I think this is of interest to all SmartBody users, so I'm reposting my answer:
Regarding the face, we've been using commands passed to the renderer for some time, but we intend to control the face with bones, like the rest of the body.  You can enable face bone control with the -facebone command line argument to sbm-fltk.exe.

You may note in SbmCharacter, we have a MeCtFace controller registered at the end of init.  This controller takes in channels like "au_4_left" and "viseme_er" as input weights for each facial pose, and adds the weighted sum of each pose to a neutral face configuration.  Most of the code has been in the system for a while, but we now have a programmer revisiting the problem.

I should note, when I say channels "au_4_left" and "viseme_er", I am refering to the XPos of dynamically generated joints, assumed to have a value between 0 and 1.  These joints are created in SbmCharacter::init_skeleton based on the AuMotionMap and VisemeMotionMap of the MCU at the time of the character's creation.

With respect to Panda, here are the issues I expect:
* Our BoneBus (network connection to the renderer) outputs a hard-coded set of channels/bone joints.  If there is any discrepancy between our face bones and the bones in your characters, we will need to explore some new bone handshake protocol.  Ed and I have had some preliminary talks about this, and I CC'd him in case he has anything to add.
  See BoneBusCharacter::NetworkMapBoneNames(..) in lib/bonebus/src/bonebus.cpp (or https://svn.ict.usc.edu/svn_vh_public/trunk/lib/bonebus/src/bonebus.cpp).
* Panda needs single framed .skm files for each face pose.  Each pose should adjust the channels of the head (i.e. higher than skullbase in the skeleton hierarchy) with the exception of the eyeballs.  See data/sbm-test/common-sk/face/ for examples (but they mistakenly have the eyeballs).  Of course, if the face bones of your characters do match up, try the sbm-test/face/motions first.  It often helps play a modified version with a second keyframe to give the animation some duration, as in data/sbm-test/common-sk/zero_10sec.skm and viseme_er_10sec.skm.  I created these by manually copying the first (and only) frame of the original animation and modifying the frame time (the number following "kt").
* The new system does not need to have a matching set of action units and visemes as our characters.  This is configurable via "set face au ..." and "set face viseme ..." commands.  You can find an example configuration in data/sbm-test/scripts/default-init-face.seq.  Now that Panda is officially included, I'd be happy to include a data/sbm-panda directory for this sort of PandaBMLR specific configuration.

Anm
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Smartbody-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/smartbody-developer

Reply via email to