<div dir="ltr"><div dir="ltr"><div dir="ltr">We continued working through Carol McDonald's excellent list of potential changes to HAnim Architecture.<div><br></div><div>As part of weekly editor meetings with Dick, Carol, Joe and (occasionally) Myeong, I have prepared Mantis issues for tracking progress and applying proposed changes. The full Mantis issues are accessible to Web3D Consortium members.</div><div><br></div><div>=========================================================================</div><div><br></div><div>We first worked on wording for Level of Articulation (LOA) to improve clarity.</div><div><ul><li>HAnim draft v2.1 specification, clause 4 Concepts, 4.8.5 Levels of articulation (LOA)</li><li><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/concepts.html#LevelsOfArticulation">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/concepts.html#LevelsOfArticulation</a></li></ul><div><h2 style="margin-top:18px;color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif"><font size="2"><span class="gmail-proposed" title="editorial" style="background-color:yellow">4.8.5 Levels of articulation</span> <span class="gmail-proposed" title="editorial" style="background-color:yellow">(LOA)</span></font></h2><p style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif">Level of articulation (LOA) represents the complexity and detail of joints for a humanoid skeletal hierarchy, and can be used for generating various motions based on the joints.</p><p style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif"><span class="gmail-proposed" title="editorial" style="background-color:yellow">Defining the LOA for a given humanoid is useful for sharing interoperable animations.</span> <span class="gmail-proposed" title="editorial" style="background-color:yellow">The <code style="">humanoid_root</code> Joint is always required for every LOA, so that the location and orientation of the Humanoid can be moved within a scene.</span></p><p style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif">There are five levels of articulation. <span class="gmail-proposed" title="editorial" style="background-color:yellow">Each lower LOA remains a strict subset of higher LOAs, and so animations for lower LOAs also work as satisfactory animations for higher LOAs.</span></p><ul style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif"><li style="margin-top:4px">LOA‑0 represents only the <code style="">humanoid_root</code> Joint object without an accompanying hierarchy, as shown in (<a href="#f-LOA0Joint">Figure 4.3</a>).</li><li style="margin-top:4px">LOA‑1 represents the simplest organization and hierarchy of joints for a humanoid. There are <span class="gmail-proposed" title="editorial" style="background-color:yellow">up to</span> 18 joints and 18 segments. Each segment has a joint in the hierarchy. <a href="#f-LOA1Joints">Figure 4.4</a> <span class="gmail-proposed" title="proposed" style="background-color:yellow">shows all of the specific</span> <span class="gmail-proposedDeletion" title="editorial" style="background-color:orange;text-decoration-line:line-through">represents</span> LOA‑1 joints.</li><li style="margin-top:4px">LOA‑2 consists of <span class="gmail-proposed" title="editorial" style="background-color:yellow">up to</span> 71 joints and 71 segments (<a href="#f-LOA2Joints">Figure 4.5</a>).</li><li style="margin-top:4px">LOA‑3 consists of <span class="gmail-proposed" title="editorial" style="background-color:yellow">up to</span> 94 joints and 94 segments (<a href="#f-LOA3Joints">Figure 4.6</a>).</li><li style="margin-top:4px">LOA‑4 builds on LOA‑3 by adding anatomical details of hands and feet (<a href="#f-LOA4Joints">Figure 4.7</a>). LOA‑4 consists of <span class="gmail-proposed" title="editorial" style="background-color:yellow">up to</span> 148 joints and 148 segments. Hands and feet joints for LOA‑4 are illustrated in <a href="#TheHands">4.9.3</a> and <a href="#TheFeet">4.9.4</a> respectively.</li></ul><p class="gmail-proposed" title="editorial" style="color:rgb(0,0,0);background-color:yellow;font-family:Verdana,Arial,Helvetica,sans-serif">Animation interoperability is a key design goal of LOA representations. Some of the predefined joints for a given LOA might be omitted, and other joints may be included in the given model, but animation for missing (or added) joints might not occur. Animations for higher LOAs can work for humanoids at lower LOAs, but unused animation events are ignored without error.</p><p class="editorsNote" title="editorial" style="color:rgb(0,0,0);background-color:lightcyan;font-family:Verdana,Arial,Helvetica,sans-serif"><font size="1">TODO. Specification editors and the HAnim Working Group are considering inclusion of additional joints in various LOAs, in order to better support modeling of clothing and possibly to encourage interoperable animation with other specifications.</font></p><p class="editorsNote" title="editorial" style="color:rgb(0,0,0);background-color:lightcyan;font-family:Verdana,Arial,Helvetica,sans-serif"><font size="1">TODO. Specification editors are considering proper names for each LOA in order to better communicate the functionality of LOA use cases. For example:</font></p><ul class="editorsNote" title="editorial" style="background-color:lightcyan;color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif"><li style="margin-top:4px"><font size="1">LOA-0. Humanoid location and direction</font></li><li style="margin-top:4px"><font size="1">LOA-1. Simple animation and poses.</font></li><li style="margin-top:4px"><font size="1">LOA-2. Everyday motion and sports.</font></li><li style="margin-top:4px"><font size="1">LOA-3. Clothing and apparel.</font></li><li style="margin-top:4px"><font size="1">LOA-4. Anatomically correct human skeleton.</font></li></ul></div></div><div>=========================================================================</div><div><ul><li>Mantis 1502: coordination issue for HAnim 2.1 features supporting clothing and coveroid</li><li><a href="https://mantis.web3d.org/view.php?id=1502" target="_blank">https://mantis.web3d.org/view.php?id=1502</a></li><li>This is a coordination issue for HAnim 2.1 features supporting clothing and coveroid.<br><br>Carol McDonald has submitted a large number of suggested enhancements and capability improvements. We are steadily reviewing them. Direct enhancements are made by editor consensus, while potential major changes require full review and consensus building by HAnim and X3D working groups.<br><br>* HAnim Architecture r2 (recommendations by Carol McDonald)<br>* <a href="https://docs.google.com/document/d/1IMCr83o0hEq-ga5YYpxqTUM09D2A3Tdq/edit" target="_blank">https://docs.google.com/document/d/1IMCr83o0hEq-ga5YYpxqTUM09D2A3Tdq/edit</a><br><br>Also proposed with direct potential impact to clothing/coveroids and animation: Pose node (aka HAnimPose in X3D).</li></ul><div>=========================================================================</div></div><div><ul><li>Mantis 1503: add new feature points for Site node</li><li><a href="https://mantis.web3d.org/view.php?id=1503" target="_blank">https://mantis.web3d.org/view.php?id=1503</a></li></ul><div><table style="font-family:Poppins;border-collapse:collapse;border-spacing:0px;width:1239.09px;max-width:100%;margin-bottom:0px;border-width:0px;border-style:solid;border-color:rgb(229,229,229) rgb(221,221,221) rgb(221,221,221);color:rgb(57,57,57);font-size:13px;border-radius:0px"><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;padding:5px;text-align:left;color:rgb(0,0,0);vertical-align:top;line-height:1.42857;border-width:1px 0px;border-style:solid;border-color:rgb(221,221,221);border-radius:0px;background-color:rgb(237,243,244)">Description</th><td colspan="5" style="box-sizing:border-box;padding:5px;line-height:1.42857;vertical-align:top;border-width:1px 0px;border-style:solid;border-color:rgb(221,221,221);border-radius:0px">Add additional new feature points for Site node.<br style="box-sizing:border-box"><br style="box-sizing:border-box">* ensure well-defined with corresponding references when appropriate (in documentation, at least)<br style="box-sizing:border-box">* careful consistency with naming conventions<br style="box-sizing:border-box">* synonyms and alias terms identified, often correlating different authoritative references<br style="box-sizing:border-box"><br style="box-sizing:border-box">Suggested changes:<br style="box-sizing:border-box">* HAnim Architecture r2 (recommendations by Carol McDonald)<br style="box-sizing:border-box">* <a href="https://docs.google.com/document/d/1IMCr83o0hEq-ga5YYpxqTUM09D2A3Tdq/edit" rel="noopener" style="box-sizing:border-box;background-color:transparent;color:rgb(51,122,183);text-decoration-line:none" target="_blank">https://docs.google.com/document/d/1IMCr83o0hEq-ga5YYpxqTUM09D2A3Tdq/edit</a></td></tr><tr style="box-sizing:border-box"><th style="box-sizing:border-box;padding:5px;text-align:left;color:rgb(0,0,0);vertical-align:top;line-height:1.42857;border-width:1px 0px;border-style:solid;border-color:rgb(221,221,221);border-radius:0px;background-color:rgb(237,243,244)">Additional Information</th><td colspan="5" style="box-sizing:border-box;padding:5px;line-height:1.42857;vertical-align:top;border-width:1px 0px;border-style:solid;border-color:rgb(221,221,221);border-radius:0px">* Humanoid animation (HAnim) architecture draft 2.1, clause 4 Concepts, Table 4.7 — Site and Segment relationships<br style="box-sizing:border-box">* <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/concepts.html#t-SiteSegments" rel="noopener" style="box-sizing:border-box;background-color:transparent;color:rgb(51,122,183);text-decoration-line:none" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/concepts.html#t-SiteSegments</a><br style="box-sizing:border-box"><br style="box-sizing:border-box">* Humanoid animation (HAnim) architecture draft 2.1, Annex B (informative), Feature points for the human body<br style="box-sizing:border-box">* <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/FeaturePoints.html" rel="noopener" style="box-sizing:border-box;background-color:transparent;color:rgb(51,122,183);text-decoration-line:none" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/FeaturePoints.html</a><br style="box-sizing:border-box"><br style="box-sizing:border-box">* various sections and figures, especially Table B.2 — Feature points<br style="box-sizing:border-box">* <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/FeaturePoints.html#t-FeaturePoints" rel="noopener" style="box-sizing:border-box;background-color:transparent;color:rgb(51,122,183);text-decoration-line:none" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/FeaturePoints.html#t-FeaturePoints</a><br style="box-sizing:border-box"><br style="box-sizing:border-box">* X3D Tooltips, HAnimSite<br style="box-sizing:border-box">* <a href="https://www.web3d.org/x3d/tooltips/X3dTooltips.html#HAnimSite" rel="noopener" style="box-sizing:border-box;background-color:transparent;color:rgb(51,122,183);text-decoration-line:none" target="_blank">https://www.web3d.org/x3d/tooltips/X3dTooltips.html#HAnimSite</a><br style="box-sizing:border-box"><br style="box-sizing:border-box">* HAnim2 Name - HAnim1 Alias Tables<br style="box-sizing:border-box">* <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/HAnim2NameHAnim1AliasTables.txt" rel="noopener" style="box-sizing:border-box;background-color:transparent;color:rgb(51,122,183);text-decoration-line:none" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/HAnim2NameHAnim1AliasTables.txt</a></td></tr></tbody></table></div></div><div><br></div><div>Much planning and discussion detail follows within the Mantis issue. Some additions have been applied and can be observed at</div><div><ul><li>Table 4.7 — Site and Segment relationships</li><li><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/concepts.html#t-SiteSegments">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/concepts.html#t-SiteSegments</a> </li><li>look to bottom of table, more entries will follow from Carol's clothing-motivated list</li></ul><div><br></div><div><table summary="Table 4.7 — Site and Segment relationships" style="width:1330.95px;border-style:groove;border-width:medium;border-collapse:collapse;margin-bottom:18px;margin-left:auto;margin-right:auto;color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px;text-align:center"><tbody><tr style="padding:8px;font-size:14.72px;border-style:groove;border-width:medium"><th style="padding:8px;border-style:groove;border-width:medium"><font size="1">Index</font></th><th style="padding:8px;border-style:groove;border-width:medium"><font size="1">Site name</font></th><th style="padding:8px;border-style:groove;border-width:medium"><font size="1">Segment names<br> for LOA‑4</font></th><th style="padding:8px;border-style:groove;border-width:medium"><font size="1">Segment names<br>for LOA‑3</font></th><th style="padding:8px;border-style:groove;border-width:medium"><font size="1">Segment names <br>for LOA‑2</font></th><th style="padding:8px;border-style:groove;border-width:medium"><font size="1">Segment names for <br>LOA‑1</font></th><th style="padding:8px;border-style:groove;border-width:medium"><font size="1">Segment names <br>for LOA‑0</font></th></tr></tbody></table></div><div><table summary="Table 4.7 — Site and Segment relationships" style="width:1330.95px;border-style:groove;border-width:medium;border-collapse:collapse;margin-bottom:18px;margin-left:auto;margin-right:auto;color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px;text-align:center"><tbody><tr class="gmail-proposed" title="Mantis 1503" style="padding:8px;border-style:groove;border-width:medium;background-color:yellow"><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">121</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">l_axilla</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">l_clavicle</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">l_clavicle</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">l_clavicle</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">l5</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">sacrum</font></td></tr><tr class="gmail-proposed" title="Mantis 1503" style="padding:8px;border-style:groove;border-width:medium;background-color:yellow"><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">122</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">r_axilla</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">r_clavicle</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">r_clavicle</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">r_clavicle</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">l5</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">sacrum</font></td></tr><tr class="gmail-proposed" title="Mantis 1503" style="padding:8px;border-style:groove;border-width:medium;background-color:yellow"><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">123</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">l_underbust</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">t8</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">t8</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">t6</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">l5</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">sacrum</font></td></tr><tr class="gmail-proposed" title="Mantis 1503" style="padding:8px;border-style:groove;border-width:medium;background-color:yellow"><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">124</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">r_underbust</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">t8</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">t8</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">t6</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">l5</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">sacrum</font></td></tr><tr class="gmail-proposed" title="Mantis 1503" style="padding:8px;font-size:14.72px;border-style:groove;border-width:medium;background-color:yellow"><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">125</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">virtual_crotch</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">pelvis</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">pelvis</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">x_ischium<span class="editorsNote" style="background-color:lightcyan"><br>sacroiliac or hip?</span></font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">x_ischium</font></td><td style="padding:8px;border-style:groove;border-width:medium;text-align:left"><font size="1">sacrum</font></td></tr></tbody></table></div><div>=========================================================================</div></div><div><ul><li>Mantis 1504: Consider Pose node (aka HAnimPose in X3D) to support inclusion of I, A, T, other poses within Humanoid</li><li><a href="https://mantis.web3d.org/view.php?id=1504" target="_blank">https://mantis.web3d.org/view.php?id=1504</a></li></ul></div><div><table style="font-family:Poppins;border-collapse:collapse;border-spacing:0px;width:1239.09px;max-width:100%;margin-bottom:0px;border-width:0px;border-style:solid;border-color:rgb(229,229,229) rgb(221,221,221) rgb(221,221,221);color:rgb(57,57,57);font-size:13px;border-radius:0px"><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;padding:5px;text-align:left;color:rgb(0,0,0);vertical-align:top;line-height:1.42857;border-width:1px 0px;border-style:solid;border-color:rgb(221,221,221);border-radius:0px;background-color:rgb(237,243,244)">Description</th><td colspan="5" style="box-sizing:border-box;padding:5px;line-height:1.42857;vertical-align:top;border-width:1px 0px;border-style:solid;border-color:rgb(221,221,221);border-radius:0px">Consider Pose node (aka HAnimPose in X3D) to support inclusion of I, A, T, other poses within Humanoid<br style="box-sizing:border-box"><br style="box-sizing:border-box">Current specification omission: prose defines I, A, T, other poses conceptually but provides no means of defining them. Only adjustments for I pose are permitted.<br style="box-sizing:border-box"><br style="box-sizing:border-box">Having multiple poses present will also offer opportunity for additional animation between poses, either interpolating smoothly or switching immediately.<br style="box-sizing:border-box"><br style="box-sizing:border-box">Related, once poses are better defined:<br style="box-sizing:border-box">* coherent discussion on possible new definitions for "posture" concepts.<br style="box-sizing:border-box">* Getting clear on Pose definitions first seems necessary because posture changes are likely relative to the original (or current) pose of the humanoid.<br style="box-sizing:border-box">* Preliminary conjecture: might posture be defined from perspective of actual physical human individual, while pose remains (increasing well defined) for the virtual HAnim model.<br style="box-sizing:border-box"><br style="box-sizing:border-box">Related, but not constraining: this capability may relate to definitions for skeletalConfiguration parameter, which is only defined currently for BASIC. This is a design opportunity and prose omission that can best be addressed once Pose and posture are both satisfactorily defined.</td></tr></tbody></table></div><div><br></div><div>This is a start at defining initial goals clearly for an important topic that (historically at least) can lead to much ambiguity.</div><div><br>=========================================================================</div><div><ul><li>Mantis 1505: Joint minAngle, maxAngle constraints to define limits for joint range of motion (ROM)</li><li><a href="https://mantis.web3d.org/view.php?id=1505" target="_blank">https://mantis.web3d.org/view.php?id=1505</a></li></ul><div>Dick and I made further useful progress during discussions today.</div></div><div><br></div><div><table style="font-family:Poppins;border-collapse:collapse;border-spacing:0px;width:1239.09px;max-width:100%;margin-bottom:0px;border-width:0px;border-style:solid;border-color:rgb(229,229,229) rgb(221,221,221) rgb(221,221,221);color:rgb(57,57,57);font-size:13px;border-radius:0px"><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;padding:5px;text-align:left;color:rgb(0,0,0);vertical-align:top;line-height:1.42857;border-width:1px 0px;border-style:solid;border-color:rgb(221,221,221);border-radius:0px;background-color:rgb(237,243,244)">Description</th><td colspan="5" style="box-sizing:border-box;padding:5px;line-height:1.42857;vertical-align:top;border-width:1px 0px;border-style:solid;border-color:rgb(221,221,221);border-radius:0px">Concept: if we already have constraints on rotation axis, and now add constraints on rotation angle, then we can hopefully express Range of Motion (ROM) limits for a given Joint.<br style="box-sizing:border-box"><br style="box-sizing:border-box">Goal: try to define SFFloat min/max angle limits, applied to each joint rotation, at least for planar rotations.<br style="box-sizing:border-box"><br style="box-sizing:border-box">Angle only limits the angular portion of the axis-angle SFRotation for each Joint, which is in the 'rotation' field.<br style="box-sizing:border-box"><br style="box-sizing:border-box">These might possibly provide a fairly natural representation for range of motion (ROM) constraints.<br style="box-sizing:border-box"><br style="box-sizing:border-box">Further demonstration needed to determine whether these are also useful for out-of-plane rotations, which remains an important prerequisite. In other words, if a Joint axis varies somewhat (which often occurs for human joints) then it needs to be shown that minAngle/maxAngle constraints (tuned to a given set of axis rotations) are still helpful and not confounding.<br style="box-sizing:border-box"><br style="box-sizing:border-box">Context: minAngle/maxAngle values constrain the angle of the rotation, while llimit/ulimit/rotationAngle constraints restrict the axis of the rotation. Thus these fields together define the allowed range of spherical Joint rotation.<br style="box-sizing:border-box"><br style="box-sizing:border-box">Note that actual received animation values (provided via diverse sources) might readily exceed such constraints. The animation values are independent, the presentation of the joint is what gets effectively clamped.<br style="box-sizing:border-box"><br style="box-sizing:border-box">* <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/ObjectInterfaces.html#Joint" rel="noopener" style="box-sizing:border-box;background-color:transparent;color:rgb(51,122,183);text-decoration-line:none" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/ObjectInterfaces.html#Joint</a></td></tr></tbody></table></div><div><br></div><div><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">Current specification limits on Joint define allowed axis variation using llimit, ulimit, limitOrientation</span><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">"The ulimit and llimit fields of the Joint object specify the upper and lower joint rotation limits. Both fields are three-element float sequences containing separate values for the X, Y and Z rotation limits. The ulimit field stores the upper (i.e. maximum) values for rotation around the X, Y and Z axes. The llimit field stores the lower (i.e., minimum) values for rotation around those axes. A sequence containing zero elements indicates that the joint is unconstrained. A non-empty sequence can only consist of a single three-value element. If ulimit and llimit values are provided, both must be defined together. If llimit and ulimit are equal, no constraints are applied to Joint object rotations."</span><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">(Incidentally we are not actually sure where this concept originated, but suspect such values might be produced by IK or mocap tools.)</span></div><div><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">---</span></div><div><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">HAnim standard:</span><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">* HAnim v2.1 draft Architecture, clause 6 Object interfaces, 6.3 Joint</span><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">* </span><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/ObjectInterfaces.html#Joint" rel="noopener" style="box-sizing:border-box;font-family:Poppins;background-color:transparent;color:rgb(51,122,183);text-decoration-line:none;font-size:13px" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/ObjectInterfaces.html#Joint</a><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">Once added to HAnim v2.1 draft, also add to X3D v4.1 draft:</span><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">* X3D v4.1 draft Architecture, clause 26 HAnim component, 26.3.3 HAnimJoint</span><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">*</span><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/hanim.html#HAnimJoint" rel="noopener" style="box-sizing:border-box;font-family:Poppins;background-color:transparent;color:rgb(51,122,183);text-decoration-line:none;font-size:13px" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/hanim.html#HAnimJoint</a><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)"></span></div><div>---</div>Initial specification interface additions and prose:<br><ul><li>HAnim 6.3 Joint</li><li><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/ObjectInterfaces.html#Joint">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/ObjectInterfaces.html#Joint</a></li></ul><div><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)"> SFFloat [in,out] maxAngle 0 (-inf,inf) # or [-2pi,2pi]</span><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)"> SFFloat [in,out] minAngle 0 (-inf,inf) # or [-2pi,2pi]</span><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">The maxAngle and minAngle fields specify the maximum and minimum angles in radians defining the allowed range of motion (ROM) for a joint. These values constrain the angle component of the corresponding axis-angle rotation field. If both maxAngle and minAngle values are equal, or if maxAngle is less than minAngle, then no angular constraints are applied. These constraints are applied in concert with llimit/ulimit/limitOrientation constraints. Together these fields define the allowed range of Joint rotation.</span><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">NOTE. These combined constraints only affect Joint presentation and do not affect the source of animated inputs for the set_rotation field.</span><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">Editors notes:</span><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">* TODO create a diagram illustrating range of motion (ROM) use cases, each showing an example Joint rotation axis with corresponding maxAngle and minAngle values.</span><br style="box-sizing:border-box;font-family:Poppins;color:rgb(0,0,0);font-size:13px"><span style="color:rgb(0,0,0);font-family:Poppins;font-size:13px;background-color:rgb(232,232,232)">* (This approach is somewhat similar to X3D CylinderSensor definitions using a given axisRotation with corresponding maxAngle and minAngle values.)</span></div><div><br></div><div>Working on example models and diagrams will be essential for understandable progress on this topic.</div><div><br>=========================================================================</div><div><ul><li>Mantis 1506: enable assignment of index numbers for Site, Joint, Segment as synonyms for name enumerations</li><li><a href="https://mantis.web3d.org/view.php?id=1506" target="_blank">https://mantis.web3d.org/view.php?id=1506</a></li></ul><div><table style="font-family:Poppins;border-collapse:collapse;border-spacing:0px;width:1239.09px;max-width:100%;margin-bottom:0px;border-width:0px;border-style:solid;border-color:rgb(229,229,229) rgb(221,221,221) rgb(221,221,221);color:rgb(57,57,57);font-size:13px;border-radius:0px"><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;padding:5px;text-align:left;color:rgb(0,0,0);vertical-align:top;line-height:1.42857;border-width:1px 0px;border-style:solid;border-color:rgb(221,221,221);border-radius:0px;background-color:rgb(237,243,244)">Description</th><td colspan="5" style="box-sizing:border-box;padding:5px;line-height:1.42857;vertical-align:top;border-width:1px 0px;border-style:solid;border-color:rgb(221,221,221);border-radius:0px">A potential animation improvement is to assign index numbers for Site, Joint, Segment formally within HAnim standard. Table entries indicate these index numbers, but there is no formal designation that they might be used equivalently (either separately in authoring tools or directly in the skeleton definitions themselves).<br style="box-sizing:border-box"><br style="box-sizing:border-box">Each of the individual index values are already recorded in X3D XML Schema and X3DUOM (and thus available within other tools). Such indexing may lead to future possibilities using carefully named enumerations as simpler values for animation engines.</td></tr></tbody></table></div></div><div><br></div><div>=========================================================================</div><div><br></div><div>Wow, that is a lot for the past two weeks! Onward we go. Thanks for all efforts, careful thinking, and feedback. Questions and insight are always welcome.</div><div><br></div><div>Have fun with HAnim and X3D! 🤓👍</div><div><br></div><div>all the best, Don</div></div>
</div>
</div>