[x3d-public] What is a HAnimHumanoid?

John Carlson yottzumm at gmail.com
Wed Jun 18 14:41:33 PDT 2025


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/20250618/d58158c2/attachment-0001.html>


More information about the x3d-public mailing list