<div style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:12pt"><p style="margin: 0.1rem 0; line-height: 1.0;">Hi Holger, </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Yes, HAnim structure can support 'anything' articulated. </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">But so can basic X3D, recalling that the Humanoid,</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">the Joint, the Segment, and the Site are just Transforms </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">with extra parameters and a carefully defined hierarchy.</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">So any Level 1 (segment geometry) Humanoid</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">can be produced using basic Transform nodes. </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Most interesting is that the great features of</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Displacers and Joint-driven skin animation are </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">only available with HAnimHumanoid container.</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Another is the fact that we don't DEF/USE Joint</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">nodes in HAnim but if you wanted to do a crab</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">or something <span style="font-size: 12pt;">with opposed, synchronized joints, </span></p>
<p style="margin: 0.1rem 0; line-height: 1.0;"><span style="font-size: 12pt;">you could </span>DEF the Joint structure, then Transform</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">and USE it somewhere else, and use the same</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">animation.</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">But it would not validate as a spec Humanoid. </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">That is the main objective of the HAnim standard,</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">to define a model aimed at realistic prospect of</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">being able to reuse animations designed for</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">a standard humanoid character/avatar.</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Note that there is a possibility of adding an Annex</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">to the19774 document explaining more</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">general uses of the hanim model hierarchies and</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">animation capabilities. </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Maybe check the HAnim 2.1 update now in progress.</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">So, yes, the hanim component adds several</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">extensions and interfaces to basic x3d that</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">are absent from basic x3d, and this makes</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">a necessary temptation to compose a complex</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">character then to author it using HAnim container</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">and try to validate using HAnim object model. </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">HAnim WG is always looking for features to</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">add to basic x3d and to hanim in order to cover</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">standardizable realistic articulations for authortime</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">and runtime capabilities. </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">In fact, any creature creator could revise</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">x3d object model to 'standardize' validation</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">of any articulated character <span style="font-size: 12pt;">configuration. </span></p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Any examples of various creatures could be </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">added to archives for x3d basic examples or</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">to hanim if they use hanim nodes. </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Thanks and Best,</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Joe</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
</div>
<div class="elnk-inline-message-container" style="border-left: 1px solid #aaa; box-sizing: border-box; padding: 10px 0 10px 15px; margin: 0;">
<p>-----Original Message-----<br>From: Extensible 3D (X3D) Graphics public discussion <x3d-public@web3d.org><br>Sent: Jun 18, 2025 7:47 AM<br>To: X3D <x3d-public@web3d.org><br>Cc: Holger Seelig <holger.seelig@yahoo.de><br>Subject: [x3d-public] What is a HAnimHumanoid?</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<div>As it turns out more things than a human body can be a HAnimHumanoid:</div>
<div> </div>
<div>A almost real humanoid (you still may know):</div>
<div> </div>
<div>
<div><a href="https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/media/examples/HAnim/HAnimHumanoid/HAnimHumanoid.x3d">https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/media/examples/HAnim/HAnimHumanoid/HAnimHumanoid.x3d</a></div>
</div>
<div> </div>
<div>Not a humanoid, no it’s an animal, but still very humanoid (head, body, legs):</div>
<div> </div>
<div><a href="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">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</a></div>
<div> </div>
<div><span style="caret-color: #000000; color: #000000;">Now, t</span>hings get more and more weird…</div>
<div><span style="caret-color: #000000; color: #000000;"> </span></div>
<div><span style="caret-color: #000000; color: #000000;">It's not a humanoid; it's an alien, as humans imagine them.</span></div>
<div><span style="caret-color: #000000; color: #000000;"> </span></div>
<div><a href="https://create3000.github.io/x_ite/laboratory/gltf-sample-viewer/?url=https://create3000.github.io/media/glTF/Walking%20Alien/Walking%20Alien.gltf">https://create3000.github.io/x_ite/laboratory/gltf-sample-viewer/?url=https://create3000.github.io/media/glTF/Walking%20Alien/Walking%20Alien.gltf</a></div>
<div> </div>
<div>Still a life form, but it's a plant:</div>
<div> </div>
<div><a href="https://create3000.github.io/x_ite/laboratory/gltf-sample-viewer/?url=https://create3000.github.io/x_ite/assets/teaser/pluto/palm_tree_-_animated.glb">https://create3000.github.io/x_ite/laboratory/gltf-sample-viewer/?url=https://create3000.github.io/x_ite/assets/teaser/pluto/palm_tree_-_animated.glb</a></div>
<div> </div>
<div>Not even alive, no, it's a engine:</div>
<div> </div>
<div><a href="https://create3000.github.io/x_ite/laboratory/gltf-sample-viewer/?url=https://create3000.github.io/media/glTF/Futuristic%20Bike/Futuristic%20Bike.gltf">https://create3000.github.io/x_ite/laboratory/gltf-sample-viewer/?url=https://create3000.github.io/media/glTF/Futuristic%20Bike/Futuristic%20Bike.gltf</a></div>
<div><span style="caret-color: #000000; color: #000000;"> </span></div>
<div><span style="caret-color: #000000; color: #000000;">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!</span></div>
<div>
<p style="caret-color: #000000; color: #000000;">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.</p>
</div>
<div>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.</div>
<div>
<p style="caret-color: #000000; color: #000000;">However, this calls into question the use of a strict set of HAnimJoint/Segment names and the HAnimHumanoid.loa field.</p>
</div>
Best regards,
<div>Holger</div>
<div><br>
<div>
<div dir="auto" style="caret-color: #000000; color: #000000; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div dir="auto" style="caret-color: #000000; color: #000000; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div dir="auto" style="caret-color: #000000; color: #000000; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div dir="auto" style="caret-color: #000000; color: #000000; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div dir="auto" style="caret-color: #000000; color: #000000; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div dir="auto" style="caret-color: #000000; color: #000000; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div dir="auto" style="caret-color: #000000; color: #000000; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div dir="auto" style="caret-color: #000000; color: #000000; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div dir="auto" style="caret-color: #000000; color: #000000; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div dir="auto" style="caret-color: #000000; color: #000000; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div dir="auto" style="text-align: start; text-indent: 0px; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div style="caret-color: #000000; color: #000000; letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">—</div>
<div style="caret-color: #000000; color: #000000; letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">Holger Seelig<br>holger.seelig@yahoo.de<br><br></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>