Difference between revisions of "H-Anim"

From Web3D.org
Jump to: navigation, search
m (cut the conversion content to paste in usage (authoring) section)
Line 189: Line 189:
  
 
Human joint articulation of any type (there are six: ball & socket, elbow, gliding, hinge, hip, and saddle joints) can be expressed using Euler angles or quaternions. The word quaternion is modified based on how it is used--rotation, orientation or attitude modifiers are germane but there are others for different use cases. There are multiple approaches to convert Euler angles into quaternions (http://en.wikipedia.org/wiki/Hamilton_product#Hamilton_product, http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation).
 
Human joint articulation of any type (there are six: ball & socket, elbow, gliding, hinge, hip, and saddle joints) can be expressed using Euler angles or quaternions. The word quaternion is modified based on how it is used--rotation, orientation or attitude modifiers are germane but there are others for different use cases. There are multiple approaches to convert Euler angles into quaternions (http://en.wikipedia.org/wiki/Hamilton_product#Hamilton_product, http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation).
 
== BVH mocap conversion to X3D interpolators ==
 
 
Myeong Won Lee example: http://web3d.org/wiki/images/4/4b/197_a.bvh.txt
 
 
Proposed investigation procedure:  divide and conquer!  Let's take each skeleton apart and put them back together again.
 
 
----
 
===1. Is there an X3D H-Anim skeleton that corresponds to the BVH ROOT/JOINT HIERARCHY? ===
 
 
The structures used by BVH and H-Anim are different.  There is not a direct correspondence between them.  Differences include:
 
* The hierarchical nesting of parent-child relationships is different
 
* Values are therefore in different coordinate frames (one might be relative to parent joint, the other absolute coordinates for the human)
 
* Formats are quite different
 
* (others will be listed here)
 
 
----
 
=== 2. However many similarities also exist. Maybe they can be exploited? ===
 
 
Perhaps we can build a mapping between the two.  If we perform rotation transformations, a conversion algorithm can be computed for each hierarchy and corresponding units.
 
 
Here is a possible set of correspondences between a BVH model and an X3D H-Anim LOA-1 model.
 
 
* '''BVH :: X3D H-Anim'''
 
** ROOT :: HAnimHumanoid
 
** JOINT :: HAnimJoint
 
*** JOINT name:: HAnimJoint name
 
*** OFFSET :: HAnimJoint center
 
** CHANNEL definitions :: HAnimJoint rotation, translation
 
*** MOTION array of Euler-degree rotations :: OrientationInterpolator MFRotation array with ROUTE connections
 
*** CHANNEL array of position translations :: PositionInterpolator MFVec3f array with ROUTE connections
 
** End Site :: HAnimSite
 
** Anything else?
 
 
TODO
 
* map the BVH names to the approved H-Anim X3D names.
 
 
----
 
=== 3. Once we have the skeleton mapping, we can work on the animation values. ===
 
 
Let's look at the BVH file next.  Hypothesis:
 
* BVH MOTION arrays providing Zrotation Xrotation Yrotation values
 
to
 
* corresponding MFRotation arrays with 4-tuple SFRotation values
 
 
Example reconstruction follows.  First is an extract from the BVH file, then a counting exercise of how many floats appear.
 
 
  * ROOT Hips
 
    CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation
 
    * JOINT Chest
 
      CHANNELS 3 Zrotation Xrotation Yrotation
 
      * JOINT LeftCollar
 
        CHANNELS 3 Zrotation Xrotation Yrotation
 
        * JOINT LeftShoulder
 
          CHANNELS 3 Zrotation Xrotation Yrotation
 
          * JOINT LeftElbow
 
            CHANNELS 3 Zrotation Xrotation Yrotation
 
            * JOINT LeftWrist
 
              CHANNELS 3 Zrotation Xrotation Yrotation
 
      * JOINT RightCollar
 
        CHANNELS 3 Zrotation Xrotation Yrotation
 
        * JOINT RightShoulder
 
          CHANNELS 3 Zrotation Xrotation Yrotation
 
          * JOINT RightElbow
 
            CHANNELS 3 Zrotation Xrotation Yrotation
 
          * JOINT RightWrist
 
            CHANNELS 3 Zrotation Xrotation
 
      * JOINT Neck
 
        CHANNELS 3 Zrotation Xrotation Yrotation
 
        * JOINT Head
 
          CHANNELS 3 Zrotation Xrotation Yrotation
 
    * JOINT LeftHip
 
      CHANNELS 3 Zrotation Xrotation Yrotation
 
      * JOINT LeftKnee
 
      CHANNELS 3 Zrotation Xrotation Yrotation
 
      * JOINT LeftAnkle
 
        CHANNELS 3 Zrotation Xrotation Yrotation
 
    * JOINT RightHip
 
      CHANNELS 3 Zrotation Xrotation Yrotation
 
      * JOINT RightKnee
 
        CHANNELS 3 Zrotation Xrotation Yrotation
 
        * JOINT RightAnkle
 
        * CHANNELS 3 Zrotation Xrotation Yrotation
 
 
Defines a MOTION array consisting of numeric values:
 
 
  3 floats [Hip location]
 
  3 floats [Hip rotation]
 
  3 floats [Chest rotation]
 
  3 floats [LeftCollar rotation]
 
  3 floats [LeftShoulder rotation]
 
  3 floats [LeftElbow rotation]
 
  3 floats [LeftWrist rotation]
 
  3 floats [RightCollar rotation]
 
  3 floats [RightShoulder rotation]
 
  3 floats [RightElbow rotation]
 
  3 floats [RightWrist rotation]
 
  3 floats [Neck rotation]
 
  3 floats [Head rotation]
 
  3 floats [LeftHip rotation]
 
  3 floats [LeftKnee rotation]
 
  3 floats [LeftAnkle rotation]
 
  3 floats [RightHip rotation]
 
  3 floats [RightKnee rotation]
 
  3 floats [RightAnkle rotation]
 
  = 19*3 = 54 floats
 
 
Each line of the MOTION data has 19 triples.  Therefore we do have a good match.
 
 
----
 
 
=== 4. Units ===
 
 
Length
 
* BVH position units: author-defined, arbitrary - no fixed units, apparently (TODO confirm)
 
* X3D position units: 3-tuple x-y-z meters relative to point between feet on floor
 
 
Some scaling may be needed to get from BVH to X3D, either by a Transform scale or by a UNIT statement.
 
 
Angle
 
* BVH orientation units: (Zrotation Xrotation Yrotation) Euler angles in degrees. Note that order may vary. (TODO confirm)
 
* X3D rotation units: SFRotation 4-tuple (normalized x-y-z axis vector, angle in radians)
 
 
Given these definitions, we will need to convert the BVH orientation to X3D rotation.
 
Ordinarily in 3D graphics this is performed using a 3x3 or 4x4 transformation matrix.
 

Revision as of 17:53, 23 April 2014

Meetings

Work

Governance

  • Chairpersons: Myeong Won Lee, William O. Glascoe III
  • Members: Joe Williams (Subject Matter Expert), Don Brutzman, Richard Puk, Sandy Ressler, Keith Victor, David Bruner, Anita Havele, Jung-Ju Choi, Kwan-Hee Yoo
  • Charter
  • Strategic Plan
  • Marketing Plan
  • Strategic Report

Specifications

Users

Partners

Usage

Technologies

Sciences

Resources

Procedure for H-Anim character design

H-Anim wrl to x3d converter

H-Anim LOA Figures

Media:BonesAllSkeletonFrontView LOA1n.png

Media:BonesAllSkeletonFrontView LOA2n.png

Media:BonesAllSkeletonFrontView LOA3n.png

The background skeleton and images for the human skeleton can be found in the Basic Medical examples archive:

  • H-Anim examples archive:

H-Anim Behavior Prototypes

Prototypes for HAnimBehavior node, which collects OrientationInterpolators for aggregate animation of an H-Anim humanoid model, and HAnimBodyBehaviorChooser, which selects one body and enables/disables multiple aggregate behaviors.

H-Anim examples designed with a general tool (10 H-Anim characters)

Current Work

Working group chairs keep the following pages up to date:

Joe and Don are working each Monday night [1700-1900 pacific, Web3D teleconference line) on

  • As those issues get sorted out, we are re-visiting all the important details regarding H-Anim skinning
    • Definitions, example test scenes, tool support
    • Proposing an improved H-Anim component for X3D v3.4
    • Editing a corresponding update to H-Anim ISO 19774 Specification

The larger group is also working on

  • interoperable, swappable behaviors
  • motion capture
  • facial animation

Anthropometry

Published References for review and citation

Ergonomic Models of Anthropometry, Human Biomechanics and Operator-Equipment Interfaces: Proceedings of a Workshop ( 1988 )

Professional Societies: Professional Certifications, Licenses in Anthropometry International Standards: ISO - Basic human body measurements for technological design -- Part 1: Body measurement definitions and landmarks IEEE -

North American Standards:

ANSI

South, Central, Latin American Standards:

European, Middle Eastern and African Standards:

Asian Standards:

Before

This wiki page is the site for the recently renewed Humanoid Animation (H-Anim) Working Group.

Humanoid Animation (H-Anim) WG Meeting

March 2012: H-Anim Working Group Draft Charter materials by Web3D Korean Chapter

Links of interest:

There has been previous work by the H-Anim working group during 2008-2009 that was not completed. Here are some additional links on the members-only wiki:

Much additional work has been proposed by the Korea Chapter.

  1. Definition of a humanoid character model capable of generating motion from captured motion data
  2. Definition of a humanoid character model capable of generating motion using a general motion definition such as keyframe, interpolation, kinematics and dynamics for human figures.
  3. Definition of motion parameters for transferring or exchanging motion between different human character models
  4. Definition of motion data interface for including motion data
  5. Definition of behavior modeling data
  6. Definition of motion viewer’s functionality
  7. Video human functionality and gestures will be considered in AR/MR working group efforts

We agreed on the 1 Feb 2012 teleconference that it is a good idea to document work on these many good ideas using this H-Anim public wiki. Further comment is welcome about this.

The main thing that is needed next is to get the H-Anim Working Group restarted and rejuvenated.

  • H-Anim WG Charter
  • TODO: we need 1-2 members who are willing to volunteer to serve as working group co-chairs.
  • Working Draft for the H-Anim motion definition (in preparation) H-Anim Motion Definition

William's Section!

Human joint articulation of any type (there are six: ball & socket, elbow, gliding, hinge, hip, and saddle joints) can be expressed using Euler angles or quaternions. The word quaternion is modified based on how it is used--rotation, orientation or attitude modifiers are germane but there are others for different use cases. There are multiple approaches to convert Euler angles into quaternions (http://en.wikipedia.org/wiki/Hamilton_product#Hamilton_product, http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation).