<div dir="auto">Q. How much of what you are trying to do with Importing an HAnim could be done with ExternProto?<div dir="auto"><br></div><div dir="auto">-Doug</div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Mon, Apr 27, 2026, 11:12 a.m. GPU Group <<a href="mailto:gpugroup@gmail.com">gpugroup@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">"
looks up the joint by name in the HAnimMotion" should read "
looks up the joint by name in the HAnimHumanoid"<div>-Doug</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 27, 2026 at 11:11 AM GPU Group <<a href="mailto:gpugroup@gmail.com" target="_blank" rel="noreferrer">gpugroup@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">PS I already implemented an HAnimMotionInterpolator node type in freewrl and have a working example. and doesn't rely on run-time generation of routes - on each HAnimHumanoid draw, it goes down the (MFNode) list of interpolators, matches to a corresponding (MFString) list of joint names, and looks up the joint by name in the HAnimMotion, and applies the value. <div>A benefit (vs. direct routing to joints by DEF name): if you have different skins for different level of detail, you can wrap multiple HAnimHumanoid in an LOD node, and DEF/USE the same Motion or MotionInterpolator node -- no re-routing or duplicating of routes.</div><div>Doesn't break old scenes which can still use joint DEF and routes.</div><div>Might help with the IMPORT EXPORT issue for new scenes.</div><div>-Doug</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 27, 2026 at 9:43 AM Don Brutzman <<a href="mailto:don.brutzman@gmail.com" target="_blank" rel="noreferrer">don.brutzman@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Thanks for looking at this. Topic certainly requires careful thought.</div><div><br></div><div>DEF identifiers are definitely needed for event ROUTEs, particularly for PositionInterpolator and OrientationInterpolator. This is not something that can be removed without breaking legacy content and backwards compatibility.</div><div><br></div><div>Writing a specialty node that does name lookup is an appealing concept. I'd suggest the following approach:</div><div><ul><li>X3D Script node that walks HAnimHumanoid tree(s) and creates ROUTE connections at run time,</li><li>inputs would be an input PositionInterpolator, an input MFNode array of OrientationInterpolator nodes, and a target HAnimHumanoid,</li><li>if single case works, can wrap it in a prototype definition and re-use it as an external prototype,</li><li>requires careful author testing, as ever, and</li><li>requires javascript support at run time</li></ul><div>Interestingly, construction of such ROUTE connections might also be a modeling task for authoring environments such as X3D-Edit, X3DJSAIL in Java, X3DPSAIL x3d.py in Python, and other tools.</div><div><br></div>HAnimMotion node is a completely different approach and requires different handling. I'd like to build more examples (at some point) before considering alterations to that implementation pattern. It seems prudent to avoid defining a new node until we have fully explored modeling and extensibility options with the current architectures.</div><div><br></div><div>Have fun building HAnimHumanoid event graphs! 😁</div><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace">all the best, Don</font></div><div style="color:rgb(34,34,34)"><font face="monospace">-- </font></div><div style="color:rgb(34,34,34)"><font face="monospace">X3D Graphics, Maritime Robotics, Distributed Simulation</font></div><div style="color:rgb(34,34,34)"><font face="monospace">Relative Motion Consulting <a href="https://RelativeMotion.info" target="_blank" rel="noreferrer">https://RelativeMotion.info</a></font></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 27, 2026 at 5:00 AM GPU Group <<a href="mailto:gpugroup@gmail.com" target="_blank" rel="noreferrer">gpugroup@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Q. does anyone need DEFs for joints?<div>- HAnimMotion nodes can lookup the name field</div><div>- when animating with interpolators, there can be a new node type HAnimMotionInterpolator and the interpolators route to the HAnimMotionInterpolator which can do the name lookup. like HAnimMotion node does.</div><div>-Doug</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Apr 26, 2026 at 10:49 PM Don Brutzman <<a href="mailto:don.brutzman@gmail.com" target="_blank" rel="noreferrer">don.brutzman@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>This is a request for X3D browser implementers.</div><div><br></div><div>Joe and I are making good progress on building models that add additional bones/teeth/cartilage, providing a new LOA-5 for HAnim. LOA-5 keeps building on progressive Level of Articulation (LOA) 0..4 ranging from simple to sophisticated HAnim models.</div><div><br></div><div>We will soon be able to test EXPORT and IMPORT of HAnimHumanoid models in full detail for use with multiple interpolator sets. Our goal is to demonstrate simplified sharing and composition of HAnim models in X3D.</div><div><br></div><div>A recent improvement to X3D4 v4.1 draft was to deprecate USE nodes at the top level of an HAnimHumanoid since they are superfluous, verbose, and potentially error prone if defined incorrectly.</div><div><br></div><div>Based on current efforts, we'd like to recommend something similar. If a HAnimHumanoid model is EXPORTed and then IMPORTed, the corresponding EXPORT and IMPORT of every contained joint, segment and site is similarly superfluous since such nodes are detectable automatically without ambiguity. HAnim naming conventions for matching prefixed DEF labels with the corresponding name field in each given node are quite strict. Thus manually redefining hundreds of predictable EXPORT and IMPORT statements for each re-use seems unnecessary.</div><div><br></div><div><span style="font-family:arial,sans-serif">Thanks for considering this coding task. It will have a notable improvement on authoring simplicity, humanoid portability and model robustness.</span></div><div><span style="font-family:arial,sans-serif"><br></span></div><div>The Mantis issue describing this proposal follows.<span style="font-family:arial,sans-serif"></span></div><div><ul><li>Mantis 1530: Avoiding exhaustive EXPORT statements within HAnimHumanoid skeleton</li><li><a href="https://mantis.web3d.org/view.php?id=1530" target="_blank" rel="noreferrer">https://mantis.web3d.org/view.php?id=1530</a></li></ul></div><div><div style="box-sizing:border-box;font-family:Poppins;min-height:1px;padding-right:15px;padding-left:15px;float:left;width:1166px;max-width:100%;color:rgb(57,57,57);font-size:13px;background-color:rgb(187,187,187)"><div style="box-sizing:border-box;padding:0px;margin:3px 0px;border:1px solid rgb(80,144,193)"><div style="box-sizing:border-box;background-color:rgb(255,255,255)"><div style="box-sizing:border-box;padding:0px"><div style="box-sizing:border-box;min-height:0.01%;overflow-x:auto;margin-bottom:0px"><table style="border-collapse:collapse;border-spacing:0px;width:1134px;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);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">Any HAnimHumanoid skeleton can have a lot of HAnimJoint and HAnimSegment and HAnimSite children. For LOA-5, it is hundreds of such children.<br style="box-sizing:border-box"><br style="box-sizing:border-box">These child nodes are always carefully identified, with pairwise DEF and name fields that match exactly according to HAnim requirements.<br style="box-sizing:border-box"><br style="box-sizing:border-box">If an X3D model with an HAnimHumanoid includes an EXPORT statement allowing re-use by other X3D scenes, then browsers need to automatically EXPORT all of the subordinate HAnim nodes.<br style="box-sizing:border-box"><br style="box-sizing:border-box">Similarly, if a HAnimHumanoid is IMPORTed for animation re-use in a different X3D scene, browsers need to automatically IMPORT all of the subordinate HAnim nodes.</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">Example:<br style="box-sizing:border-box">- X3D Example Archives: Humanoid Animation, Bones, All Bones LOA 5 Skeletons<br style="box-sizing:border-box">- <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Bones/AllBonesLOA5SkeletonsIndex.html" rel="noopener noreferrer" style="box-sizing:border-box;background-color:transparent;color:rgb(51,122,183);text-decoration:none" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Bones/AllBonesLOA5SkeletonsIndex.html</a><br style="box-sizing:border-box"><br style="box-sizing:border-box">see the EXPORT statements beginning at line 3286:<br style="box-sizing:border-box"><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Bones/AllBonesLOA5Skeletons.html#3286" rel="noopener noreferrer" style="box-sizing:border-box;background-color:transparent;color:rgb(51,122,183);text-decoration:none" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Bones/AllBonesLOA5Skeletons.html#3286</a><br style="box-sizing:border-box"><br style="box-sizing:border-box">3286 <!-- right-side HAnimHumanoid --><br style="box-sizing:border-box">3287 <EXPORT localDEF='hanimMesh_AllBonesSkeleton' AS='AllBonesSkeletonMesh'/><br style="box-sizing:border-box"><br style="box-sizing:border-box">3288 <!-- left-side HAnimHumanoid --><br style="box-sizing:border-box">3289 <EXPORT localDEF='hanim_AllBonesSkeleton' AS='AllBonesSkeleton'/><br style="box-sizing:border-box"><br style="box-sizing:border-box">3290 <!-- propose eliminating requirement for EXPORT statements corresponding to child HAnimJoint HAnimSegment HAnimSite nodes, similar to removing requirement for definition of USE nodes for HAnimHumanoid children --><br style="box-sizing:border-box"><br style="box-sizing:border-box">3291 <EXPORT localDEF='hanim_c1' AS='AllBonesSkeletonMesh_hanim_c1'/><br style="box-sizing:border-box">3292 <EXPORT localDEF='hanim_c1disc' AS='AllBonesSkeletonMesh_hanim_c1disc'/><br style="box-sizing:border-box">3293 <EXPORT localDEF='hanim_c2' AS='AllBonesSkeletonMesh_hanim_c2'/><br style="box-sizing:border-box">3294 <EXPORT localDEF='hanim_c2disc' AS='AllBonesSkeletonMesh_hanim_c2disc'/><br style="box-sizing:border-box">(etc. etc. approximately 400 EXPORT statements follow which exactly match the skeleton example)</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)">Tags</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"> HAnim v2.1, ,X3D v4.1</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)">Attach Tags</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"><form method="post" action="https://mantis.web3d.org/tag_attach.php" style="box-sizing:border-box" target="_blank"><label style="box-sizing:border-box;max-width:100%;margin-bottom:3px;font-size:11.05px;display:inline-block">(Separate by ",")</label> <input type="text" name="tag_string" id="m_794560491818724897m_4072716680425506132m_1848427360368492480m_3762907558036884212m_-1047472019365168320gmail-tag_string" size="40" value="" style="box-sizing:border-box;font-family:inherit;color:rgb(133,133,133);font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:14px;line-height:1.5;font-size-adjust:inherit;font-kerning:inherit;font-feature-settings:inherit;height:30px;padding:5px 4px 6px;background-color:rgb(255,255,255);border-width:1px;border-style:solid;border-color:rgb(213,213,213);border-radius:0px;width:auto;vertical-align:middle"> <select name="tag_select" id="m_794560491818724897m_4072716680425506132m_1848427360368492480m_3762907558036884212m_-1047472019365168320gmail-tag_select" style="font-family:inherit;color:rgb(133,133,133);font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:12px;line-height:30px;font-size-adjust:inherit;font-kerning:inherit;font-feature-settings:inherit;text-transform:none;border-radius:0px;background-color:rgb(255,255,255);border:1px solid rgb(213,213,213);padding:2px 3px;height:30px;width:auto;vertical-align:middle"> <option value="0" style="box-sizing:border-box;padding:3px 4px 5px">Existing tags</option><option value="33" title="" style="box-sizing:border-box;padding:3px 4px 5px">1356</option><option value="12" title="" style="box-sizing:border-box;padding:3px 4px 5px">apache</option><option value="21" title="" style="box-sizing:border-box;padding:3px 4px 5px">CD Ballot comment</option><option value="3" title="" style="box-sizing:border-box;padding:3px 4px 5px">Document style</option><option value="5" title="" style="box-sizing:border-box;padding:3px 4px 5px">Examples</option><option value="14" title="" style="box-sizing:border-box;padding:3px 4px 5px">file</option><option value="18" title="" style="box-sizing:border-box;padding:3px 4px 5px">HTML5</option><option value="4" title="" style="box-sizing:border-box;padding:3px 4px 5px">JSON</option><option value="9" title="" style="box-sizing:border-box;padding:3px 4px 5px">Mantis</option><option value="25" title="" style="box-sizing:border-box;padding:3px 4px 5px">Metaverse</option><option value="8" title="" style="box-sizing:border-box;padding:3px 4px 5px">SAI</option><option value="7" title="" style="box-sizing:border-box;padding:3px 4px 5px">Schema</option><option value="13" title="" style="box-sizing:border-box;padding:3px 4px 5px">security</option><option value="16" title="" style="box-sizing:border-box;padding:3px 4px 5px">server</option><option value="17" title="" style="box-sizing:border-box;padding:3px 4px 5px">spam</option><option value="15" title="" style="box-sizing:border-box;padding:3px 4px 5px">upload</option><option value="1" title="Indicates that this issue was raised against V3.3 specification." style="box-sizing:border-box;padding:3px 4px 5px">V3.3 Comment</option><option value="10" title="" style="box-sizing:border-box;padding:3px 4px 5px">V4.0</option><option value="2" title="Indicates that the issue gets resolved in V4.0 of the specification" style="box-sizing:border-box;padding:3px 4px 5px">V4.0 Resolution</option><option value="6" title="" style="box-sizing:border-box;padding:3px 4px 5px">Validation</option><option value="31" title="" style="box-sizing:border-box;padding:3px 4px 5px">Website</option><option value="24" title="" style="box-sizing:border-box;padding:3px 4px 5px">WebXR</option><option value="11" title="" style="box-sizing:border-box;padding:3px 4px 5px">X3DUOM</option> </select> </form></td></tr><tr style="box-sizing:border-box;color:rgb(0,0,0);height:5px"><td colspan="6" 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"></td></tr></tbody></table></div></div></div></div></div><div style="box-sizing:border-box;font-family:Poppins;min-height:1px;padding-right:15px;padding-left:15px;float:left;width:1166px;max-width:100%;color:rgb(57,57,57);font-size:13px;background-color:rgb(187,187,187)"><div id="m_794560491818724897m_4072716680425506132m_1848427360368492480m_3762907558036884212m_-1047472019365168320gmail-bugnotes" style="box-sizing:border-box;padding:0px;margin:3px 0px;border:1px solid rgb(80,144,193)"><div style="box-sizing:content-box;min-height:31px;background:rgb(80,144,193);color:rgb(255,255,255);border-bottom:1px solid rgb(80,144,193);padding-left:10px;border-top-color:rgb(80,144,193);border-right-color:rgb(80,144,193);border-left-color:rgb(80,144,193)"><h4 style="box-sizing:border-box;font-weight:lighter;line-height:30px;color:inherit;margin:0px;font-size:18px;padding:0px;display:inline"><span style="box-sizing:border-box;font-family:FontAwesome;display:inline-block;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;line-height:1;font-size:inherit;text-align:center;margin-right:5px"></span> Activities</h4><div style="box-sizing:border-box;display:inline-block;padding:0px 10px;line-height:29px;float:right"><a href="https://mantis.web3d.org/view.php?id=1530#" style="box-sizing:border-box;background-color:transparent;color:rgb(226,226,226);text-decoration:none;font-size:14px;margin:0px 1px;display:inline-block;padding:0px;line-height:24px" target="_blank" rel="noreferrer"><span style="box-sizing:border-box;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:17.5px;line-height:1;font-family:FontAwesome;display:inline-block;text-align:center;margin-right:0px"></span></a></div></div><div style="box-sizing:border-box;background-color:rgb(255,255,255)"><div style="box-sizing:border-box;padding:0px"><div style="box-sizing:border-box;min-height:0.01%;overflow-x:auto;margin-bottom:0px"><table style="border-collapse:collapse;border-spacing:0px;width:1134px;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);border-radius:0px"><tbody style="box-sizing:border-box"><tr id="m_794560491818724897m_4072716680425506132m_1848427360368492480m_3762907558036884212m_-1047472019365168320gmail-c3889" style="box-sizing:border-box;background-color:rgb(249,249,249)"><td style="box-sizing:border-box;padding:5px;color:rgb(0,0,0);font-weight:bold;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)"><div style="box-sizing:border-box;float:left;padding:2px"></div><div style="box-sizing:border-box;float:left;padding:2px"><p style="box-sizing:border-box;margin:0px"><span style="box-sizing:border-box;font-family:FontAwesome;display:inline-block;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-weight:normal;font-stretch:normal;line-height:1;font-size:inherit;color:rgb(119,119,119)"></span> <a href="https://mantis.web3d.org/view_user_page.php?id=10" style="box-sizing:border-box;background-color:transparent;color:rgb(51,122,183);text-decoration:none" target="_blank" rel="noreferrer">brutzman</a></p><p style="box-sizing:border-box;font-size:11.05px;font-weight:normal;margin:0px"><span style="box-sizing:border-box;font-family:FontAwesome;display:inline-block;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;line-height:1;font-size:inherit;color:rgb(119,119,119)"></span> 2026-04-23 10:55</p><p style="box-sizing:border-box;margin:0px"><span style="box-sizing:border-box;display:inline-block;padding:0.2em 0.4em 0.3em;font-size:11px;font-weight:400;line-height:1;color:rgb(255,255,255);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0px;background-color:rgb(171,186,195);height:18px;margin-right:4px">administrator</span> <span style="box-sizing:border-box;font-family:FontAwesome;display:inline-block;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-weight:normal;font-stretch:normal;line-height:1;font-size:inherit;color:rgb(119,119,119)"></span> <a rel="bookmark noreferrer" href="https://mantis.web3d.org/view.php?id=1530#c3889" title="Direct link to note" style="box-sizing:border-box;background-color:transparent;color:rgb(51,122,183);text-decoration:none;font-weight:lighter" target="_blank">~0003889</a></p><div style="box-sizing:border-box"></div><div style="box-sizing:border-box;max-height:1px;min-height:1px;overflow:hidden;margin:2px 0px 1px"></div><div style="box-sizing:border-box;display:inline-block;vertical-align:middle"><div style="box-sizing:border-box;float:left"><form method="post" action="https://mantis.web3d.org/bugnote_edit_page.php" style="box-sizing:border-box;margin:0px 1px 0px 0px;display:inline-block" target="_blank"></form></div><div style="box-sizing:border-box;float:left"><form method="post" action="https://mantis.web3d.org/bugnote_delete.php" style="box-sizing:border-box;margin:0px 1px 0px 0px;display:inline-block" target="_blank"></form></div><div style="box-sizing:border-box;float:left"><form method="post" action="https://mantis.web3d.org/bugnote_set_view_state.php" style="box-sizing:border-box;margin:0px 1px 0px 0px;display:inline-block" target="_blank"></form></div></div></div></td><td 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);background-color:rgb(232,232,232);color:rgb(0,0,0);width:850.5px;border-radius:0px">This issue is similar to the USE nodes in HAnimHumanoid - duplication by authors is tedious, error prone, and a superfluous task that a browser can s</td></tr></tbody></table><br></div></div></div></div></div></div><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><br></div><div style="color:rgb(34,34,34)"><span style="font-family:monospace"><br></span></div><div style="color:rgb(34,34,34)"><span style="font-family:monospace"><br></span></div><div style="color:rgb(34,34,34)"><span style="font-family:monospace"><br></span></div><div style="color:rgb(34,34,34)"><span style="font-family:monospace"><br></span></div><div style="color:rgb(34,34,34)"><span style="font-family:monospace"><br></span></div><div style="color:rgb(34,34,34)"><font face="arial, sans-serif">Have fun with HAnim and X3D! </font>😁</div><div style="color:rgb(34,34,34)"><span style="font-family:monospace"><br></span></div><div style="color:rgb(34,34,34)"><span style="font-family:monospace">all the best, Don</span></div><div style="color:rgb(34,34,34)"><font face="monospace">-- </font></div><div style="color:rgb(34,34,34)"><font face="monospace">X3D Graphics, Maritime Robotics, Distributed Simulation</font></div><div style="color:rgb(34,34,34)"><font face="monospace">Relative Motion Consulting <a href="https://RelativeMotion.info" target="_blank" rel="noreferrer">https://RelativeMotion.info</a></font></div></div></div></div></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>