[x3d-public] HAnimPose node design and initial prototype started
Brutzman, Donald (Don) (CIV)
brutzman at nps.edu
Sat Apr 5 12:32:03 PDT 2025
[cc: HAnim and x3d-public mailing lists]
Joe, first: the demo model you are working on looks valuable and interesting, thanks for showing that. Please send a copy when you have a version you are willing to share, and I'll add that too.
Joe, next: thanks for the excellent design discussions on HAnimPose. Am really liking where we landed:
*
Confirmation that specification defines one and only one allowed default pose for HAnimHumanoid
*
Namely "I" pose, with corresponding skeletalConfiguration="BASIC"
*
This remains true if an alternate model has a source pose other than "I" pose - the joint bindings bring it back to having all Joints with default values (zeroed positions and scales, zero-angle rotations),
*
Knowing that a pose is applied against that initial I pose let's us design a repeatable reusable node,
*
Only defining pose values for a short set of PoseJoints of interest (names, positions, rotations) keeps definitions very terse, and (if the author chooses joints wisely, sticking to LOA-1 joints) consistently animatable across all LOAs also.
*
Think of HAnimPose as a one-shot animation of the HAnimHumanoid skeleton
*
Defer sequencing and transitions between multiple HAnimPose nodes for now, perhaps later designing something like a new "HAnimPoseInterpolator" node
*
I added the ability to pose multiple HAnimHumanoid nodes by patterning after a Switch node
The example we crafted is now deployed online:
*
X3D Example Archives: Humanoid Animation, Pose, HAnimPose Prototype
*
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Pose
*
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Pose/HAnimPosePrototypeIndex.html
HAnimPose : X3DGroupingNode {
SFBool [in, out] enabled TRUE
SFBool [in] setPose
SFString [in, out] name "" # required
MFString [in, out] namesPoseJoints [] # triplets only for joints of interest
MFVec3f [in, out] positionsPoseJoints [] # triplets only for joints of interest
MFVec3f [in, out] rotationsPoseJoints [] # triplets only for joints of interest
MFNode [in, out] children [] [HAnimHumanoid] # typically USE nodes
MFNode [in] addChildren [HAnimHumanoid]
MFNode [in] removeChildren [HAnimHumanoid]
SFInt32 [in, out] whichChoice -1 [-1, infinity]
}
Current assessment:
*
The prototype declaration to define an instantiable node and corresponding fields looks helpful,
*
The embedded Script node has accessor methods for fields, and pseudocode outline of future functionality
*
including the two A and T poses as ProtoInstance examples gives us a target for simple development tests.
*
No blockers yet seen that might prevent full implementation and evaluations, though the embedded JavaScript code might require a SMOP or two...
*
https://en.wikipedia.org/wiki/Small_matter_of_programming
Implementation TODO:
*
Implementation of HAnimPose script pseudocode in JavaScript,
*
See if we can use X3D IMPORT/EXPORT statements for testing of various HAnimHumanoid models that are already in the archives,
*
Revise the draft design notes, first attempt at
*
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Pose/HAnimPoseDesignNotes19MAR2025.pdf
*
Start collecting and archiving a set of actual interoperable poses for further evaluation,
*
Draft prose for HAnim 2.1 and X3D Architecture 4.1 specifications.
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: Brutzman, Donald (Don) (CIV)
Sent: Tuesday, March 25, 2025 7:48 AM
To: Carol McDonald; Katy Schildmeyer KS APPAREL DESIGN
Cc: Joseph D Williams; Myeong Won Lee; Nicholas Polys; puk at igraphics.com; William Glascoe; Bill Benman
Subject: HAnimPose notes, plans
Carol, ICYMI here are the notes that I sent to Joe and HAnim list about a week ago, which we briefly discussed last Friday.
Katy, apologies but my current responsibilities teaching one more course and preparing to retire on 30 JUN 2025 prevent me from participating in the MSF and IEEE groups related to avatars and clothing. I look forward to learning more, and hopefully participating, by starting later in the coming months.
Joe and I have begun discussing this document and will continue. Summary of current thinking:
1.
HAnim 2.0 Architecture defines baseline requirement for any HAnimHumanoid to have
*
Default pose in "I" pose with all HAnimJoint values zeroed.
*
skeletalConfiguration="BASIC" to confirm this.
*
If geometry of original body is not in "I" pose then 5 fields can adjust it accordingly (jointBinding* and skinBinding* fields)
2.
Given that common HAnimHumanoid baseline, all motion animations can start using a common configuration
*
and are therefore repeatable across all BASIC HanimHumanoid models.
*
This generality is super powerful! Animations become reusable.
3.
If we need to modify the HAnim and X3D specifications, we can. No specific problems encountered yet.
*
HAnim 2.0 Architecture, 4.8.2 Modelling of human-like HAnim figures<https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/concepts.html#ModellingOfHumanLikeHAnimFigures>
*
HAnim 2.0 Architecture, 4.8.3 Poses<https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/concepts.html#Poses>
Next... how can we have a more-general pose capability?
1.
The attached notes define candidate design goals and corresponding fields.
2.
Am thinking that we should start simply at first. Perhaps we might think of a pose as sort of a "freeze frame" animation that zeroes all HAnimJoint values and then modifies only the joints needed to show that pose.
3.
Using the provided capabilities of X3D and HAnim, deliberately avoiding any need for changes by browsers, will help speed progress.
4.
Building an X3D prototype, with a Script node to first find and reset all LOA1 HAnimJoint nodes, seems like a good path to show some initial results.
Carol and Katy, looking past that, once we become competent at "striking a pose" then it will be good to look at use cases for expected coveroid activities. I think that once we have some simple working examples (such as "I", "A" and "T" poses, we will be able to consider
*
Are HAnimPose nodes independent of individual HAnimHumanoid bodies?
*
Conversely, might an individual HAnimHumanoid include a set of embedded HAnimPose nodes that that can either activated one at a time, or deliberately animated from one to another?
Joe, looking forward to working further with you on this worthy challenge.
Having fun with HAnim! 🙂 🧜♂️🚶♀️🏃♂️🕴
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250405/85935085/attachment-0001.html>
More information about the x3d-public
mailing list