[x3d-public] What is a HAnimHumanoid?

John Carlson yottzumm at gmail.com
Tue Jul 8 23:42:59 PDT 2025


26.3.5 HAnimSegment

HAnimSegment : X3DGroupingNode {
  MFNode   [in]     addChildren                          [X3DChildNode]
  MFNode   [in]     removeChildren                       [X3DChildNode]
  SFBool   [in,out] bboxDisplay      FALSE
  SFVec3f  [in,out] centerOfMass     0 0 0               (-∞,∞)
  MFNode   [in,out] children         []                  [X3DChildNode]
  SFNode   [in,out] coord            NULL
[Coordinate|CoordinateDouble]
  SFString [in,out] description      ""
  MFNode   [in,out] displacers       []                  [HAnimDisplacer]
  SFFloat  [in,out] mass             0                   [0,∞)
  SFNode   [in,out] metadata         NULL                [X3DMetadataObject]
  MFFloat  [in,out] momentsOfInertia [0 0 0 0 0 0 0 0 0] [0,∞)
  SFString [in,out] name             ""
  SFBool   [in,out] visible          TRUE
  SFVec3f  []       bboxCenter       0 0 0               (-∞,∞)
  SFVec3f  []       bboxSize         -1 -1 -1            [0,∞) or −1 −1 −1
}


No scale, translation or rotation.  Not a Transform.  If intended to
be a Transform, I suggest adding the appropriate fields to the
standard.


John


On Tue, Jul 8, 2025 at 11:48 AM Joe D Williams <joedwil at earthlink.net>
wrote:

>
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/components/hanim.html#HAnimSegment
>
>
>
> HI John,
>
> for the x3d implementation of HAnim, the HAnimSegment (and HAnimHumanoid
> and HAnimJoint, and HAnimSite) is  basically a Transform with some added
> fields.
>
> Thanks,
>
> Joe
>
>
>
> -----Original Message-----
> From: John Carlson <yottzumm at gmail.com>
> Sent: Jun 18, 2025 2:49 PM
> To: Joe D Williams <joedwil at earthlink.net>
> Cc: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org>,
> <h-anim at web3d.org>
> Subject: Re: [x3d-public] What is a HAnimHumanoid?
>
>
> To aid discussion, here’s Segment from HAnim specification, version 2.1
> (previously linked):
>
> [image: cube] 6.4 Segment
>
> The Segment object is a container for information about a segment of the
> body.
>
>     *interface Segment {*
>        float[3]           bboxCenter       0 0 0             (-∞,∞)
>        float[3]           bboxSize         -1 -1 -1          [0,∞) or -1
>        float[3]           centerOfMass     0 0 0             (-∞,∞)
>        sequence<Object>   children         []                [*Site*, indexed mesh objects as defined by the representation]
>        sequence<float[3]> coord            []                (-∞,∞)
>        string             description      ""
>        sequence<Object>   displacers       []                [*Displacer*]
>        float              mass             0                 [0,∞) or -1
>        float[9]           momentsOfInertia 0 0 0 0 0 0 0 0 0 (-∞,∞)
>        string             name             *required name*
>     *}*
>
>
> On Wed, Jun 18, 2025 at 4:28 PM John Carlson <yottzumm at gmail.com> wrote:
>
>> Joe, please check for scale, translation and scale fields in the
>> specification under Segment or HAnimSegment.   If you have something
>> different in HAnim v2.1 or X3D v4.1, great.
>>
>>
>> For example, I looked here, in HAnim v2.1, but did not see the fields:
>>
>>
>> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/ObjectInterfaces.html#Segment
>>
>> I would be in agreement to add them, if needed.
>> Thanks,
>>
>> John
>>
>> On Wed, Jun 18, 2025 at 2:07 PM Joe D Williams <joedwil at earthlink.net>
>> wrote:
>>
>>> Yes, John,
>>>
>>> Humanoid, Joint, Segment,and Site are all Grouping nodes,
>>>
>>> like Transform and all Transform fields are in them, plus.
>>>
>>> Thanks,
>>>
>>> Joe
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> -----Original Message-----
>>> From: John Carlson <yottzumm at gmail.com>
>>> Sent: Jun 18, 2025 10:57 AM
>>> To: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org
>>> >
>>> Cc: Joe D Williams <joedwil at earthlink.net>
>>> Subject: Re: [x3d-public] What is a HAnimHumanoid?
>>>
>>>
>>> In my mind, Segments are more about holding Sites, Displacers, Grouping
>>> nodes and geometry (coord, for example) than being Transforms (check for
>>> fields in Transform to see if they are in Segments, particularly
>>> translation, rotation and scale).   It would be more correct to call
>>> Segment a Group than a Transform.
>>>
>>> If we change that in HAnim 2.1, great.
>>>
>>> On Wed, Jun 18, 2025 at 12:38 PM Joe D Williams via x3d-public <
>>> x3d-public at web3d.org> wrote:
>>>
>>>> Hi Holger,
>>>>
>>>> Yes, HAnim structure can support 'anything' articulated.
>>>>
>>>> But so can basic X3D, recalling that the Humanoid,
>>>>
>>>> the Joint, the Segment, and the Site are just Transforms
>>>>
>>>> with extra parameters and a carefully defined hierarchy.
>>>>
>>>> So any Level 1 (segment geometry) Humanoid
>>>>
>>>> can be produced using basic Transform nodes.
>>>>
>>>>
>>>>
>>>> Most interesting is that the great features of
>>>>
>>>> Displacers and Joint-driven skin animation are
>>>>
>>>> only available with HAnimHumanoid container.
>>>>
>>>> Another is the fact that we don't DEF/USE Joint
>>>>
>>>> nodes in HAnim but if you wanted to do a crab
>>>>
>>>> or something with opposed, synchronized joints,
>>>>
>>>> you could DEF the Joint structure, then Transform
>>>>
>>>> and USE it somewhere else, and use the same
>>>>
>>>> animation.
>>>>
>>>> But it would not validate as a spec Humanoid.
>>>>
>>>>
>>>>
>>>> That is the main objective of the HAnim standard,
>>>>
>>>> to define a model aimed at realistic prospect of
>>>>
>>>> being able to reuse animations designed for
>>>>
>>>> a standard humanoid character/avatar.
>>>>
>>>>
>>>>
>>>> Note that there is a possibility of adding an Annex
>>>>
>>>> to the19774 document explaining more
>>>>
>>>> general uses of the hanim model hierarchies and
>>>>
>>>> animation capabilities.
>>>>
>>>> Maybe check the HAnim 2.1 update now in progress.
>>>>
>>>>
>>>>
>>>> So, yes, the hanim component adds several
>>>>
>>>> extensions and interfaces to basic x3d that
>>>>
>>>> are absent from basic x3d, and this makes
>>>>
>>>> a necessary temptation to compose a complex
>>>>
>>>> character then to author it using HAnim container
>>>>
>>>> and try to validate using HAnim object model.
>>>>
>>>> HAnim WG is always looking for features to
>>>>
>>>> add to basic x3d and to hanim in order to cover
>>>>
>>>> standardizable realistic articulations for authortime
>>>>
>>>> and runtime capabilities.
>>>>
>>>>
>>>>
>>>> In fact, any creature creator could revise
>>>>
>>>> x3d object model to 'standardize' validation
>>>>
>>>> of any articulated character configuration.
>>>>
>>>>
>>>>
>>>> Any examples of various creatures could be
>>>>
>>>> added to archives for x3d basic examples or
>>>>
>>>> to hanim if they use hanim nodes.
>>>>
>>>>
>>>>
>>>> Thanks and Best,
>>>>
>>>> Joe
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: Extensible 3D (X3D) Graphics public discussion <
>>>> x3d-public at web3d.org>
>>>> Sent: Jun 18, 2025 7:47 AM
>>>> To: X3D <x3d-public at web3d.org>
>>>> Cc: Holger Seelig <holger.seelig at yahoo.de>
>>>> Subject: [x3d-public] What is a HAnimHumanoid?
>>>>
>>>>
>>>> As it turns out more things than a human body can be a HAnimHumanoid:
>>>>
>>>> A almost real humanoid (you still may know):
>>>>
>>>>
>>>> https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/media/examples/HAnim/HAnimHumanoid/HAnimHumanoid.x3d
>>>>
>>>> Not a humanoid, no it’s an animal, but still very humanoid (head, body,
>>>> legs):
>>>>
>>>>
>>>> https://create3000.github.io/x_ite/laboratory/gltf-sample-viewer/?url=https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Fox/glTF/Fox.gltf
>>>>
>>>> Now, things get more and more weird…
>>>>
>>>> It's not a humanoid; it's an alien, as humans imagine them.
>>>>
>>>>
>>>> https://create3000.github.io/x_ite/laboratory/gltf-sample-viewer/?url=https://create3000.github.io/media/glTF/Walking%20Alien/Walking%20Alien.gltf
>>>>
>>>> Still a life form, but it's a plant:
>>>>
>>>>
>>>> https://create3000.github.io/x_ite/laboratory/gltf-sample-viewer/?url=https://create3000.github.io/x_ite/assets/teaser/pluto/palm_tree_-_animated.glb
>>>>
>>>> Not even alive, no, it's a engine:
>>>>
>>>>
>>>> https://create3000.github.io/x_ite/laboratory/gltf-sample-viewer/?url=https://create3000.github.io/media/glTF/Futuristic%20Bike/Futuristic%20Bike.gltf
>>>>
>>>> The main purpose of showing you this is to demonstrate that the
>>>> HAnimHumanoid node can be used for many more objects than just a human
>>>> body. The advantage is that all the complex animation processes can be
>>>> handled by the GPU, while the CPU only performs minor translation and
>>>> rotation interpolation. There is no need for a CoordinateInterpolator or a
>>>> NormalInterpolator!
>>>>
>>>> All of this can be achieved using the current HAnim specification.
>>>> However, I would like to demonstrate how it can be used for purposes beyond
>>>> those initially considered.
>>>> All these model (except first) are glTF models converted to X3D and
>>>> using HAnim nodes for glTF skinning objects, which can be easily translated
>>>> into X3D.
>>>>
>>>> However, this calls into question the use of a strict set of
>>>> HAnimJoint/Segment names and the HAnimHumanoid.loa field.
>>>> Best regards,
>>>> Holger
>>>>
>>>>>>>> Holger Seelig
>>>> holger.seelig at yahoo.de
>>>>
>>>>
>>>> _______________________________________________
>>>> 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/20250709/feb5cf45/attachment-0001.html>


More information about the x3d-public mailing list