[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