To translate a line of text into three-dimensional time-varying language, this animated hand model was imported from an X3D file as XML. We derived the dimensions of the hand model from a combination of Defense Advanced Research Projects Agency (DARPA)-sponsored Digital Human published research as well as our own anthropometric study. We employ a method of traversing the X3D XML Document-Object Model (DOM) tree that is very general purpose. It is identical to traversing an animation scene graph in a high-performance 3D animation package.
Note, however, that XML in itself is intrinsically dangerous. For example, the Exponential Entity Expansion is a block of XML code that is both well formed and valid according to the rules of an XML schema, but which when executed recursively expands to overflow memory on the XML parser. We circumvent these difficulties here by pre-importing X3D externally from this notebook, using the necessary Read
[ ] or ToExpression
[ ] to convert XML string-valued fields, which have similar vulnerabilities for Mathematica
This version imported 27 hand gesture poses, one for each letter of the alphabet plus a "neutral" hand pose. Double letters are separated by a "bounce" pose built on the double-letter pose. The poses were built in another notebook, which contained 23 sliders—one to set each finger joint rotation—within a Manipulate
, plus a user interface to save the current pose into a file.
The Demonstration inserts a "bounce" pose between double letters in the input message.