[x3d-public] What is a HAnimHumanoid?
Joe D Williams
joedwil at earthlink.net
Tue Jul 8 09:47:32 PDT 2025
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):
6.4 SegmentThe 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 (mailto: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 (mailto: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 (mailto:yottzumm at gmail.com)>
Sent: Jun 18, 2025 10:57 AM
To: Extensible 3D (X3D) Graphics public discussion <x3d-public at web3d.org (mailto:x3d-public at web3d.org)>
Cc: Joe D Williams <joedwil at earthlink.net (mailto: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 (mailto: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 (mailto:x3d-public at web3d.org)>
Sent: Jun 18, 2025 7:47 AM
To: X3D <x3d-public at web3d.org (mailto:x3d-public at web3d.org)>
Cc: Holger Seelig <holger.seelig at yahoo.de (mailto: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 (mailto:holger.seelig at yahoo.de)
_______________________________________________
x3d-public mailing list
x3d-public at web3d.org (mailto: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/20250708/a4098393/attachment-0001.html>
More information about the x3d-public
mailing list