20130417 0514 0706 * The Humanoid Animation (HAnim) Plan This plan is based on generation One ISO X3D Humanoid V1.0 (here called HAnim1). The plan will produce V2.0. X3D HAnim Level 1: skeleton heirarchy and nominal dimensions geometry bound to Segment and Site Animated by hierarchical rotation and translation of Joint nodes Displacer for Segment geometry X3D HAnim Level 2: Level 1 plus * Deformable skin - points bound to one or more Joint nodes * Displacer for skin and Segment geometry Now: ** Get Skin in the Game ** * Extend collection of 'standard' skin surface feature points - User-friendly names and typical locations - Compose 'standard' deformable skin from these feature points [skin space = skeleton space = human space] * Document 'standard' Joint and Displacer bindings for 'standard' skeleton+skin combinations [known bindings = transportable animations] * Document 4 surface feature point densities of skin - Include Medical, Haptic, Physics references - Densities according to target skeleton LOA. * Document 4 default textures - Show 'standard' Site and feature points available - default texcoords generated for IFS skin * Defines best practice for H-Anim1 * Sets the stage for H-Anim2, Interactive and Active ** Current H-Anim ISO FCD candidate: * Basic Typical Example(s) user code provided as part of Standard. * No new HAnim nodes. * Annex A and B Tables and Examples will change ** * H-Anim best skinning practice will emerge * Users and toolmakers will submit example skins * Community choosing or synthesizing which to use * HAnim1 is Mature. - The complete skeleton and skin model provides needed interfaces for extended haptic and kinetic simulations. - Uses structural and animation techniques and technologies that have gained traction in open and commercial applications. * Next: The HAnim2 Plan Best Practices Physical X3D H-Anim dynamic haptic interactions kinetic simulations usable by AI The H-Anim1 model can be further improved by incorporating known technical feature upgrades such as specific expected joint behaviors and implementing rigid body physics features allowing extended kinematics and dynamics. * Motion modeling/blending/prediction/capture/analysis * H-Anim Medical Biospatial * H-Anim 4D Biometrics * X3D Computational Anatomy * The Humanoid Animation V3.0 (HAnim3) Plan Collect best: physics, haptics, tactile, sensors, actuators, effectors, muscles, event processing, motion modeling/blending/capture/prediction/analysis, quaternions, tensors, instrumentation, medical component integration, simulation, emulation, and all best practice biospatial database candidates for H-Anim2 generation Best practice skeletons and skins can be moved closer to realistic humanoid realtime spacetime. =========================== TO X3D OVERVIEW OF X3D HAnim GENERAL WHAT WE NEED AFTER THAT SUMMARY APPENDIX A - Deformable Skin EXAMPLE APPENDIX B - Transportable Animations APPENDIX C - Combined Example ======= Hi All, First, there is the need for Web3D and the X3D Humanoid Animation (H-Anim) Working Group to accomplish a specific task. We need to produce a 'standard' set of continuous mesh skins, composed of 'standard' named sites and feature points, with 'standard' joint and displacer bindings, to produce animations for a 'standard' skeleton with continious-mesh deformable skin. This step provides a needed interface for extended haptic and kinetic simulations. Importantly, a well defined 'skin' surface serves a basic need in scanning, motion capture, motion analysis, and general humanoid kinematic and dynamic active and interactive applications. All Consortium Members, I want to make a special appeal to rejoin our Web3D X3D H-Anim work. I know we had some fun using H-Anim in the past with many members, and the community, contributing many great ideas, normative and non-normtative content, and reviews of the standard. Get Skin in the Game To be of greatest service to the Web3D community we must document greater density of best practice human surface reference feature points, then construct various 'standard' skins from those points. This allows composition of various 'standard' skins drawn in skeleton space and bound to appropriate joints and displacers to complete the h-anim character and demonstrate its operation. Especially over the past decade, there has been much activity with h-anim modelsh-anim * Continue to expand the scope for 'standard' surface and internal feature points * Normative names and typical human xyz locations * Create 'standard' skins, in skeleton space, comprising these points * Define 'standard' joint and displacer animation bindings. ** Completes and Proves the X3D H-Anim1 deliverable ** The model can be further improved by incorporating known technical feature upgrades such as specific expected joint behaviors and implementing rigid body physics features. These added steps will get the character up to date for detailed dynamic haptic and kinetic simulations. So, please consider getting yourself and your organization deeply involved in this important (I think the most important in web3D) effort to update and extend this X3D Humanoid. A great item of this X3D Humanoid is that the visualization, the perceptualization, and even the manipulation "is" the data base. We have a very 'live' time and event driven, realistically structured, fully parameterized, metadata aware, lexically and kinetically verifiable, high-fidelity, extensible, interactive data base. Following is some explanation of developing this 'standard' set of skins to go along with our 'standard' set of skeletons. OVERVIEW The major Web3D contribution now would be to carefully and completely specify a continious mesh skin drawn in skeleton space using skin vertices composed of 'standard' site and surface feature points. For the joints and segments, we have provided bindings for normative 'standard' names and for non-normative but 'standard' typical locations. We have done the same for a certain number of external sites and feature points. We need more external feature reference points, thus allowing composition of various bound skins to complete a 'standard' h-anim character that demonstrates its actual operation. GENERAL X3D HAnim Level 1: * realistic humanoid skeleton hierarchy - Joint, Segment, Site nodes * nominal humanoid dimensions - Joint and Site nodes * geometry bound to Segment and Site nodes * Animated by hierarchical rotation and translation of Joint nodes * Displacer for Segment geometry - point displacements by weighted Joint rotation X3D HAnim Level 2: * Level 1 plus 'single-mesh Deformable skin - skin points bound to one or more Joint nodes - skin deformation by weighted Joint rotation * Displacer for skin and segment geometry - point displacements by weighted Joint rotation It is important to recognize that the h-anim character we have is of World Standard Quality. First, H-Anim1 produced a realistic skeleton composed of a very complete and realistic 'standard' hierachy of joints and connecting segments. Bindings for normative 'standard' medical names of joints and segments, along with non-normative typical nominal locations of joints and lengths of segments are given. The number of Joint objects defines the skeleton Level of Articulation (LOA) with four levels, ranging from one joint to 94 joints, are defined. http://h-anim.org/Specifications/H-Anim200x/ISO_IEC_FCD_19774/concepts.html#Hierarchy Dimensions are derived From CAESAR data base using a nominal local coordinate system with 0,0,0 at the standing surface between the feet.This data structure produces a skeleton drawn in nominal 'human' dimensions facing +z, in a fairly realistic, what might be called a standing "attention" default pose, prior to animation. The joint locations, segment lengths, end effecters, and feature point locations can be adjusted for the actual dimensions of a specific human. This model produces humanoid motion as expected in that moving the humanoid root node moves the entire character, and, for instance, rotation of the parent shoulder joint produces expected movement of the child arm and hand joints and segments. Geometry and sensors can be bound to individual joints, segments, or defined site locations to produce a wide variety of realistic characters. Additionally, various external surface feature points were defined in this skeleton space. The standard includes non-normative but 'standard' medical surface feature point names, along with nominal 'standard' human surface locations. This model provided the means to produce animated characters with transportable animation routines, given that the initial pose is the same or well-known and that the joint hierearchy is the same or similar. H-Anim1 also allows the h-anim Joint node to produce seamless deformable skin animation. Each vertex of the skin mesh is bound to one, or more if appropriate, Joint(s) of the skeleton. The skin is animated by a weighted value depending upon rotation of the bound joint(s) as the joints are animated. Importantly, the Displacer node was specified in h-anim 1.1 for use with segment geometry or joint geometry to achieve more specific localized geometry vertex deformation. Displacer nodes parented by Joint nodes animate skin vertices associated with that Joint node. Displacers parented by Segment nodes animate vertices of geometry parented by that Sement node. In order for these deformable skin and displacer animations to be transportable without complex processing and some guesswork, the 'skin' and any Displacer actuated geometry must also be transportable. Transportable skin means that the same vertex, or set of vertices, serve the same 'standard' feature points and are bound to the same joint(s) in a similar location. This requirement is similar to the requirements of transporting skeletal animations, where the skeleton must be same or similar; with a predictable fail for missing hierarchy. Same or similar skeleton and skin doesn't necessarily mean the same 'size' in the sense that the xyz location of each joint and skin vertex is identical. The transportable skin does not need to be the same 'size' but the skin Must have the same number of points in the same order or else the indexing will not work as expected. So, to produce the 'standard' skins we must produce greater density of internal and external feature reference points. This allows composition of several different levels of density with bindings to complete an H-Anim1 character and demonstrate its operation. Finally, we will have an appropriate set of 'standard' skins drawn and bound in skeleton space. WHAT WE NEED To H-Anim, the order of importance: * First we use medical and industrial 'standards' to define the internal joint hierarchy, location/orientatrion, and connecting segment lengths to produce 'standard' skeletons of various levels of articulation (LOA0-LOA3). NOTE: THIS IS ALREADY DONE! We just need to update the various examples in the H-Anim standard. * Next we use medical and industrial best practices to specify additional useful 'standard' site and feature point sets that can be associated with specific joints and displacers. This provides more detailed naming and dimensional data points of human surface reference locations allowing better description of a realistic 'standard' H-Anim character. NOTE: This is represented now for very low density 'skin' by the current definition of sites and feature points in the h-anim standard. * These points are used to produce single mesh deformable skins with vertex density to match target skeleton LOAs. NOTE: The actual number of these 'standard' points (density) generally depends upon the skeleton LOA to be associated with a certain skin. Possibly, a basic example "standard' skin for LOA0 skeleton of approximately 400 points to an LOA3 skeleton of approximately 1400 points with hand, foot, and facial localized detail. * Now we can compose 'standard' representative textures that map to the various 'standard' skins. NOTE: Using typical 'standard' site and feature points as the primary vertices of the skin in multiple 'standard' densities would allow complete demonstration of the X3D H-Anim character capabilities. When the skin geometry is consistently drawn it should be possible to provide good example guidance in locating graphical features on a 'standard' texture using 'standard' texture mapping. * Finally, with joints and segments and skin and bindings we can produce example 'standard' deformable skin animations for the various skeleton LOAs. The specification and the Consortium would then provide example 'standard' mesh to joint bindings and example 'standard' mesh to displacer bindings along with various animations using appropriate combinations of skeleton LOA and skin vertex density. The good news? I think literally anyone in the business of modeling, animating, scanning, and motion capture/tracking has gone this path. In fact, in whatever order those steps above actually happen, those steps represent a common path. Developing and documenting best practices should attract industry contributions when the objective is clearly stated. AFTER THAT Next is to integrate X3D rigid body physics. This is very important as we move to document highly developed 'standard' dynamic interactive haptics for H-Anim forward and reverse kinematic simulations. This physics, while needing more experience in X3D tools, will fit right into H-Anim. Physics integration means a move to h-anim 2 where the character is upgraded to replace the existing Joint, Segment, Site, and feature point transforms with more realistic and active integrated physics components. Our X3D H-Anim standard can present a normative 'standard' realistic structural hierarchy along with normative naming of 'standard' internal and external feature points. The standard also gives a non-normative 'typical' set of dimensions for those feature points. This allows to construct a character using standard features with realistic dimensions. Finally, all X3D Medical features will fit right into our X3D H-Anim spacetime. Given we realize that native h-anim spacetime can compise the same set of real xyz locations of 'standard' reference feature points as an actual typical human subject, we should have no problem fitting any realistic human data structures into the World Standard interactive parametric data repository named X3D H-Anim. SUMMARY Web3d Consortium and previous have done an amazing job in defining a realistic character potentially fully capable of simulating any definable functionality, and acting as a real stimulus/response node in the most rigorous interactive simulation -- and documented those best practices of the late 90's and early 00's using the ISO process. What remains to be done now is to: "Complete H-Anim1 by providing 'standard' skin(s) composed of 'standard' surface feature points with 'standard' joint and displacer skin animation bindings." Success depends upon strong and active support and participation of the BoD, interested members, and the entire community. We need to leverage best practices of work that has been done to implement various government, corporate, public, and private humanoid models and applications. (See attached list.) Major individual and organizational development is now based in simulation of medical and surgical procedures. Worldwide there are at least five major public models now in use. Every major authoring tool provides a comparable animation system aimed at a humanoid with comparable animation bindings. Well, OK then. I am enthusiastic and a true believer that the entire reason for X3D is to refine H-Anim. To produce the most transportable realistic stimulus/response simulation using transportable realistic humanoid characters in transportable realistic environmenta ... That is why we need various 'standard' X3D H-Anim skins drawn in typical 'human' spacetime -- I mean X3D H-Anim typical skeleton space. APPENDIX A Deformable Skin Example The example I want to start with is this one: http://www.hypermultimedia.com/acontents.htm#X3DHANIM . H-Anim Logo Kick .x3dv Run: http://www.hypermultimedia.com/x3d/hanim/JoeH-AnimKick1a.x3dv Read: http://www.hypermultimedia.com/x3d/hanim/JoeH-AnimKick1a.txt (turn off line wrap) I think this example makes good reading because it clearly shows: * h-anim LOA3 skeleton Joint hierarchy, * Joint to skin vertex animation bindings, * an example skin drawn in skeleton space made up of mostly of currently specified site and feature points, and * some simple animations that move the character, individual joints, and show deformable skin operation. For the skeleton+skin in the kick1a example I started with Annex A Nominal body dimensions and levels of articulation using Table A.8 — LOA Three: Default Joint object centers and Table A.9 — LOA Three: Default Site object translations http://h-anim.org/Specifications/H-Anim200x/ISO_IEC_FCD_19774/BodyDimensionsAndLOAs.html#LOA3Definition The .wrl example which follows in the spec text uses these names and values. Annex B Feature points for the human body shows diagram and list of major surface feature points. http://h-anim.org/Specifications/H-Anim200x/ISO_IEC_FCD_19774/FeaturePoints.html The current example kick1a skin uses all LOA3 Annex A Site objects and Annex B surface feature points with nominal location if available plus added to keep minimum connections. Please see the X3D h-anim standard hosted at web3d.org. So, to complete the h-anim character and fully demonstrate its full capabilities we can specify more site and feature points. We use the same process of defining 'standard' normative names along with non-normative typical locations as we used for existing h-anim joint, segment, site, and feature points data. I hope this simple skin shows us that all we need to do is to define more standard h-anim sites and feature points to produce necessary skin detail. We need some 'standard' skins with 'standard' Joint and Displacer bindings. APPENDIX B Transportable Animations Let's look at this from a production standpoint. That is, what would need to be done to be shipping 'standard' detailed animations applicable to a wide range of 'standard' characters. The big lesson in getting there is finally recognizing that "Hey! you gotta know every detail of the skin mesh, joint bindings, and displacer bindings" in order to interchange 'standard' skeleton and deformable skin animations. So, sooner or later you must define a minimum set of skin points that will do the job and use that as your 'standard' skin. Motion capture folks didn't worry about it too much and got by with just dragging fields and bags of 'skin' around. Until they figured out that they actually wanted to take control of the character and do creative extensions of captured motions. Then they find out the value of a skeleton with 'skin' bound to joints and of displacers for feature animations. This is one reason why the Joint tables in annex A are most important. http://www.web3d.org/x3d/content/examples/Basic/HumanoidAnimation/tables/HAnimJointNames19774V1.0.txt shows LOA detail for Sites but not for Joints, which is the important part of LOA. Decisions will need to be made and examples constructed. For example, maybe all Site objects should always be included and just parented to the root if Joint is not present. LOA0 would then represent the minimum skeleton, only animated by movement of root but including all the Site objects, which are primary geometry/sensor locations. Minimum animation capabilities but capable of being fully instrumented. Going further, to define a 'nominal' skin for each Joint LOA, then the minimum skin might include only the skeleton LOA0 Site and feature point locations, all bound to the root. Higher levels of skin detail would include more feature points, bound to appropriate Joint objects. So, to proceed, we first develop the Joint LOA tables. Then we must be prepared for four large "skin" tables, ranging from about 100 feature points (only annex A Site objects and annex B minimum feature points) to probably around 1000 points for a fairly detailed skin with appropriate face, hands and feet. Also, there would be another four tables showing the skin to Joint vertex and weight bindings. Plus other tables showing Displacer to geometry bindings for each example displacer animation. APPENDIX C Combined Example * Showing and explaining a historical example set; then One set of work that we want to include in the official web3D h-anim example set is accumulated at: http://web3d.org/membership/login/groups/X3D_h-anim/X3DExampleJoe20090205.zip also available at: http://www.hypermultimedia.com/x3d/hanim/CombinedExample.zip It runs most completely in BSContact that I have checked recently. Please download and unzip. There are both .x3dv and .x3d files in this set. The file 'skeletonJoe1.x3d' is the complete standing skeleton in the foreground. This is a very detailed skeleton using individual shapes for almost every bone and cartilage piece of the human skeleton. It is drawn in a 'relaxed' posture at about 40x the nominal h-anim humanoid dimensions with 0,0,0 at the standing surface, like the h-anim skeleton. The file 'NISTSiteMarkerBodyColor5.x3dv' is a very detailed (also size 40) skin modified from the original with various colorpervertex applied in order to recognize areas of geometry in the user code. This example was extracted from nist example: http://ovrt.nist.gov/projects/vrml/h-anim/mangloss35.wrl It is drawn in a semi-relaxed pose at about 40X, includes great detail for many surface features, plus teeth. It uses well over 30K vertices, and it 0,0,0 is approximately behind the navel. Other .x3d files in this directory named for skeleton parts are used with the center figure. They are single or combined skeleton parts grabbed from the big skeleton1 file and used as geometry in the center figure. The file 'JointCoordinateAxes.x3dv' shows the standard x3d default value for the h-anim coordinate axis. Prior to animation, the h-anim default pose, all joints have this orientation. Please Run the file named 'JoeSkin4MGSkinDBonesRun3EX.x3dv' which uses all files in the set. An attached screen shot shows the complete scene. mouseover the center figure to activate the animation; reload to initialize. The center figure is a purple example skin of less than 400 points drawn in the default 'attention' pose h-anim LOA3 skeleton space using all of the defined site and feature points in the standard plus additions for some in-between points. Feature point location was adjusted to approximately match the dimensions of the detailed skin in the background. Each vertex is bound to at least one joint to achieve animation of this indexed face set continious mesh skin. The visible geometry 'bone' parts are .x3d files grabbed from the complete skeleton1 with each part parented by the appropriate segment node of the LOA3 h-anim skeleton. (Please ask why the skeleton geometry does not line up with the purple skin.) Thanks, Joe OK, just one more thought. We all know why we did not do this long before now. Mainly, a lot of work got moved toward the Giant Task that was and is the XMLizaton and DOMification of VRML. Well, that and the general idea that in terms of developing a "Standard" realistic skin, well, the field was just much more dynamic and possibly encumbered then. Needless to say there has been lots of activity in the intervening years and I think our current X3D Humanoid has served both as the World Standard and as the basis for most all human-scale activities. To catch up with current best standards-track practices, we just need to add detail to our current model. ================ end ================ advice to authors who already basically understand the Humanoid skeleton is built as hierarchical tree structure composed of Joint objects and Segment Objects positioned in Humanoid space having a certain default pose prior to animation. This parent-child relationship between Joint hierarchy and location means that the skeleton will move as expected when a particular Joint is rotated -- the child Segment and Joint objects move like real life. This X3D HAnim skeleton can support both Segment geometry, which can represent internal or external structures, and/or continious-mesh deformable (seamless) skin, which can represent external surfaces. If you use a continious mesh skin in the Humanoid skin field you will need to define skinCoordIndex and skinCoordWeight values in associated Joint objects of the Humanoid skeleton field. This is also true for Segment or skin field geometry you wish to animate with Displacer objects. I know we need a few pictures, but also, you really do want to draw those geometries in Humanoid skeleton space.