[x3d-public] Problems with HAnimMotion - WAS: RE: Example HAnimMotion node
John Carlson
yottzumm at gmail.com
Thu Oct 23 04:47:49 PDT 2025
Thanks, Holger, that’s the point I was trying to make! CTRL-F works
wonders!
Don, can this be fixed in the archive?
John
On Thu, Oct 23, 2025 at 4:22 AM Holger Seelig via x3d-public <
x3d-public at web3d.org> wrote:
> X_ITE would play that HAnimMotion if it would be enabled, unfortunately it
> has a enabled=‚false‘, which means it should not play at all.
>
> Best regards,
> Holger
>
> —
> Holger Seelig
> holger.seelig at yahoo.de
>
>
> Am 22.10.2025 um 23:30 schrieb Don Brutzman via x3d-public <
> x3d-public at web3d.org>:
>
> [added Dr. Myeong Won Lee plus hanim and x3d-public mailing lists]
>
> BLUF: HAnimMotion is well specified but various implementation efforts
> need improvement.
>
> Thanks for your thoughtful, forward-leaning note and efforts Aaron.
>
> We do have an *HAnimMotion example in the archives*, apologies I missed
> that model earlier:
>
> - X3D Example Archives: Humanoid Animation, Specifications, Korean
> Character Motion Annex D 01 Jin
> - Articulated 3D game character designed with a general graphics tool,
> then converted into an X3D HAnim model.
> -
> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01JinIndex.html
>
> *X3D documentation* links for HAnim in this model:
>
> -
> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01Jin.html#358
> (line 358
> <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01Jin.html#358>
> )
> - Visualization report for HAnimHumanoid model hanim_AnnexD01Jin
> -
> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01Jin.html#AnnexD01JinHAnimHumanoidReport
>
> =============================================================================================================================
> HAnimHumanoid hanim_AnnexD01Jin skeleton holds X3D4 HAnim2 joints/segments with an animating motion node.
> [key] jointname : segmentname ^ sitename
> [nodes] HAnimJoint (18), : HAnimSegment (18), % HAnimDisplacer (0), $ HAnimMotion (1), ^ HAnimSite (0), @ skin nodes (0)
> =============================================================================================================================
> HAnimHumanoid DEF='hanim_AnnexD01Jin name='AnnexD01Jin' loa='-1'motions
> HAnimMotion motion_animation
> skeleton
> humanoid_root : sacrum
> sacroiliac : pelvis
> 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
> vl5 : l5
> skullbase : skull
> l_shoulder : l_upperarm
> | l_elbow : l_forearm
> | l_radiocarpal : l_carpal
> r_shoulder : r_upperarm
> r_elbow : r_forearm
> r_radiocarpal : r_carpal
>
> $ HAnimHumanoid AnnexD01Jin holds 1 HAnimMotion node: motion_animation
> =============================================================================================================================
>
> with matching HAnim specification reference
>
> - HAnim 2.0 Part 2: Humanoid animation (HAnim) motion data animation,
> Annex D (informative) Examples of HAnim motion data animation using a
> Motion object
> -
> https://www.web3d.org/documents/specifications/19774/V2.0/MotionDataAnimation/ExampleMocapAnimationMotionObject.html
>
> Am getting very limited response to this model in current browsers. X_ITE
> repositions but does not play. X3DOM does not support HAnimMotion node,
> Castle Viewer and FreeWrl load the model but are silent about HAnimMotion.
>
> Authoring tool support is provided by X3D-Edit, X3DJSAIL, X3DPSAIL, X3D
> Toolips and all of our XML validation tools. X3D-Edit validation follows -
> this console output matches the build diagnostics created when model
> archives are built and deployed) As ever, if anyone detects missing or
> overzealous tests for Quality Assurance (QA), am happy to add them.
>
> --------- X3D Validator checks commenced for
> KoreanCharacterMotionAnnexD01Jin.x3d ---------
> Performing well-formed XML check...
> Checking file:/C:/x3d-code/
> www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01Jin.x3d.
> ..
> Well-formed XML check: pass
>
> Performing DOCTYPE check...
> [X3dDoctypeChecker] success: valid XML declaration
> found.[X3dDoctypeChecker] success: final X3D 4.0 DOCTYPE found.
>
> Performing DTD validation...
> Checking file:/C:/x3d-code/
> www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01Jin.x3d.
> ..
> Referenced entity at "
> http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd
> ".
> Referenced entity at "http://www.w3.org/2001/XMLSchema.dtd".
> Referenced entity at
> "jrt:/java.xml/jdk/xml/internal/jdkcatalog/w3c/dtd/schema10/datatypes.dtd".
> XML DTD validation: pass
>
> Performing X3D schema validation...
> Checking file:/C:/x3d-code/
> www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01Jin.x3d.
> ..
> Referenced entity at "
> http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd
> ".
> Referenced entity at "http://www.w3.org/2001/XMLSchema.dtd".
> Referenced entity at
> "jrt:/java.xml/jdk/xml/internal/jdkcatalog/w3c/dtd/schema10/datatypes.dtd".
> XML schema validation: pass
>
> Performing X3D regular expression (regex) values check...
> X3D regex check: complete
>
> Performing X3D Schematron check...
> X3D version 4.0 was approved by Web3D Consortium and ISO in 2023.[/X3D,
> diagnostic]
> X3D version 4.0 offers many new features including interoperability with
> HTML5, glTF 2.0 Physically Based Rendering (PBR), and Web Audio API.[/X3D,
> diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> version='2.0'
> with X3D version='4.0' [/X3D/Scene/HAnimHumanoid, diagnostic]
> ====================================================================================================================
> [/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node
> count(HAnimJoint) within skeleton hierarchy =
> 18[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node
> count(HAnimSegment) within skeleton hierarchy =
> 18[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node
> count(HAnimSite) within HAnimHumanoid =
> 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node
> count(HAnimSite//Viewpoint) within skeleton hierarchy =
> 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node
> count(HAnimDisplacer) within skeleton hierarchy =
> 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node
> count(<HAnimJoint USE='*' containerField = 'joints'/>) =
> 18[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node
> count(<HAnimSegment USE='*' containerField = 'segments'/>) =
> 18[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node
> count(<HAnimSite USE='*' containerField = 'sites'/>) =
> 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node
> count(<HAnimSite DEF='*' name ends with '_view'/>) =
> 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> ====================================================================================================================
> [/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimJoint DEF='hanim_l_metatarsophalangeal_2'
> name='l_metatarsophalangeal_2'/> has parent HAnimJoint name='l_talocrural'
> rather than expected parent name='l_tarsometatarsal_2', recommend checking
> model
> [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint,
> warning]
> <HAnimJoint DEF='hanim_r_metatarsophalangeal_2'
> name='r_metatarsophalangeal_2'/> has parent HAnimJoint name='r_talocrural'
> rather than expected parent name='r_tarsometatarsal_2', recommend checking
> model
> [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint,
> warning]
> <HAnimJoint DEF='hanim_vl5' name='vl5'/> has parent HAnimJoint
> name='sacroiliac' rather than expected parent name='humanoid_root',
> recommend checking model
> [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[3], warning]
> <HAnimJoint DEF='hanim_skullbase' name='skullbase'/> has parent HAnimJoint
> name='vl5' rather than expected parent name='vc1', recommend checking model
> [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[3]/HAnimJoint[1],
> warning]
> <HAnimJoint DEF='hanim_l_shoulder' name='l_shoulder'/> has parent
> HAnimJoint name='vl5' rather than expected parent
> name='l_acromioclavicular', recommend checking model
> [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[3]/HAnimJoint[2],
> warning]
> <HAnimJoint DEF='hanim_r_shoulder' name='r_shoulder'/> has parent
> HAnimJoint name='vl5' rather than expected parent
> name='r_acromioclavicular', recommend checking model
> [/X3D/Scene/HAnimHumanoid/HAnimJoint[1]/HAnimJoint/HAnimJoint[3]/HAnimJoint[3],
> warning]
>
> --------- X3D Validator checks complete for
> KoreanCharacterMotionAnnexD01Jin.x3d ---------
>
> *Implementation recap. * If memory serves, we depended on the Suwon HAnim
> Editor for animation demonstrations of this example. To my knowledge,
> unfortunately no public version this tool has been shared, but we did see
> some compelling demonstrations together at the Web3D 2025 Conference in
> Siena. I've copied Dr. Myeong Won Lee is you would like to pursue that
> further.
>
> HAnimMotion is based directly on BVH files for motion-capture data. BVH
> has been widely implemented but inconsistently utilized... No particular
> standard can be found, and it seems to have been popular partly because the
> company BioVision was no longer in existence and thus unable to assert
> IPR or sue anyone.
>
> - Wikipedia: Biovision Hierarchy
> - https://en.wikipedia.org/wiki/Biovision_Hierarchy
>
> Usually we are pretty insistent and onerous about insisting on 2
> implementations before advancing any node in the standards. There may have
> been another implementation besides the Suwon codebase, am simply not
> sure. Given that it is very closely aligned with BVH, and we had multiple
> tools with a validating non-trivial example, I think we might have
> (reluctantly) moved forward with only one player... again, not sure. Sorry
> to be uncertain. Hopefully we did not blunder.
>
> I don't blame you for questioning whether to go forward if no
> implementations exist... that is the primary bargain we make with the X3D
> and HAnim standards. Nevertheless I have high confidence that HAnimMotion
> node is well specified, HAnimMotion data is validatable, and
> HAnimMotion can be consistently repeatable by other X3D players.
>
> I welcome any corrections and improvements to the Example Archives model.
>
> Thank you for pursuing this. There are many thousands of BVH models out
> there (with some format variations and looseness involved). It will be
> great when we become adept at massaging & converting them into well-defined
> HAnimMotion nodes (X3D-Edit has an initial implementation). If we become
> really capable at that task, especially if using your planned
> implementation, we might then work on BVH validation reports during
> conversion as diagnostics, and perhaps even direct import (as a HAnimMotion
> node url field) as part of the draft HAnim v2.1 specification.
>
> Seems like much excellent capability beckons! Onward...
>
> all the best, Don
> --
> X3D Graphics, Maritime Robotics, Distributed Simulation
> Relative Motion Consulting https://RelativeMotion.info
> <https://relativemotion.info/>
>
>
> On Wed, Oct 22, 2025 at 8:46 AM Bergstrom, Aaron <aaron.bergstrom at und.edu>
> wrote:
>
>> All,
>>
>>
>>
>> My particular use case is not to perform any direct BVH to X3D
>> conversion, or vice versa. Rather, my use cases are as follows:
>>
>> 1. BVH data is imported into Maya and applied to a Maya skeleton per
>> established best practices for Maya character animation. Then the animation
>> data is collected from the Maya skeleton by RawKee at export time (the way
>> I currently do it), but instead of being written out as Routes,
>> Interpolators, and a TimeSensor, it is written out as a HAnimMotion node.
>> 2. A Maya animation artists animates an existing Maya character. Then
>> the animation data is collected from the Maya skeleton by RawKee at export
>> time (the way I currently do it), but instead of being written out as
>> Routes, Interpolators, and a TimeSensor, it is written out as a HAnimMotion
>> node.
>>
>>
>>
>> In the end, it doesn’t matter to RawKee whether the original animation
>> data comes from a BVH file or from an animator. I just want to properly
>> populate an HAnimMotion node with animation data.
>>
>>
>>
>> It seems that the only existing HAnimMotion example doesn’t work, and it
>> also appears to not conform to the official X3D spec, per John’s
>> description.
>>
>>
>>
>> I have to question why the HAnimMotion node is even in the X3D spec since
>> there seems to be no working implementation of it in any existing browser,
>> nor even any version of it in an X3D file.
>>
>>
>>
>> Neither X3DOM, nor CGE support the HAnimMotion node.
>>
>>
>>
>> X_ITE documentation says it does, but I don’t see an example of the
>> HAnimMotion node on the X_ITE website, and the one version of the node on
>> the Web3D X3D example site doesn’t seem to work with X_ITE. Though, as
>> discussed by John, that one example doesn’t appear to match the spec anyway.
>>
>>
>>
>> I’m not sure it’s worth implementing HAnimMotion in RawKee if it can’t
>> even be tested in any of the browsers.
>>
>>
>>
>> Aaron
>>
>>
>>
>> *From:* Joe D Williams <joedwil at earthlink.net>
>> *Sent:* Wednesday, October 22, 2025 9:46 AM
>> *To:* Don Brutzman <don.brutzman at gmail.com>; Bergstrom, Aaron <
>> aaron.bergstrom at und.edu>
>> *Cc:* John Carlson <yottzumm at gmail.com>; Joe D Williams <
>> joedwil at earthlink.net>
>> *Subject:* Re: Example HAnimMotion node
>>
>>
>>
>> I would be interested in recoding JoeKick to a BVH, currently thinking of
>> and study of glTF encoding for skeleton.
>>
>> Otherwise I haven't seen anything since Pirroette: *spell check, that we
>> looked at but I basically gave up on.
>> Still potentially a good notsimple example conversion since BVH skeleton
>> obviously did not convert using rules we had then.
>> Maybe now there might be convert BVH to FBX or OBJ or JSON.
>>
>>
>>
>> -----Original Message-----
>> From: Don Brutzman <don.brutzman at gmail.com>
>> Sent: Oct 21, 2025 2:59 PM
>> To: Bergstrom, Aaron <aaron.bergstrom at und.edu>
>> Cc: John Carlson <yottzumm at gmail.com>, Joe D Williams <
>> joedwil at earthlink.net>
>> Subject: Re: Example HAnimMotion node
>>
>>
>> cc: Joe
>>
>>
>>
>> I don't think we have a working example in the archives, and have lost
>> track with what we were doing for testing back then.
>>
>>
>>
>> I'd welcome a simple Motion node example in the archives, for starters.
>> I suggest reaching out to the mailing lists and see who has one.
>>
>>
>>
>> New years resolution, perhaps: we ought to get competent at BVH import
>> and conversion to HAnimMotion node examples.
>>
>>
>>
>> Thanks for asking Aaron.
>>
>>
>>
>> all the best, Don
>>
>> --
>>
>> X3D Graphics, Maritime Robotics, Distributed Simulation
>>
>> Relative Motion Consulting https://RelativeMotion.info
>> <https://relativemotion.info/>
>>
>>
>>
>> On Mon, Oct 20, 2025 at 9:31 PM Bergstrom, Aaron <aaron.bergstrom at und.edu>
>> wrote:
>>
>> Don and John,
>>
>>
>>
>> Do either of you have an example of HAnim content that uses an
>> HAnimMotion node? I don’t see anything in the X3D examples website under
>> HAnim.
>>
>>
>>
>> After reading through the BVH specs, I think I understand how the
>> HAnimMotion node works, but I would like to see a working version of it as
>> an X3D file.
>>
>>
>>
>> Thanks,
>>
>>
>>
>> Aaron
>>
>>
>>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20251023/a3191d9c/attachment-0001.html>
More information about the x3d-public
mailing list