[x3d-public] upgrade HAnim1 to HAnim2 models using X3dTidy.xslt stylesheet conversion; new examples

John Carlson yottzumm at gmail.com
Mon Jul 13 12:00:38 PDT 2020


Way to go Don!  High Five!

I have been struggling with email behavior, luckily targeted at other
individuals.

I think we should work on generating typesafe JavaScript this afternoon,
either generating TypeScript or adding type checking to constructors and
setters.

John

On Mon, Jul 13, 2020 at 12:52 PM Don Brutzman <brutzman at nps.edu> wrote:

> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20200713/1838dd91/attachment-0001.html>


More information about the x3d-public mailing list