<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Aptos;}
@font-face
        {font-family:"Segoe UI Emoji";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Aptos",sans-serif;
        mso-ligatures:standardcontextual;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        font-size:11.0pt;
        font-family:"Aptos",sans-serif;
        mso-ligatures:standardcontextual;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Aptos",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:759987557;
        mso-list-type:hybrid;
        mso-list-template-ids:-1473110630 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:.25in;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:.75in;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:1.25in;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:1.75in;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:2.25in;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:2.75in;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:3.25in;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:3.75in;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:4.25in;
        text-indent:-9.0pt;}
@list l1
        {mso-list-id:898512934;
        mso-list-type:hybrid;
        mso-list-template-ids:-1016295912 902728646 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;
        mso-fareast-font-family:Aptos;
        mso-bidi-font-family:"Times New Roman";}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l2
        {mso-list-id:1798404314;
        mso-list-type:hybrid;
        mso-list-template-ids:-1896860928 1254884204 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l2:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;
        mso-fareast-font-family:Aptos;
        mso-bidi-font-family:"Times New Roman";}
@list l2:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l2:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l2:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l2:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l2:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l2:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l2:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l2:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#467886" vlink="#96607D" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Joe, following up with improved diagnostics, here is some specific detail on some of the harder scenes with loops.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Conversion to html documentation for Leif, Lily, and Tufani (also *Animated) versions are all producing similar error reports.  Each form is also pretty big (around 11MB).  Here is conversion of Leif.x3d  model to Leif.html documentation: <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo3'>X3D Example Archives: Humanoid Animation, Winter And Spring, Leif<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo3'>Humanoid model of a grandchild<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo3'>https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/LeifIndex.html<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The main problem with these models is that the geometry seems ridiculously over-detailed, making the file sizes much bigger than needed.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Meanwhile you have a huge number of ROUTE declarations, which are producing ROUTE loops in the event graph. Am thinking it would be good to diagnose and get rid of the ROUTE loops.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>If you can discern some fixes in one, that should enable similar fixes in the other models.  Good luck sir.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>ant -f C:\\x3d-code\\www.web3d.org\\x3d\\content\\examples\\HumanoidAnimation processScenes.htmlPrettyPrintPages<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>get.web3d.saxon.check:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>found C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\lib/saxon-he-12.1.jar: true<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>get.web3d.saxon:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>processScenes.htmlPrettyPrintPages:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation/WinterAndSpring//Leif.x3d processing with X3dToXhtml stylesheet for pretty-print .html<o:p></o:p></span></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Courier New"'>[info] total # ROUTE statements = 475</span></b><span style='font-size:9.0pt;font-family:"Courier New"'>, event-cascade table-column maxROUTEdepth=8<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_humanoid_root' set_translation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_humanoid_root' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_l_carpometacarpal_1' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_l_elbow' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_l_hip' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_l_knee' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_l_metatarsophalangeal_2' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_l_radiocarpal' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_l_shoulder' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_l_sternoclavicular' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_l_talocrural' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_r_carpometacarpal_1' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_r_elbow' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_r_hip' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_r_knee' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_r_metatarsophalangeal_2' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_r_radiocarpal' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_r_shoulder' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_r_sternoclavicular' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_r_talocrural' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: TimeSensor DEF='Leif_Run011Timer' set_enabled<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: TimeSensor DEF='Leif_Run011Timer' set_startTime<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_sacroiliac' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_sacroiliac' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_sacroiliac' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_sacroiliac' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: TimeSensor DEF='Leif_Skip014Timer' set_enabled<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: TimeSensor DEF='Leif_Skip014Timer' set_startTime<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_skullbase' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: BooleanFilter DEF='Leif_Stand010SPLITTERBooleanFilter' set_boolean<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: TimeSensor DEF='Leif_Stand010Timer' set_enabled<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: TimeSensor DEF='Leif_Stand010Timer' set_startTime<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: TimeSensor DEF='Leif_Stand015Timer' set_enabled<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: TimeSensor DEF='Leif_Stand015Timer' set_startTime<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: TimeSensor DEF='Leif_Stand016Timer' set_enabled<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: TimeSensor DEF='Leif_Stand016Timer' set_startTime<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: TimeSensor DEF='Leif_Turn012Timer' set_enabled<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: TimeSensor DEF='Leif_Turn012Timer' set_startTime<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_vc4' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_vl2' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: HAnimJoint DEF='Leif_vl5' set_rotation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: TimeSensor DEF='Leif_Walk013Timer' set_enabled<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** Multiple event fan-in to same node/@field (from different source ROUTEs) may have varying, nondeterministic delivery order: TimeSensor DEF='Leif_Walk013Timer' set_startTime<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>[diagnostic] $maxROUTEdepth=8 but found that node TimeSensor DEF='Leif_Run011Timer' has IncomingRoutes=5, OutgoingRoutes=28, SelfRoutes=0<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Turn012Timer.stopTime_changed TO Leif_Walk013Timer.set_startTime;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Turn012Timer.stopTime_changed TO Leif_Walk013Timer.set_startTime;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Run011Timer.stopTime_changed TO Leif_Turn012Timer.set_startTime;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Turn012Timer.isActive TO Leif_Walk013NEGATERBooleanFilter.set_boolean;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Run011Timer.stopTime_changed TO Leif_Turn012Timer.set_startTime;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Turn012NEGATERBooleanFilter.inputNegate TO Leif_Run011BooleanSequencer.next;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Run011Timer.isActive TO Leif_Turn012NEGATERBooleanFilter.set_boolean;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>[diagnostic] $maxROUTEdepth=8 but found that node TimeSensor DEF='Leif_Skip014Timer' has IncomingRoutes=5, OutgoingRoutes=19, SelfRoutes=0<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand015Timer.stopTime_changed TO Leif_Stand016Timer.set_startTime;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand015Timer.stopTime_changed TO Leif_Stand016Timer.set_startTime;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Skip014Timer.stopTime_changed TO Leif_Stand015Timer.set_startTime;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand015Timer.isActive TO Leif_Stand016NEGATERBooleanFilter.set_boolean;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Skip014Timer.stopTime_changed TO Leif_Stand015Timer.set_startTime;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand015NEGATERBooleanFilter.inputNegate TO Leif_Skip014BooleanSequencer.next;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Skip014Timer.isActive TO Leif_Stand015NEGATERBooleanFilter.set_boolean;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>[diagnostic] $maxROUTEdepth=8 but found that node TimeSensor DEF='Leif_Stand010Timer' has IncomingRoutes=6, OutgoingRoutes=31, SelfRoutes=0<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Run011Timer.stopTime_changed TO Leif_Turn012Timer.set_startTime;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Run011Timer.stopTime_changed TO Leif_Turn012Timer.set_startTime;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand010Timer.stopTime_changed TO Leif_Run011Timer.set_startTime;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Run011Timer.isActive TO Leif_Turn012NEGATERBooleanFilter.set_boolean;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand010Timer.stopTime_changed TO Leif_Run011Timer.set_startTime;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Run011NEGATERBooleanFilter.inputNegate TO Leif_Stand010BooleanSequencer.next;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand010Timer.isActive TO Leif_Run011NEGATERBooleanFilter.set_boolean;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>[diagnostic] $maxROUTEdepth=8 but found that node TimeSensor DEF='Leif_Stand015Timer' has IncomingRoutes=5, OutgoingRoutes=31, SelfRoutes=0<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand016Timer.stopTime_changed TO Leif_Stand010Timer.set_startTime;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand016Timer.stopTime_changed TO Leif_Stand010Timer.set_startTime;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand015Timer.stopTime_changed TO Leif_Stand016Timer.set_startTime;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand016Timer.isActive TO Leif_Stand010NEGATERBooleanFilter.set_boolean;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand015Timer.stopTime_changed TO Leif_Stand016Timer.set_startTime;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand016NEGATERBooleanFilter.inputNegate TO Leif_Stand015BooleanSequencer.next;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand015Timer.isActive TO Leif_Stand016NEGATERBooleanFilter.set_boolean;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>[diagnostic] $maxROUTEdepth=8 but found that node TimeSensor DEF='Leif_Stand016Timer' has IncomingRoutes=5, OutgoingRoutes=31, SelfRoutes=0<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand010Timer.stopTime_changed TO Leif_Run011Timer.set_startTime;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand010Timer.stopTime_changed TO Leif_Run011Timer.set_startTime;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand016Timer.stopTime_changed TO Leif_Stand010Timer.set_startTime;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand010Timer.isActive TO Leif_Run011NEGATERBooleanFilter.set_boolean;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand016Timer.stopTime_changed TO Leif_Stand010Timer.set_startTime;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand010NEGATERBooleanFilter.inputNegate TO Leif_Stand016BooleanSequencer.next;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Stand016Timer.isActive TO Leif_Stand010NEGATERBooleanFilter.set_boolean;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>[diagnostic] $maxROUTEdepth=8 but found that node TimeSensor DEF='Leif_Turn012Timer' has IncomingRoutes=5, OutgoingRoutes=28, SelfRoutes=0<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Walk013Timer.stopTime_changed TO Leif_Skip014Timer.set_startTime;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Walk013Timer.stopTime_changed TO Leif_Skip014Timer.set_startTime;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Turn012Timer.stopTime_changed TO Leif_Walk013Timer.set_startTime;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Walk013Timer.isActive TO Leif_Skip014NEGATERBooleanFilter.set_boolean;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Turn012Timer.stopTime_changed TO Leif_Walk013Timer.set_startTime;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Walk013NEGATERBooleanFilter.inputNegate TO Leif_Turn012BooleanSequencer.next;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Turn012Timer.isActive TO Leif_Walk013NEGATERBooleanFilter.set_boolean;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>[diagnostic] $maxROUTEdepth=8 but found that node TimeSensor DEF='Leif_Walk013Timer' has IncomingRoutes=5, OutgoingRoutes=30, SelfRoutes=0<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Skip014Timer.stopTime_changed TO Leif_Stand015Timer.set_startTime;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Skip014Timer.stopTime_changed TO Leif_Stand015Timer.set_startTime;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Walk013Timer.stopTime_changed TO Leif_Skip014Timer.set_startTime;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Skip014Timer.isActive TO Leif_Stand015NEGATERBooleanFilter.set_boolean;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Walk013Timer.stopTime_changed TO Leif_Skip014Timer.set_startTime;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Skip014NEGATERBooleanFilter.inputNegate TO Leif_Walk013BooleanSequencer.next;' at $nodeDepth=2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>*** [check-event-chain-loop] *detected event loop* repeating ROUTE 'Leif_Walk013Timer.isActive TO Leif_Skip014NEGATERBooleanFilter.set_boolean;' at $nodeDepth=1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation/WinterAndSpring//Leif.x3d processing with X3dExtrusionCrossSectionToSvg stylesheet for SVG diagrams (if Extrusion found)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>echo.timestamp:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>timestamp 16:14:25 on 17 February 2024<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>processScenes.htmlPrettyPrintPages complete.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>BUILD SUCCESSFUL (total time: 24 seconds)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";mso-ligatures:none'>all the best, Don<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";mso-ligatures:none'>-- <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";mso-ligatures:none'>Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman@nps.edu<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";mso-ligatures:none'>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";mso-ligatures:none'>X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman<o:p></o:p></span></p></div><p class=MsoNormal><o:p> </o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-family:"Calibri",sans-serif;mso-ligatures:none'>From:</span></b><span style='font-family:"Calibri",sans-serif;mso-ligatures:none'> Brutzman, Donald (Don) (CIV) <br><b>Sent:</b> Friday, February 16, 2024 12:03 AM<br><b>To:</b> X3D Public Mailing List (x3d-public@web3d.org) <x3d-public@web3d.org><br><b>Cc:</b> brutzman@nps.edu; brutzman@nps.edu<br><b>Subject:</b> X3D Examples: addition links on model pages, detection of event loops in HTML documentation<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Am happy to report some useful progress.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ol style='margin-top:0in' start=1 type=1><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l0 level1 lfo1'>Thanks to suggestions from Nicholas Polys for improving some of the links provided on each index page.<o:p></o:p></li></ol><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>Three-column layout for better readability<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>In-browser model editing using X_ITE Playground and X3DOM Editor are top center.<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>html annotated documentation easier to find.<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>Link for reporting comments/problems/improvements to x3d-public mailing list.<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>Link for SourceForge version control and also tickets (i.e. issue list) to facilitate problem reporting.<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Problem reports, improvements, and candidate additions are welcome.  We are “walking the walk.”<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ol style='margin-top:0in' start=2 type=1><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l0 level1 lfo1'>X3dToXhtml.xslt stylesheet to produce html annotated documentation can now identify when ROUTE loops occur, which is helpful for improving performance and avoiding errors.  Screenshot attached, example at<o:p></o:p></li></ol><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>X3D Example Archives: X3D4AM, X3D for Advanced Modeling, Animation, Event Graph Loop Test<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>Diagnostic scene for tools to test event-graph loop detection<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/Animation/EventGraphLoopTestIndex.html<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/Animation/EventGraphLoopTest.html#EventGraph<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><ol style='margin-top:0in' start=3 type=1><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l0 level1 lfo1'>It was difficult to get the loop-test working with XSLT recursion, some fine tuning is continuing, hopefully it is now OK.  This updated capability will be included in next release of X3D-Edit.<o:p></o:p></li></ol><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Am thinking it would be a good practice for browsers to report on console the first time an event loop occurs, motivated to assist authors.  This seems like a mostly undetected class of errors since we haven’t had quality assurance tests for these before.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ol style='margin-top:0in' start=4 type=1><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l0 level1 lfo1'>These improvements have been applied to all 4000+ X3D Examples Archives, all maintained in public version control under an open-source license.<o:p></o:p></li></ol><p class=MsoListParagraph style='margin-left:.25in'><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>X3D Resources, X3D Examples: Scene Archives for X3D<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>The X3D Examples Archives demonstrate how X3D nodes and scenes work. Thousands of scenes are provided in all X3D encodings. You can browse them individually online or download fully complete, separately installable .zip archives.<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>https://www.web3d.org/x3d/content/examples/license.html<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Have fun with improved X3D4 documentation and diagnostics in HTML!  <span style='font-family:"Segoe UI Emoji",sans-serif'>😊</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";mso-ligatures:none'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";mso-ligatures:none'>all the best, Don<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";mso-ligatures:none'>-- <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";mso-ligatures:none'>Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman@nps.edu<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";mso-ligatures:none'>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";mso-ligatures:none'>X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>