<div dir="auto">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.</div><div dir="auto"><br></div><div dir="auto">If we change that in HAnim 2.1, great.</div><div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Wed, Jun 18, 2025 at 12:38 PM Joe D Williams via x3d-public <<a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div style="font-family:arial,sans-serif;font-size:12pt;color:rgb(0,0,0)"><p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Hi Holger, </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Yes, HAnim structure can support 'anything' articulated. </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">But so can basic X3D, recalling that the Humanoid,</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">the Joint, the Segment, and the Site are just Transforms </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">with extra parameters and a carefully defined hierarchy.</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">So any Level 1 (segment geometry) Humanoid</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">can be produced using basic Transform nodes. </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Most interesting is that the great features of</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Displacers and Joint-driven skin animation are </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">only available with HAnimHumanoid container.</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Another is the fact that we don't DEF/USE Joint</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">nodes in HAnim but if you wanted to do a crab</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">or something <span style="font-size:12pt;font-family:arial,sans-serif">with opposed, synchronized joints, </span></p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"><span style="font-size:12pt;font-family:arial,sans-serif">you could </span>DEF the Joint structure, then Transform</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">and USE it somewhere else, and use the same</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">animation.</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">But it would not validate as a spec Humanoid. </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">That is the main objective of the HAnim standard,</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">to define a model aimed at realistic prospect of</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">being able to reuse animations designed for</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">a standard humanoid character/avatar.</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Note that there is a possibility of adding an Annex</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">to the19774 document explaining more</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">general uses of the hanim model hierarchies and</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">animation capabilities. </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Maybe check the HAnim 2.1 update now in progress.</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">So, yes, the hanim component adds several</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">extensions and interfaces to basic x3d that</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">are absent from basic x3d, and this makes</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">a necessary temptation to compose a complex</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">character then to author it using HAnim container</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">and try to validate using HAnim object model. </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">HAnim WG is always looking for features to</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">add to basic x3d and to hanim in order to cover</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">standardizable realistic articulations for authortime</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">and runtime capabilities. </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">In fact, any creature creator could revise</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">x3d object model to 'standardize' validation</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">of any articulated character <span style="font-size:12pt;font-family:arial,sans-serif">configuration. </span></p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Any examples of various creatures could be </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">added to archives for x3d basic examples or</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">to hanim if they use hanim nodes. </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Thanks and Best,</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Joe</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
</div>
<div style="border-left-width:1px;border-left-style:solid;box-sizing:border-box;padding:10px 0px 10px 15px;margin:0px;border-left-color:rgb(170,170,170)">
<p>-----Original Message-----<br>From: Extensible 3D (X3D) Graphics public discussion <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br>Sent: Jun 18, 2025 7:47 AM<br>To: X3D <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br>Cc: Holger Seelig <<a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a>><br>Subject: [x3d-public] What is a HAnimHumanoid?</p>
<p style="margin:0.1rem 0px;line-height:1"> </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" target="_blank">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" target="_blank">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="color:rgb(0,0,0)">Now, t</span>hings get more and more weird…</div>
<div><span style="color:rgb(0,0,0)"> </span></div>
<div><span style="color:rgb(0,0,0)">It's not a humanoid; it's an alien, as humans imagine them.</span></div>
<div><span style="color:rgb(0,0,0)"> </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" target="_blank">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" target="_blank">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" target="_blank">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="color:rgb(0,0,0)"> </span></div>
<div><span style="color:rgb(0,0,0)">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="color:rgb(0,0,0)">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="color:rgb(0,0,0)">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="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space;color:rgb(0,0,0)">
<div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space;color:rgb(0,0,0)">
<div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space;color:rgb(0,0,0)">
<div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space;color:rgb(0,0,0)">
<div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space;color:rgb(0,0,0)">
<div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space;color:rgb(0,0,0)">
<div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space;color:rgb(0,0,0)">
<div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space;color:rgb(0,0,0)">
<div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space;color:rgb(0,0,0)">
<div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space;color:rgb(0,0,0)">
<div dir="auto" style="text-align:start;text-indent:0px;line-break:after-white-space">
<div style="letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)">—</div>
<div style="letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;color:rgb(0,0,0)">Holger Seelig<br><a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a><br><br></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p style="margin:0.1rem 0px;line-height:1"> </p>_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</blockquote></div></div>