[x3d-public] upgrade HAnim1 to HAnim2 models using X3dTidy.xslt stylesheet conversion; new examples
Don Brutzman
brutzman at nps.edu
Mon Jul 13 10:52:10 PDT 2020
1. HAnim1 to HAnim2 conversion.
X3dTidy.xslt stylesheet is now able to perform HAnim1 to HAnim2 conversion, demonstrated on multiple models.
Am happy to report that a new build is online for the new HumanoidAnimation collection in the X3D Examples Archive.
[1] HumanoidAnimation X3D Examples Archive
https://www.web3d.org/x3d/content/examples/HumanoidAnimation
Examples of HAnim1 to HAnim2 conversions are copied from console logs in the following reference, with excerpts following:
[2] HumanoidAnimation HAnim2 build.conversions.log.txt
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/build.conversions.log.txt
next check X3dTidy...
C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//KoreanCharacter01Jin.x3d processing with X3dTidy.xslt stylesheet for tidied-up .x3d
*** HAnim2 DEF replaced: HAnimJoint DEF='hanim_l_ankle' alias replaced with standardized newDEFvalue='hanim_l_talocrural'
*** HAnim2 name replaced: HAnimJoint name='l_ankle' alias with preferred name='l_talocrural'
*** HAnim2 DEF replaced: HAnimSegment DEF='hanim_l_hindfoot' alias replaced with standardized newDEFvalue='hanim_l_talus'
*** HAnim2 name replaced: HAnimSegment name='l_hindfoot' alias with preferred name='l_talus'
*** HAnim2 DEF replaced: HAnimJoint DEF='hanim_l_midtarsal' alias replaced with standardized newDEFvalue='hanim_l_metatarsophalangeal_2'
*** HAnim2 name replaced: HAnimJoint name='l_midtarsal' alias with preferred name='l_metatarsophalangeal_2'
*** HAnim2 DEF replaced: HAnimSegment DEF='hanim_l_middistal' alias replaced with standardized newDEFvalue='hanim_l_tarsal_proximal_phalanx_2'
*** HAnim2 name replaced: HAnimSegment name='l_middistal' alias with preferred name='l_tarsal_proximal_phalanx_2'
*** HAnim2 DEF replaced: HAnimJoint DEF='hanim_r_ankle' alias replaced with standardized newDEFvalue='hanim_r_talocrural'
*** HAnim2 name replaced: HAnimJoint name='r_ankle' alias with preferred name='r_talocrural'
*** HAnim2 DEF replaced: HAnimSegment DEF='hanim_r_hindfoot' alias replaced with standardized newDEFvalue='hanim_r_talus'
*** HAnim2 name replaced: HAnimSegment name='r_hindfoot' alias with preferred name='r_talus'
*** HAnim2 DEF replaced: HAnimJoint DEF='hanim_r_midtarsal' alias replaced with standardized newDEFvalue='hanim_r_metatarsophalangeal_2'
*** HAnim2 name replaced: HAnimJoint name='r_midtarsal' alias with preferred name='r_metatarsophalangeal_2'
*** HAnim2 DEF replaced: HAnimSegment DEF='hanim_r_middistal' alias replaced with standardized newDEFvalue='hanim_r_tarsal_proximal_phalanx_2'
*** HAnim2 name replaced: HAnimSegment name='r_middistal' alias with preferred name='r_tarsal_proximal_phalanx_2'
*** HAnim2 DEF replaced: HAnimJoint DEF='hanim_l_wrist' alias replaced with standardized newDEFvalue='hanim_l_radiocarpal'
*** HAnim2 name replaced: HAnimJoint name='l_wrist' alias with preferred name='l_radiocarpal'
*** HAnim2 DEF replaced: HAnimSegment DEF='hanim_l_hand' alias replaced with standardized newDEFvalue='hanim_l_carpal'
*** HAnim2 name replaced: HAnimSegment name='l_hand' alias with preferred name='l_carpal'
*** HAnim2 DEF replaced: HAnimJoint DEF='hanim_r_wrist' alias replaced with standardized newDEFvalue='hanim_r_radiocarpal'
*** HAnim2 name replaced: HAnimJoint name='r_wrist' alias with preferred name='r_radiocarpal'
*** HAnim2 DEF replaced: HAnimSegment DEF='hanim_r_hand' alias replaced with standardized newDEFvalue='hanim_r_carpal'
*** HAnim2 name replaced: HAnimSegment name='r_hand' alias with preferred name='r_carpal'
*** HAnim2 USE replaced: HAnimJoint USE='hanim_l_ankle' alias replaced with standardized newUSEvalue='hanim_l_talocrural'
*** HAnim2 USE replaced: HAnimJoint USE='hanim_r_ankle' alias replaced with standardized newUSEvalue='hanim_r_talocrural'
*** HAnim2 USE replaced: HAnimJoint USE='hanim_l_midtarsal' alias replaced with standardized newUSEvalue='hanim_l_metatarsophalangeal_2'
*** HAnim2 USE replaced: HAnimJoint USE='hanim_r_midtarsal' alias replaced with standardized newUSEvalue='hanim_r_metatarsophalangeal_2'
*** HAnim2 USE replaced: HAnimJoint USE='hanim_l_wrist' alias replaced with standardized newUSEvalue='hanim_l_radiocarpal'
*** HAnim2 USE replaced: HAnimJoint USE='hanim_r_wrist' alias replaced with standardized newUSEvalue='hanim_r_radiocarpal'
*** HAnim2 USE replaced: HAnimSegment USE='hanim_l_hand' alias replaced with standardized newUSEvalue='hanim_l_carpal'
*** HAnim2 USE replaced: HAnimSegment USE='hanim_r_hand' alias replaced with standardized newUSEvalue='hanim_r_carpal'
*** HAnim2 USE replaced: HAnimSegment USE='hanim_l_hindfoot' alias replaced with standardized newUSEvalue='hanim_l_talus'
*** HAnim2 USE replaced: HAnimSegment USE='hanim_r_hindfoot' alias replaced with standardized newUSEvalue='hanim_r_talus'
*** HAnim2 USE replaced: HAnimSegment USE='hanim_l_middistal' alias replaced with standardized newUSEvalue='hanim_l_tarsal_proximal_phalanx_2'
*** HAnim2 USE replaced: HAnimSegment USE='hanim_r_middistal' alias replaced with standardized newUSEvalue='hanim_r_tarsal_proximal_phalanx_2'
=========================================================================================
HAnimHumanoid skeleton holds HAnimJoint : HAnimSegment : HAnimSite triplets (X3D4 HAnim2)
=========================================================================================
HAnimHumanoid DEF='hanim_Jin name='Jin'
humanoid_root : sacrum
l_hip : l_thigh
| l_knee : l_calf
| l_ankle (HAnim2 name replaced: l_talocrural) : l_hindfoot (HAnim2 name replaced: l_talocrural)
| l_midtarsal (HAnim2 name replaced: l_metatarsophalangeal_2) : l_middistal (HAnim2 name replaced: l_metatarsophalangeal_2)
r_hip : r_thigh
| r_knee : r_calf
| r_ankle (HAnim2 name replaced: r_talocrural) : r_hindfoot (HAnim2 name replaced: r_talocrural)
| r_midtarsal (HAnim2 name replaced: r_metatarsophalangeal_2) : r_middistal (HAnim2 name replaced: r_metatarsophalangeal_2)
sacroiliac : pelvis
l_shoulder : l_upperarm
| l_elbow : l_forearm
| l_wrist (HAnim2 name replaced: l_radiocarpal) : l_hand (HAnim2 name replaced: l_radiocarpal)
r_shoulder : r_upperarm
| r_elbow : r_forearm
| r_wrist (HAnim2 name replaced: r_radiocarpal) : r_hand (HAnim2 name replaced: r_radiocarpal)
vl5 : l5
skullbase : skull
===========================================================================
... with subsequent recheck of modified source X3D model showing:
next check X3dTidy...
C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//KoreanCharacter01Jin.x3d processing with X3dTidy.xslt stylesheet for tidied-up .x3d
=========================================================================================
HAnimHumanoid skeleton holds HAnimJoint : HAnimSegment : HAnimSite triplets (X3D4 HAnim2)
=========================================================================================
HAnimHumanoid DEF='hanim_Jin name='Jin'
humanoid_root : sacrum
l_hip : l_thigh
| l_knee : l_calf
| l_talocrural : l_talus
| l_metatarsophalangeal_2 : l_tarsal_proximal_phalanx_2
r_hip : r_thigh
| r_knee : r_calf
| r_talocrural : r_talus
| r_metatarsophalangeal_2 : r_tarsal_proximal_phalanx_2
sacroiliac : pelvis
l_shoulder : l_upperarm
| l_elbow : l_forearm
| l_radiocarpal : l_carpal
r_shoulder : r_upperarm
| r_elbow : r_forearm
| r_radiocarpal : r_carpal
vl5 : l5
skullbase : skull
===========================================================================
Interestingly the specific stylesheet rules used to create diagnostics and corrections are autogenerated from parent-child-alias information in X3D XML Schema and X3D Unified Object Model (X3DUOM).
All of the latest Quality Assurance (QA) efforts are documented with diagnostics, warnings and error messages.
[3] build.X3dSchematronX3dTidy.log.txt
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/build.X3dSchematronX3dTidy.log.txt
----
2. Increasing fidelity and support.
Am also happy to report addition of four Jin models illustrating progressive Level of Articulation (LOA) 1, 2, 3, and 4. LOA 4 consists of full human skeleton, including high-fidelity hands and feet.
[3] X3D Example Archives: Humanoid Animation, Characters (X3D4, HAnim2)
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters
[3.1] X3D Example Archives: Humanoid Animation, Characters, Jin LOA 1
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA1Index.html
[3.2] X3D Example Archives: Humanoid Animation, Characters, Jin LOA 2
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA2Index.html
[3.3] X3D Example Archives: Humanoid Animation, Characters, Jin LOA 3
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA3Index.html
[3.4] X3D Example Archives: Humanoid Animation, Characters, Jin LOA 4
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA1Index.html
Although these were previously lost two summers ago, special thanks to Myeong Won Lee for recovering them. Only minor changes were necessary to pass all conformance testing.
In addition to Web3D archives, all HumanoidAnimation models are maintained in version control at
[4] SourceForge X3D Examples, HumanoidAnimation
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/HumanoidAnimation
Implementation note. These work in X3DOM. We believe the following requirements must be met to also achieve X_ITE support:
- For <component> statement, in the newly released HAnim standard, we have removed the hyphen from "H-Anim".
- In the corresponding X3D4 specification, version 2 "HAnim" component will be correct.
- In X3D3 specification, "H-Anim" component will be unchanged.
- HAnimHumanoid node now includes version="2.0" in X3D version="4.0".
[5] X3D Tooltips 4.0, HAnimHumanoid
https://www.web3d.org/x3d/content/X3dTooltips.html#HAnimHumanoid
----
3. Better and Better.
As one might guess, immense attention to detail is necessary for ensuring in-depth Quality Assurance (QA) of high-fidelity human skeletons. Our current diagnostics cover Joint, Segment and Site hierarchies from the new specification. Next coming into view for further efforts this summer: HAnimMotion.
[6] HAnim2 Specification
https://www.web3d.org/documents/specifications/19774/V2.0
Thanks to Joe Williams and John Carlson for weekly HAnim videoconferences that have been essential for climbing this mountain. The journey continues, others may find it interesting too.
All questions and improvements welcome. Have fun with X3D4 and HAnim2! 8)
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 http://faculty.nps.edu/brutzman
More information about the x3d-public
mailing list