[x3d-public] Technical-Specification-Portable-Avatar-Format-MPAI-PAF-V1
Joe D Williams
joedwil at earthlink.net
Mon Jun 3 18:49:13 PDT 2024
Hi Emma and All,
Thanks for thoughts on the CAESAR data. I think you see the basic details
as well as the folks that did that study and later ones. For the model,
it is not a mirror, it is you looking out of the screen at you, interacting
with your virtual twin. The surface feature point measurements data in HAnim standard,
Part 1, Annex A was derived from CAESAR data circa 1995 - 2000, and used
to approximate appropriate Joint center values over that period.
https://www.web3d.org/documents/specifications/19774-1/V2.0/index.html
With this in mind, as we look at spec for portable avatar, it is
important that we apply a model that is capable of realistic interactions,
more than just making simple animations and poses. The end aim is a
fully interactive anytime anywhere data and transaction store to serve
its and your various operations in the metaverse web environment.
Everything in x3d hanim is pure x3d.
The Joint, Segment and Site nodes are basic transforms
nested in a realistic skeleton hierarchy, including a root node.
The Segment can contain anything x3d but is intended for geometry
and the Site can contain anything x3d and is intended for accessories and sensors.
The root node is how you translate and rotate the entire model,
then motions and poses are achieved by applying rotations to
various joint nodes of the hierarchy.
For example, to move the right arm from default position to
pointing ahead toward +z, you would apply negative X-axis rotation to the
shoulder joint and the upper, lower, and hand children will move as expected.
This study of Jin LOA4 provides a complete V2 LOA4 model
developed independently of the Joint center and Site translation measurements
used in the tables and user code for HAnim Part 1 Annex A tables.
This Jin is aimed at an individual about 1.5 meters tall.
This data was only intended to show and proof the Joint, Segment, Site
hierarchal structure of the web3d x3d Humanoid Animation model.
The main thing I would like to do is to introduce the
web3d x3d hanim model to the group looking at spec for a
Portable-Avatar-Format.
I am attaching a latest example of an example x3d loa4 with only the
joint centers and site translations shown, no surface geometry.
Important items are: connection of the root to sacro and vl5 which
provides detailed control of basic hip and spine animation; and
the upper body shoulders connections which, instead of binding the
shoulder's motions together at a lower spine vertebrae, provides
much more realistic operation of the shoulders and arms.
X3d hanim was and is totally focussed on the idea of transportable
characters, animations, and interactions for operation in
transportable environments. Basically, we want to be able to use
animations developed for a similar hierarchy.
If the target skeleton is similar hierarchy to the source skeleton,
then maybe the animation will only need tuning for differences
like ratios of lengths of appendages.
We an see that the first step for establishing commonality in animations
is agreement of the default pose and default Joint rotations prior to animation.
The basic stuff for default pose prior to animation:
0 0 0 at floor between feet,
default I pose (relaxed attention)
model gaze toward +Z,
+X to model left, +Y up,
Right-hand rule,
All skeleton Joint center and Site location,
and skin point measurements relative to 0 0 0,
All Joint transforms to 0 0 1 0.
In this configuration, if you were sitting on a default transform,
you would be facing +Z and rotations of the X-axis would represent
pitch motions, Y-axis would be yaw motions, and rotation of Z-axis would be roll.
It is important to recognize that the end goal is the comprehensive
digital twin where the model also serves as a high resolution responsive
data base for daily personal and external functions.
Whatever we start with for a most basic Portable Avatar
we want to make sure that the user starts with a truly extensible model
that the owner can craft using best sustainable metaverse practices for
realtime anytime anywhere everywhere personal and automated operations
between models over a wide range of interactive possibilities.
Looking forward to further discussions and fun in metaverse,
Joe
If you can't run the example, please tell me or try
https://castle-engine.io/castle-model-viewer
-----Original Message-----
From: Emma Scott <connect at fashionshouldempower.com>
Sent: Apr 24, 2024 12:06 PM
To: Joe D Williams <joedwil at earthlink.net>
Cc: Donald Brutzman <brutzman at nps.edu>, Carol McDonald <cemd2 at comcast.net>, Anita Havele <anita.havele at web3d.org>, Doug Sanden <gpugroup at gmail.com>, Holger Seelig <holger.seelig at yahoo.de>, John Carlson <yottzumm at gmail.com>, Humanoid Animation (H-Anim) Working Group <h-anim at web3d.org>, Katy Schildmeyer KS APPAREL DESIGN <katy at ksappareldesign.com>, Myeong Won Lee <myeongwonlee at gmail.com>, Richard F. Puk <puk at igraphics.com>, William Glascoe <eosocxo at comcast.net>, <x3d-public at web3d.org>
Subject: Re: Technical-Specification-Portable-Avatar-Format-MPAI-PAF-V1
Hi Joe,
My group is assessing posture of the original CAESAR data set. Following are a few broad scope findings which may contribute to this discussion:
Scan pose generally requests aligned heels. While this is not always the case it is a good assumption to start from, and appropriate scanning protocol. A mid-point between the heel landmarks (calcaneus_posterior) could be considered a good floor ground zero.
The various body regions can be twisted in different directions. Having a set floor point provides an adequate base point of reference for noting such occurrences.
The hip joint is significant for posture assessment and automated pose detection. Hence, the floor point could be relocated in ‘z’ to be the average of the two hip joints. Averaging is necessary due to the above mentioned possibility of lower torso twist. Eluding to the importance of posture within Hanim would be prudent. This could be a way of laying groundwork for future discussion.
Best Regards,
Emma Scott
On Apr 24, 2024, at 10:45 AM, Joe D Williams <joedwil at earthlink.net> wrote:
> I’ve already suggested that “on the floor between the feet” is not precise enough, in my mind, and I suggest the x location on the floor: between ankles, knees, hips, between any left, right pair of foot joints, or at the x location of a backbone joint or the sacroiliac.
On the floor between the feet is a fairly constant starting point to base all other measurements of the skeleton.
Any other location is variable, like basing somewhere else, like anywhere else means measurements are relative to some point that will vary lots from skeleton to skeleton.
Between the feet on the floor is a constant where all features then have a x 0 z (y always positive value.
Notice the the document now says to reference it somewhere else, like another joint, but that means a variable reference and thus less transport between skeletons.
0 0 0 should be on the floor and between the feet is as good a location as any and bound to be better relationship between measurements of other skeletons than referencing it to some point that is variable between models.
If not 0 0 0 then, for instance there will not be an obvious height value, and if not approximately in the center of the model, then animation gets hard fast. Can't really compare skeleton dimensions unless the reference value is at the floor and approximately centered in x y z. Hard to compare skeletons and share animations if measurement reference is at a certain (variable) landmark (like a joint) (This was done when Root was not used and some made 0 0 0 at some joint.)
Thanks and Best,
Joe
Thanks,
Joe
-----Original Message-----
From: Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>
Sent: Apr 24, 2024 8:10 AM
To: Carol McDonald <cemd2 at comcast.net>, Joe D Williams <joedwil at earthlink.net>
Cc: Anita Havele <anita.havele at web3d.org>, Doug Sanden <gpugroup at gmail.com>, Emma Scott <connect at fashionshouldempower.com>, Holger Seelig <holger.seelig at yahoo.de>, John Carlson <yottzumm at gmail.com>, Humanoid Animation (H-Anim) Working Group <h-anim at web3d.org>, Katy Schildmeyer <katy at ksappareldesign.com>, Myeong Won Lee <myeongwonlee at gmail.com>, Richard F. Puk <puk at igraphics.com>, William Glascoe <eosocxo at comcast.net>, x3d-public at web3d.org <x3d-public at web3d.org>, Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>
Subject: RE: Technical-Specification-Portable-Avatar-Format-MPAI-PAF-V1
Thanks for the close look at these capabilities, Joe and Carol. Glad it is worth review for possible benefits.
To your question: it is possible to extend LOA1 and LOA2 within any individual model, simply by adding additional joints/segments feature points, geometry and skin. The only limitation is that behavior animations (interpolators or HAnimMotion nodes) will not be targeting those added nodes. Often such differences are not a problem, since LOA1 and LOA2 joints are carefully chosen to be sufficient for meaningful motion.
If a suitable MPAI example is available, may I suggest close examination and then remodeling using HAnim2/X3D4. That will allow precise comparison and correlation between the representations. It will be interesting to see how much alignment is possible.
Proposing changes is always possible, but given the existing functionality and flexibility of LOA1 and LOA2, the threshold for accepting such changes would be to show (again through examples) that significant benefit would result.
Meanwhile, our current specification-update roadmap:
* 19775-2 SAI 4.0 working draft ready for submission to Web3D/ISO,
* 19776-1 XML 4.0 working draft essentially complete, inviting comments and finishing review of issues,
* 19776-2 ClassicVRML 4.0 working draft update has started,
* HAnim2/X3D4 possible additions of feature points and errata fixes can be considered,
* Submitting ISO New Work Item Proposals (NWIPs) for SC24 consideration to occur in June.
* Am expecting Web3D will have successfully transitioned to an annual specification-update cycle at that point.
Looking forward to future steady evolution and progress.
all the best, Don
--
Don Brutzman Naval Postgraduate School, Code USW/Br brutzman at nps.edu
Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149
X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman
From: Carol McDonald <cemd2 at comcast.net>
Sent: Wednesday, April 24, 2024 6:26 AM
To: John Carlson <yottzumm at gmail.com>; Joe D Williams <joedwil at earthlink.net>
Cc: Anita Havele <anita.havele at web3d.org>; Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>; Doug Sanden <gpugroup at gmail.com>; Emma Scott <connect at fashionshouldempower.com>; Holger Seelig <holger.seelig at yahoo.de>; Humanoid Animation (H-Anim) Working Group <h-anim at web3d.org>; Katy Schildmeyer <katy at ksappareldesign.com>; Myeong Won Lee <myeongwonlee at gmail.com>; Richard F. Puk <puk at igraphics.com>; William Glascoe <eosocxo at comcast.net>; x3d-public at web3d.org
Subject: Re: Technical-Specification-Portable-Avatar-Format-MPAI-PAF-V1
This is awesome. Let me look at this email and comments, and the linked document and see the adds. I noticed that in the linked document that they reference LOA0 - LOA4. Does this mean that we can or can not propose changes to LOA1 or LOA2? Or that we let this group know of any updates?
Carol
On 04/23/2024 9:31 PM PDT John Carlson <yottzumm at gmail.com (mailto:yottzumm at gmail.com)> wrote:
Hi Joe, this was a bit long for me to get through, but I’ve already suggested that “on the floor between the feet” is not precise enough, in my mind, and I suggest the x location on the floor: between ankles, knees, hips, between any left, right pair of foot joints, or at the x location of a backbone joint or the sacroiliac.
“Between the feet” offers too far of a range of x locations in my mind, and even z is not well defined in my mind.
On Tue, Apr 23, 2024 at 10:34 PM Joe D Williams <joedwil at earthlink.net (mailto:joedwil at earthlink.net)> wrote:
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/20240604/18045a5a/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: JinScaledV2L1LOA4OnlyMarkers11c.zip
Type: application/x-zip-compressed
Size: 78523 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20240604/18045a5a/attachment-0001.bin>
More information about the x3d-public
mailing list