[x3d-public] Technical-Specification-Portable-Avatar-Format-MPAI-PAF-V1

Joe D Williams joedwil at earthlink.net
Tue Apr 23 20:34:19 PDT 2024


https://mpai.community/wp-content/uploads/2023/10/Technical-Specification-Portable-Avatar-Format-MPAI-PAF-V1.pdf

This is important HAnim stuff.  
Some basic concepts of character structure and animation best practice 
are being defined for the PAF. 

So, let's please figure a way to give some HAnim best practice guidance 
to the group. 

The HAnim standard was mentioned and followed in several instances but in important ways abandoned. To be commented on below.  

Please recall that the entire reason for x3d is HAnim Humanoid and its environment and the entire purpose of HAnim is authoring transportable Humanoids using transportable animations and interactions. 
  
A similar character should be able to fairly easily adapt, or even use directly, animations and interactions that work on a similar model. 
So, for skeleton-driven animations, this means a standard but customizable skeleton hierarchy and 
a standard but customizable set of surface feature interaction points.  
And most importantly, a standardized default pose before animation. 
  
First, HAnim proves a realistic skeleton, one that is capable of realistic simulations of realtime stimulus/response interactions with the host environment and other Humanoids. 
That is the main idea, so to have this transportable device, called a Body Model here, that can actually represent a You, we must apply some standrds. 

"7.3 Body
7.3.1 Body Model"

Is: 
"MPAI adopts the Humanoid animation (HAnim) architecture [9] that gives access to the joint and 
end-effector hierarchy of a human figure. This allows a model-independent animation of a skeleton 
and related skin vertices associated with joints and geometry/accessories/sensors of individual 
body segments and sites."  

Suggestion:  
Humanoid Animation (HAnim)  
Great! Abstract, but says a (realistic) hierarchical body composed of Joints for animation, Segments for vizualization geometry, and interaction Sites for sensors or whatever.   
And maybe a continuous deformable mesh skin. 
 
Is:
"The actual structure of the HAnim architecture depends on the selected element of the Level Of 
Articulations (LOA) hierarchy: LOA 1, LOA 2, LOA 3, or LOA 4. All joints of an HAnim figure 
are represented as a tree hierarchy starting with the humanoid_root joint. For an LOA 1 character, 
there are 18 joints and 18 segments in the hierarchy."

Suggestion: Fantastic!  
https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/concepts.html#BasicSetJointHierarchy4  

New Sentence:   
The HAnim architecture consists of nested transforms called Joint, Segment, and Site. 
The transform hierarchy is operated by applying rotation to various Joint objects in the hierarchy. 
The hierarchy is realistic so,for instance, the motion of a shoulder joint will result in the expected motion of the arm and hand child parts.   
In addition, the character is equipped with a defined set of surface feature 
landmarks used for viewer, geometry, sensor, and anything x3d.   
The Site features are certain children of Segment nodes and are animated with the Segment controlled by the parent Joint. 

Is:
"The bones of the body are described starting 
from position (x0,y0,z0) of the root (neck or 
pelvis)." 

Should be:
The Joint center values of the skeleton and the interaction landmarks 
are x y z dimensioned relative to 0 0 0 at the floor between the feet. 
  
This is measured using the standard default before animation pose.  
The rotation of all Joint objects in default pose is defined at 0 0 1 0 radians; x=y=z=zero degrees. 

Is:   
"The orientation of a bone attached to the root 
is defined by (α,β,γ) where α is the angle of the 
bone with the x axis, and so on. The joint of a 
bone attached to the preceding bone has a 
position (x1,y1,z1) determined by the angles 
(α1,β1,γ1) and the length of the bone."  

Suggetion:  
Bones Not important since the basis for the skeleton is Joint centers, not intersections of bones connecting them. The HAnim hierarchy is based on Joint centers and the orientation and length of a bone is not a data point in operation.   
Animation of the skeleton and body is all about Joint center rotations.  
Under the covers it is all about Joint centers so the author must be exposed to Joint centers as the base measurement landmarks and animation vehicles of the body. Although lucky that if rigged right, bone orientation and Joint rotation are same. 

Is:  
"The Body Model contains:
1. Pose composed by: 
1.1. The position of the root.
1.2. The angles of the bones with the 
(x,y,z) coordinate axes.
1.3. The orientation of the body 
defined by 3 angles."

Suggestion:   
The Humanoid Body Model contains:  
1. Pose composed of:  
1.1. The default pose prior to animation. 
This is relaxed attention, facing +z, +y up, and +x to model left.    
1.2. The 0 0 0 reference location for the model.  
At the floor, between the feet since all default pose Joint center and surface landmark dimensions 
are referenced relative to 0 0 0 for default pose.  
1.3. In the default pose before animation all Joint center transforms are default 0 0 1 0 x=y=z=zero  
1.4. The Humanoid has two levels of basic complexity.   
Level 1 uses Segment geometry.   
Level 2 continuous mesh skin plus Segment geometry.   
Level 1 Segment geometry is animated directly by the parent Joint.  
Level 2 skin is animated using weighted value sum from multiple Joint objects.   
HAnim Displacer node can additively control geometry vertices. 
    
Is:  
"2. The standard bone lengths.  
3. Lengths of the bones of the specific 
model."  

Suggestion:
These are not important in HAnim except figuring Joint center values for default pose. 

Is:  
4. Surface-related  
4.1. Surface  
4.2. Texture  
4.3. Material  
4.4. Cloth (an integral part of the model)"  

Suggestion:   
4. Surface features 
4.1. Surface can be represented by collections of geometry contained by Segment objects. 
The geometry can be textured and have complex surface features.  
Site objects can be decorative or functional geometery, sensors, vieweres, etc.  
4.2. clothing and accessories can be included in skin geometry, or drawn individually and 
utilized as segment geometry.  

Artwork:   
Figure 9. Some Joints of the Body Model. 

Suggestion:  
OK except that vl5 should be the base of the spine and a vc7 should be present 
to parent the skull and shoulders. Having the shoulders parented too low on the 
spine is a handicap. Please show minimum LOA2 skeleton for this. 

Is:  
"The Body Model is represented in the glTF format and transmitted in the initial Portable Avatar at 
the beginning of the Avatar-Based Videoconference.  
The Spatial Attitude of a Body is defined with respect to the global coordinate system defined by
the Visual Environment."   

Suggestion:  
The Body Model skeleton, surface geometry, accessories, and personal animations are 
represented in various forms including x3d HAnim, various gltf assets, ascii, binary, encripted formats, various image and sound formats contained by the standard Portable Avator package. 
The Body Model is scaled 1:1 in meters (human scale) aimed at a standard host environment 
1:1 scale.   

Is:  
"7.3.2 Body Descriptors
Body Descriptors are included in the data set describing the root and joints as:
1 Position and Orientation of the root.
2 Rotation angles of the joints.
The rotation of the head is treated as any other joint.
   
Suggested:  
Body Descriptors are from Default Pose with elements of data set in correct location in the skeleton hierarchy:   
(1) Joint Center x y z values relative to 0 0 0.   
(2) Surface Feature Landmarks x y z values relative to 0 0 0.    
Animation data consisting of Root translation and rotation, Joint rotation, and or special aspects of body pose, geometry motion, sensor interactions may be generated in real time using internal or external (from host) scripts or by internal preprogrammed interpolators.  
  
Is: 
"Figure 10 depicts Roll (rotation around y), Pitch (rotation around y, and Yaw (rotation around z) 
of a Body"  

Suggested:
Figure 10 depicts 
Pitch (rotation around x), 
Yaw (rotation around y), and 
Roll (rotation around z) of a Body.  

Figure 10 is not HAnim.   
Unclear whether right- or left-hand rule.
  HAnim is right-hand rule. 
Axes are mixed up from HAnim.  
  The Figure 10 Body is facing -x,
  +z to body left, 
  +y up. 
The HAnim Body Model in default before animation pose is:   
facing +z,  
up is +y. and   
+x to body left.  
Please adopt the HAnim std coordinate system, same as default web3d x3d coordinate system.   
   
Not so much about x and y, most every system can produce a default skeleton for x and y with +x to viewer's right and Body Model left, and +y up as standard graphing practice.    
But picking the correct direction for +z, and thus the Body Model default has been a topic for generations. To settle it, just think that relatively, the audience looking at the Body Model is facing -z with minus value increasing with distance and the Body Model is facing +z with plus value increasing with distance.   
Important that authors honor and even demand this because negative scaling is out for this round 
and that really didn't fix it anyway.   

For rotation of axes, right-hand rule.
Thumb pointed toward + of axis then curl of fingers = + positive rotation.  
When you are facing the body as a viewer, your gaze is toward -z, 
+x is to your right, and +y is up.   
The Body gaze is +z, 
+x is body left, and +y is up. 

It is not a mirror, it is a Body Model looking at you.   
So, Figure 10 needs replacement for consistency. 

Is:  
"7.3.3 Head Descriptors  
The Head Descriptors are the angles of: 
1. Roll: head has moved toward one of the shoulders.
2. Pitch: head has moved up and down.
3. Yaw: head has rotated left to right (around the vertical axis of the head).
These are useful in case when a body-less head is animated."  

Fine, this is like HAnim but not like Figure 10.  

Is:  
"7.4 Face  
7.4.1 Face Model"   

Just hoping HAnim facial animation evolving 
is pretty much the same or slightly advanced. 
  
Attached is latest JinScaledL1LOA4 with Sites. 
To me,this would be the best current example of an HAnim 
character with Segment Geometry and showing V2 surface 
feature landmarks. 
The user code is fairly easy to read in Notepad. 
Maybe skip the front interface stuff down to HAnimHumanoid 
to read the loa4 skeleton, then have a look at the complete set of interpolators, routes timers to interpolators, routes interpolators to skeleton joints. In fact, multiple copies, one for each of the animations.   
   
View with any x3d tool or even use the X_ite Playground.
Just go to   
  
https://create3000.github.io/x_ite/playground/?url=https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/SimpleInstancing/glTF/SimpleInstancing.gltf  
  
then paste this .x3d file in the text area replacing what is there. 
Future versions of this will have the old, much more pleasing motions as pitch2, yaw2, roll2 animations. 
    
Thanks and Best,
Joe

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20240424/8a901322/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: JinScaledV2L1LOA4Sites08o.zip
Type: application/x-zip-compressed
Size: 210093 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20240424/8a901322/attachment-0001.bin>


More information about the x3d-public mailing list