[x3d-public] Mantis 1415: HAnimMotion issues: skeletalConfiguration, joint name mappings

Brutzman, Donald (Don) (CIV) brutzman at nps.edu
Wed Dec 28 17:06:58 PST 2022


Joe, while this is typically correct, it is not a requirement.  There is no
rule against

 

a.	BVH definitions matching LOA-1,
b.	BVH definitions renamed so that they match LOA-1,
c.	BVH definitions renamed so that they match HAnim joint names, even
if not within an LOA.

 

So it is quite possible (and sometimes desirable) that a BVH animation be
adapted as a HAnimMotion node that is compliant with other HAnim humanoid
requirements.  No need to invent new constraints. things are detailed enough
already, thank you!

 

For Humanoid and Motion nodes that are indeed designed to be compatible with
each other, it seems helpful to let authors identify skeletalConfiguration
for Motion just as they do for Humanoid.  (Otherwise, why would we have it
at all?)  This also encourages development of compatible/interchangeable
collections of Humanoids and Motions.

 

I agree that an author keeping skeletalConfiguration identifying values
different from any other keyword enumerations would be a good authoring
practice.

 

I think the day is coming when we can further encourage
unambiguous/author-chosen BVH-to-HAnim joint-name mappings.  Some of that
optionally occurs already in the X3D-Edit converter, with all mappings
documented in a MetadataSet table.  Conversion example:

 

*
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/MotionAnimation
/Pirouette.html#BvhPirouette_BvhToX3dConversionImportInformation

 

<Group DEF='
<https://www.web3d.org/x3d/content/examples/HumanoidAnimation/MotionAnimatio
n/Pirouette.html#BvhPirouette_BvhToX3dConversionImportInformation>
BvhPirouette_BvhToX3dConversionImportInformation'>

<!-- 42 BVH JOINT definitions found, following a single HIERARCHY ROOT -->
<!-- BVH HIERARCHY model size computations: minX=-2.48547, maxX=0.0,
width=2.48547; minY=-3.69964, maxY=0.0, height=3.69964; minZ=-0.607171,
maxZ=12.103, depth=12.710170999999999 -->
<!-- Estimated rescaling to meters based on height: scaleFactor=0.1 for
modified height of 0.370m -->
<!-- Vertical offset to move bottom of BVH figure to ground plane (adjusted
in HAnimJoint containerField='skeleton'): heightOffset=0.369964m -->
<MetadataSet name='BvhToHAnimConversionNameTable'>

<!-- key: MetadataString name='bvhName' reference='bvhType'
value='"jointName" "segmentName"' (no segmentName for HAnimSite nodes) -->
<MetadataString name='ROOT_hip' reference='ROOT' value='"humanoid_root"
"sacrum"'/>
<MetadataString name='abdomen' reference='JOINT' value='"abdomen"
"humanoid_root_to_abdomen"'/>
<MetadataString name='chest' reference='JOINT' value='"vl5" "l5"'/>
<MetadataString name='neck' reference='JOINT' value='"neck" "vl5_to_neck"'/>
<MetadataString name='head' reference='JOINT' value='"skullbase" "skull"'/>
<MetadataString name='leftEye' reference='JOINT' value='"leftEye"
"skullbase_to_leftEye"'/>
<MetadataString name='leftEyeSite' reference='Site' value='"leftEye_tip"'/>
<MetadataString name='rightEye' reference='JOINT' value='"rightEye"
"skullbase_to_rightEye"'/>
<MetadataString name='rightEyeSite' reference='Site'
value='"rightEye_tip"'/>
<MetadataString name='rCollar' reference='JOINT' value='"rCollar"
"vl5_to_rCollar"'/>
<MetadataString name='rShldr' reference='JOINT' value='"rShldr"
"rCollar_to_rShldr"'/>
<MetadataString name='rForeArm' reference='JOINT' value='"rForeArm"
"rShldr_to_rForeArm"'/>
<MetadataString name='rHand' reference='JOINT' value='"rHand"
"rForeArm_to_rHand"'/>
<MetadataString name='rThumb1' reference='JOINT' value='"rThumb1"
"rHand_to_rThumb1"'/>
<MetadataString name='rThumb2' reference='JOINT' value='"rThumb2"
"rThumb1_to_rThumb2"'/>
<MetadataString name='rThumb2Site' reference='Site' value='"rThumb2_tip"'/>
<MetadataString name='rIndex1' reference='JOINT' value='"rIndex1"
"rHand_to_rIndex1"'/>
<MetadataString name='rIndex2' reference='JOINT' value='"rIndex2"
"rIndex1_to_rIndex2"'/>
<MetadataString name='rIndex2Site' reference='Site' value='"rIndex2_tip"'/>
<MetadataString name='rMid1' reference='JOINT' value='"rMid1"
"rHand_to_rMid1"'/>
<MetadataString name='rMid2' reference='JOINT' value='"rMid2"
"rMid1_to_rMid2"'/>
<MetadataString name='rMid2Site' reference='Site' value='"rMid2_tip"'/>
<MetadataString name='rRing1' reference='JOINT' value='"rRing1"
"rHand_to_rRing1"'/>
<MetadataString name='rRing2' reference='JOINT' value='"rRing2"
"rRing1_to_rRing2"'/>
<MetadataString name='rRing2Site' reference='Site' value='"rRing2_tip"'/>
<MetadataString name='rPinky1' reference='JOINT' value='"rPinky1"
"rHand_to_rPinky1"'/>
<MetadataString name='rPinky2' reference='JOINT' value='"rPinky2"
"rPinky1_to_rPinky2"'/>
<MetadataString name='rPinky2Site' reference='Site' value='"rPinky2_tip"'/>
<MetadataString name='lCollar' reference='JOINT' value='"lCollar"
"vl5_to_lCollar"'/>
<MetadataString name='lShldr' reference='JOINT' value='"lShldr"
"lCollar_to_lShldr"'/>
<MetadataString name='lForeArm' reference='JOINT' value='"lForeArm"
"lShldr_to_lForeArm"'/>
<MetadataString name='lHand' reference='JOINT' value='"lHand"
"lForeArm_to_lHand"'/>
<MetadataString name='lThumb1' reference='JOINT' value='"lThumb1"
"lHand_to_lThumb1"'/>
<MetadataString name='lThumb2' reference='JOINT' value='"lThumb2"
"lThumb1_to_lThumb2"'/>
<MetadataString name='lThumb2Site' reference='Site' value='"lThumb2_tip"'/>
<MetadataString name='lIndex1' reference='JOINT' value='"lIndex1"
"lHand_to_lIndex1"'/>
<MetadataString name='lIndex2' reference='JOINT' value='"lIndex2"
"lIndex1_to_lIndex2"'/>
<MetadataString name='lIndex2Site' reference='Site' value='"lIndex2_tip"'/>
<MetadataString name='lMid1' reference='JOINT' value='"lMid1"
"lHand_to_lMid1"'/>
<MetadataString name='lMid2' reference='JOINT' value='"lMid2"
"lMid1_to_lMid2"'/>
<MetadataString name='lMid2Site' reference='Site' value='"lMid2_tip"'/>
<MetadataString name='lRing1' reference='JOINT' value='"lRing1"
"lHand_to_lRing1"'/>
<MetadataString name='lRing2' reference='JOINT' value='"lRing2"
"lRing1_to_lRing2"'/>
<MetadataString name='lRing2Site' reference='Site' value='"lRing2_tip"'/>
<MetadataString name='lPinky1' reference='JOINT' value='"lPinky1"
"lHand_to_lPinky1"'/>
<MetadataString name='lPinky2' reference='JOINT' value='"lPinky2"
"lPinky1_to_lPinky2"'/>
<MetadataString name='lPinky2Site' reference='Site' value='"lPinky2_tip"'/>
<MetadataString name='rButtock' reference='JOINT' value='"rButtock"
"humanoid_root_to_rButtock"'/>
<MetadataString name='rThigh' reference='JOINT' value='"rThigh"
"rButtock_to_rThigh"'/>
<MetadataString name='rShin' reference='JOINT' value='"rShin"
"rThigh_to_rShin"'/>
<MetadataString name='rFoot' reference='JOINT' value='"rFoot"
"rShin_to_rFoot"'/>
<MetadataString name='rFootSite' reference='Site' value='"rFoot_tip"'/>
<MetadataString name='lButtock' reference='JOINT' value='"lButtock"
"humanoid_root_to_lButtock"'/>
<MetadataString name='lThigh' reference='JOINT' value='"lThigh"
"lButtock_to_lThigh"'/>
<MetadataString name='lShin' reference='JOINT' value='"lShin"
"lThigh_to_lShin"'/>
<MetadataString name='lFoot' reference='JOINT' value='"lFoot"
"lShin_to_lFoot"'/>
<MetadataString name='lFootSite' reference='Site' value='"lFoot_tip"'/>

</MetadataSet>

 

 

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: Joseph D Williams <joedwil at earthlink.net> 
Sent: Wednesday, December 28, 2022 12:36 PM
To: Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>; X3D Public Mailing List
(x3d-public at web3d.org) <x3d-public at web3d.org>; h-anim at web3d.org
Subject: RE: [x3d-public] Mantis 1415: HAnimMotion issues:
skeletalConfiguration,totalNumberFrames

 

 

1.	HAnimMotion should have a skeletalConfiguration field similar to
HAnimHumanoid to facilitate interoperability.

SFString [in out] skeletalConfiguration "BASIC"

 

The bvh skeleton(s) I have seen does not match any loa of HAnim. The
shoulders and hips are different , along with any  hands and feet joints
provided are different. So, the skeletalConfiguration used for bvh derived
skeleton should not list any current standard HAnim keyword for
configuration or loa. 

I still think we can do a good conversion from bvh skeleton to HAnim
skeleton (bvh bone orientation to rotation of the appropriate parent joint
of correct name) but I don't think I have seen it yet.

Thanks,

Joe

 

 

 

From: Brutzman, Donald (Don) (CIV) <mailto:brutzman at nps.edu> 
Sent: Monday, December 26, 2022 6:19 PM
To: X3D Public Mailing List (x3d-public at web3d.org)
<mailto:x3d-public at web3d.org> ; h-anim at web3d.org <mailto:h-anim at web3d.org> 
Subject: [x3d-public] Mantis 1415: HAnimMotion issues:
skeletalConfiguration,totalNumberFrames

 

Comment requested.

 

*	https://www.web3d.org/member-only/mantis/view.php?id=1415

 

1. HAnimMotion should have a skeletalConfiguration field similar to
HAnimHumanoid to facilitate interoperability.

SFString [in out] skeletalConfiguration "BASIC"

* HAnim2 vol. 1, 4.8 Modelling of humanoids
*
<https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/conc
epts.html#ModellingOfHumanoids>
https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/conce
pts.html#ModellingOfHumanoids

* X3D Architecture, 26.3.2 HAnimHumanoid
*
<https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01
/components/hanim.html#HAnimHumanoid>
https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/
components/hanim.html#HAnimHumanoid

----

2. Need a field describing number of rows in a motion value array, otherwise
(if no channelsEnabled array is provided) there is no unambiguous way to
determine the correct value. Suggested:

SFInt32 [in out] totalNumberFrames [0, +infinity)

* HAnim2 vol. 2, 6.3 Data structure of Motion object
*
<https://www.web3d.org/documents/specifications/19774/V2.0/MotionDataAnimati
on/MotionNodes.html#MotionObject>
https://www.web3d.org/documents/specifications/19774/V2.0/MotionDataAnimatio
n/MotionNodes.html#MotionObject

* X3D Architecture, 26.3.4 HAnimMotion
*
<https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01
/components/hanim.html#HAnimMotion>
https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/
components/hanim.html#HAnimMotion

----

3. If accepted, each of these needs a corresponding Mantis comment for
future revision of HAnim2.

 

all the best, Don

-- 

Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman at nps.edu
<mailto: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/20221229/f86794f4/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5353 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20221229/f86794f4/attachment-0001.p7s>


More information about the x3d-public mailing list