[x3d-public] No Transform/Group/Shape inside HAnimJoint?

Don Brutzman don.brutzman at gmail.com
Tue Sep 9 03:49:03 PDT 2025


Hi John.  Option 3 please.  Recommend fixing the example models, not
deleting the example models.

The X3D specification implementation of the HAnim specification, both of
which are authoritative, clearly shows that Transform/Group/Shape child
nodes belong under HAnimSegment, not under HAnimJoint.

* 26.3.5 HAnimSegment
*
https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimSegment

No doubt the errors you have reported here are already detected and
reported repeatedly by X3D XML Schema,X3D DOCTYPE, and X3D Schematron.
Periodic unit testing logs capture such errors, X3D-Edit can check
validation comprehensively as well  Proper validation and correction of
models prevents Garbage In Garbage Out (GIGO) syndrome.

Incidentally, a large number of people have worked long + hard for years to
implement both specifications.  There is no need to worry about “fixing”
the authoritative HAnim and X3D specifications unless you have a valid
example demonstrating why such a change is needed.

Have fun with valid X3D models!  🥸👌

all the best, Don
-- 
Don Brutzman
X3D graphics, virtual worlds, Navy robotics
https://faculty.nps.edu/brutzman


On Mon, Sep 8, 2025 at 8:36 PM John Carlson via x3d-public <
x3d-public at web3d.org> wrote:

> I suggest we either deep six examples with Transform/Group/Shape children of HAnimJoint, or fix the standard.
>
>
>
> Here's the standard I am referring to:
>
> https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimJoint
>
>
>
> HAnimJoint : X3DGroupingNode {
>   MFNode     [in]     addChildren               [HAnimJoint,HAnimSegment]
>   MFNode     [in]     removeChildren            [HAnimJoint,HAnimSegment]
>   SFVec3f    [in,out] center           0 0 0    (-∞,∞)`
>   MFNode     [in,out] children         []       [HAnimJoint,HAnimSegment]
>   SFString   [in,out] description      ""
>   MFNode     [in,out] displacers       []       [HAnimDisplacer]
>   SFBool     [in,out] bboxDisplay      FALSE
>   SFRotation [in,out] limitOrientation 0 0 1 0  [-1,1] or (-∞,∞)
>   MFFloat    [in,out] llimit           [0 0 0]  (-∞,∞)
>   SFNode     [in,out] metadata         NULL     [X3DMetadataObject]
>   SFString   [in,out] name             ""
>   SFRotation [in,out] rotation         0 0 1 0  [-1,1] or (-∞,∞)
>   SFVec3f    [in,out] scale            1 1 1    (0,∞)
>   SFRotation [in,out] scaleOrientation 0 0 1 0  [-1,1] or (-∞,∞)
>   MFInt32    [in,out] skinCoordIndex   []       [0,∞)
>   MFFloat    [in,out] skinCoordWeight  []       [0,1]
>   MFFloat    [in,out] stiffness        [0 0 0]  [0,1]
>   SFVec3f    [in,out] translation      0 0 0    (-∞,∞)
>   MFFloat    [in,out] ulimit           [0 0 0]  (-∞,∞)
>   SFBool     [in,out] visible          TRUE
>   SFVec3f    []       bboxCenter       0 0 0    (-∞,∞)
>   SFVec3f    []       bboxSize         -1 -1 -1 [0,∞) or −1 −1 −1
> }
>
>
> See examples in the archive, e.g.:
>
> Humanoid Animation X3D Examples Archive, Winter And Spring, Lily Animated <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/LilyAnimatedIndex.html>
>
> Humanoid Animation X3D Examples Archive, Winter And Spring, Leif Animated <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/LeifAnimatedIndex.html>
>
>
> Humanoid Animation X3D Examples Archive, Winter And Spring, Tufani Animated <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/TufaniAnimatedIndex.html>
>
> If HAnimJoint IS a X3DGroupingNode, then X3DChildNodes should be acceptable.  Is that how to read the standard?
>
>
> https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/grouping.html#X3DGroupingNode
>
> 10.3.2 *X3DGroupingNode*
>
> X3DGroupingNode : X3DChildNode, X3DBoundedObject {
>   MFNode  [in]     addChildren             [X3DChildNode]
>   MFNode  [in]     removeChildren          [X3DChildNode]
>   MFNode  [in,out] children       []       [X3DChildNode]
>   SFBool  [in,out] bboxDisplay    FALSE
>   SFNode  [in,out] metadata       NULL     [X3DMetadataObject]
>   SFBool  [in,out] visible        TRUE
>   SFVec3f []       bboxCenter     0 0 0    (-∞,∞)
>   SFVec3f []       bboxSize       -1 -1 -1 [0,∞) or −1 −1 −1
> }
>
> Anyway, that seems *REALLY* confusing!  Any clarification on "overloading" of fields welcome!
>
>
> Thanks,
>
>
> John
>
> _______________________________________________
> 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/20250909/c0a32911/attachment-0001.html>


More information about the x3d-public mailing list