<div dir="auto">I think Don is arguing in favor of routes in an MFNode because it impacts X3DJSAIL, x3d.py,  JSON and X3DUOM.  Things are more complex than just VRML these days and I support him in his efforts to promote a more cross-encoding and cross-binding capable X3D.</div><div dir="auto"><br></div><div dir="auto">I also think VRML is an important encoding and developing  VRML along with the other encodings and bindings is important.  Maybe we need VRML 4.0?</div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jun 11, 2023 at 7:58 PM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@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="auto">Don, this model shows Routes under Scene, and we are talking about Routes under Group and Transform, I think.   I don’t think we have an actual example of that case yet.</div><div dir="auto"><br></div><div dir="auto">Thanks,</div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jun 11, 2023 at 4:36 PM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word"><div><p class="MsoNormal">John, here is a JSON autogenerated example (using stylesheet we developed together) matching the other forms provided in response to Michalis.  Many more available, likely does not need to be on your TODO list.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li style="margin-left:0in"><a href="https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter08AnimatingPositionOrientationScale/Figure08_3PositionInterpolator.json" target="_blank">https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter08AnimatingPositionOrientationScale/Figure08_3PositionInterpolator.json</a><u></u><u></u></li></ul></div></div><div lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word"><div><div><p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">all the best, Don<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">-- <u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">Don Brutzman  Naval Postgraduate School, Code USW/Br        <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">X3D graphics, virtual worlds, navy robotics <a href="https://faculty.nps.edu/brutzman" target="_blank">https://faculty.nps.edu/brutzman</a><u></u><u></u></span></p></div><p class="MsoNormal"><u></u> <u></u></p><div><div style="border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0in 0in 0in"><p class="MsoNormal"><b>From:</b> John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> <br><b>Sent:</b> Saturday, June 10, 2023 12:30 PM<br><b>To:</b> Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>><br><b>Cc:</b> Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>>; X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br><b>Subject:</b> Re: [x3d-public] Problem in x3dviewscene: ROUTE placement<u></u><u></u></p></div></div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">I believe this example is current.  It shows a mixed-node result. <u></u><u></u></p><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">The third option was taken, which should preserve structure across encodings.  I will also run this example through my Java and JavaScript JSON validators.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">John<u></u><u></u></p></div></div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">On Sat, Jun 10, 2023 at 2:14 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<u></u><u></u></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"><div><p class="MsoNormal">The third option was chosen, with only advantages, possibly.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Probably it would be easiest to create an example.  I will put that on my todo list.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">John<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">On Sat, Jun 10, 2023 at 2:10 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<u></u><u></u></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"><div><p class="MsoNormal">Here: “<i><span style="border:none windowtext 1.0pt;padding:0in">Disadvantages:</span></i><span style="font-size:13.5pt;border:none windowtext 1.0pt;padding:0in"> ordering of ROUTE statements is lost, relative to other children nodes. ROUTEs are placed at the end, only a partial order is retained.”</span><u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><span style="font-size:13.5pt;border:none windowtext 1.0pt;padding:0in">From:</span><u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><div><p class="MsoNormal"><span style="font-size:13.5pt;border:none windowtext 1.0pt;padding:0in"><a href="https://www.web3d.org/x3d/stylesheets/X3dToJson.html" target="_blank">https://www.web3d.org/x3d/stylesheets/X3dToJson.html</a><u></u><u></u></span></p></div></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><span style="font-size:13.5pt;border:none windowtext 1.0pt;padding:0in">John</span><u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">On Sat, Jun 10, 2023 at 2:03 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<u></u><u></u></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"><div><p class="MsoNormal">I’m further remembering perhaps that these many routes were placed into a JSON array of routes?<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">It’s been a very long time, I would have to recheck.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Water under the bridge?<u></u><u></u></p></div><div><div><div><p class="MsoNormal">On Sat, Jun 10, 2023 at 1:58 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<u></u><u></u></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"><div><p class="MsoNormal">My impression was that they were being moved out (from a nested context) or down the scenegraph, collecting many routes together.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I didn’t write X3dToJson.xslt.  It’s not my expertise, but i may be able to find some examples with roundtripping.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">It would be easy to test by sprinkling many routes at same level in XML, then convert to JSON to see if they are collected.  I hope this helps.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">HAnim is higher priority.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">John<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">On Sat, Jun 10, 2023 at 1:45 PM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> wrote:<u></u><u></u></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"><div><div><p class="MsoNormal">Good question, not sure where they are getting moved.  Examples always welcome.  When JSON Schema is finally approved and implemented, we’ll be able to formalize that.<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><ul type="disc"><li class="MsoNormal">X3D Resources, Examples: Scene Archives for X3D<u></u><u></u></li><li class="MsoNormal"><a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples" target="_blank">https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples</a><u></u><u></u></li></ul><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Expectation is that ordering of nodes and ROUTE statements will be consistent for ClassicVRML, XML, JSON, Java, Python, etc., allowing symmetric conversion between representations.  Hence the careful scrutiny as we go.  Thanks for tracking this John.<u></u><u></u></p></div></div><div><div><div><p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New""> </span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">all the best, Don</span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">-- </span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">Don Brutzman  Naval Postgraduate School, Code USW/Br        <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a></span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149</span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Courier New"">X3D graphics, virtual worlds, navy robotics <a href="https://faculty.nps.edu/brutzman" target="_blank">https://faculty.nps.edu/brutzman</a></span><u></u><u></u></p></div><p class="MsoNormal"> <u></u><u></u></p><div><div style="border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0in 0in 0in;border-color:currentcolor currentcolor"><p class="MsoNormal"><b>From:</b> John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> <br><b>Sent:</b> Saturday, June 10, 2023 11:28 AM<br><b>To:</b> Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>><br><b>Cc:</b> Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>>; X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br><b>Subject:</b> Re: [x3d-public] Problem in x3dviewscene: ROUTE placement<u></u><u></u></p></div></div><p class="MsoNormal"> <u></u><u></u></p><div><div><p class="MsoNormal">Don, does this make it so we don’t have to move routes around in the JSON encoding?<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">I was not clear why they needed to be moved.<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">Thanks,<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">John<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p><div><div><p class="MsoNormal">On Sat, Jun 10, 2023 at 1:05 PM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> wrote:<u></u><u></u></p></div><blockquote style="border:none;border-left:solid windowtext 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt;border-color:currentcolor currentcolor currentcolor rgb(204,204,204)"><div><div><p>Well, closer, but not quite there yet.  Here is some more “language lawyering.”  8)<u></u><u></u></p><p> <u></u><u></u></p><p>BLUF: it is important and allowed for ROUTE statements (and prototype statements) to appear in MFNode lists, side by side with other nodes.<u></u><u></u></p><p> <u></u><u></u></p><p>Not exactly sure what you mean by MFList.  Presumably you mean MFNode, which is one of the approved concrete or abstract types in<u></u><u></u></p><p> <u></u><u></u></p><ul type="disc"><li class="MsoNormal">X3D 4.0 Part 1: Architecture and base components, clause 5 Field type reference<u></u><u></u></li><li class="MsoNormal"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/fieldTypes.html" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/fieldTypes.html</a><u></u><u></u></li></ul><p> <u></u><u></u></p><p>I believe that the rules are telling us that the ROUTE statement can appear where other nodes can appear.  Typically that is within an MFNode list.<u></u><u></u></p><p> <u></u><u></u></p><ul type="disc"><li class="MsoNormal">X3D 4.0 Part 1: Architecture and base components, clause 5 Field type reference, 5.3 Field types, 5.3.12 SFNode and MFNode<u></u><u></u></li><li class="MsoNormal"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/fieldTypes.html#SFNodeAndMFNode" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/fieldTypes.html#SFNodeAndMFNode</a><u></u><u></u></li><li class="MsoNormal">The SFNode field specifies an X3D node. The MFNode field specifies zero or more nodes.<u></u><u></u></li><li class="MsoNormal">The default value of an uninitialized SFNode field is NULL. The default value of an MFNode field is the empty list.<u></u><u></u></li></ul><p> <u></u><u></u></p><p>The third bullet above likely needs to be modified to say<u></u><u></u></p><ul type="disc"><li class="MsoNormal">The SFNode field specifies an X3D node. The MFNode field specifies zero or more nodes<span style="color:black;background:yellow">, also allowing ROUTE or prototype statements</span>.<u></u><u></u></li></ul><p> <u></u><u></u></p><p>Also relevant, with another suggested addition, again providing clarity and consistency with 4.4.8.2 Routes and 4.4.4 Prototype semantics:<u></u><u></u></p><ul type="disc"><li class="MsoNormal">5.2.2 X3DArrayField<u></u><u></u></li><li class="MsoNormal">X3DArrayField is the abstract field type from which all field types that can contain multiple values are derived. All fields derived from X3DArrayField have names beginning with <b>MF</b> (multiple-valued field). MF fields may zero or more values, each of which shall be of the type indicated by the corresponding SF field type. It is illegal for any MF field to mix values of different SF field types.  <span style="color:black;background:yellow">An MFNode field can also include ROUTE and prototype statements.</span><u></u><u></u></li><li class="MsoNormal">5.2.3 X3DField<u></u><u></u></li><li class="MsoNormal">X3DField is the abstract field type from which all single values field types are derived. All fields directly derived from X3DField have names beginning with <b>SF</b> (single-valued field). SF fields may only contain a single value of the type indicated by the name of the field type.<u></u><u></u></li></ul><p> <u></u><u></u></p><p>Corresponding ClassicVRML grammar productions:<u></u><u></u></p><ul type="disc"><li class="MsoNormal">X3D 3.3 encodings, Part 2: Classic VRML encoding, Annex A (normative) Grammar, A.2 General<u></u><u></u></li><li class="MsoNormal"><a href="https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/grammar.html#General" target="_blank">https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/grammar.html#General</a><u></u><u></u></li></ul><p class="MsoNormal" style="margin-left:.25in;background:white"><i><span style="font-size:12.0pt;font-family:"Verdana",sans-serif;color:black"><br></span></i><i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">statements </span></i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">::=</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:.75in;background:white"><i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">statement </span></i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">|</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:.75in;background:white"><i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">statement statements </span></i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">|</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:.75in;background:white"><i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">empty </span></i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">;</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:.25in;background:white"><i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">statement </span></i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">::=</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:.75in;background:white"><i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">nodeStatement</span></i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black"> |<br><i>importStatement</i> |<br><i>exportStatement |</i></span><u></u><u></u></p><p class="MsoNormal" style="margin-left:.75in;background:white"><i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">protoStatement</span></i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black"> |</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:.75in;background:white"><i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">routeStatement</span></i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black"> ;</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:.25in;background:white"><i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">nodeStatement </span></i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">::=</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:.75in;background:white"><i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">node</span></i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black"> |</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:.75in;background:white"><b><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">DEF </span></b><i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">nodeNameId node</span></i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black"> |</span><u></u><u></u></p><p class="MsoNormal" style="margin-left:.75in;background:white"><b><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black">USE</span></b><i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black"> nodeNameId</span></i><span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:black"> ;</span><u></u><u></u></p><p> <u></u><u></u></p><p>IMPORT and EXPORT statements only appear in special locations related to Inline node usage, and don’t seem to need special mention in the prose above.<u></u><u></u></p><p> <u></u><u></u></p><p>We certainly have many hundreds of validated examples that include ROUTE statements along with other children nodes, as part of MFNode lists.  Large parts of our existing infrastructure support this construct, in accordance with X3D Architecture.<u></u><u></u></p><p> <u></u><u></u></p><p>Bottom line: it is important and allowed for ROUTE statements (and prototype statements) to appear in MFNode lists, side by side with other nodes.<u></u><u></u></p><p> <u></u><u></u></p><p>If the two highlighted sentences above seem like useful additions, I’ll create a Mantis issue and we can inquire if ISO editors will accept such a change at this very late date.<u></u><u></u></p><p> <u></u><u></u></p><p>Again thanks for careful scrutiny.  Looking forward to regaining full consensus on this important design issue which is critical to consistent X3D model interoperability.<u></u><u></u></p><p> <u></u><u></u></p><p>all the best, Don<u></u><u></u></p><p>-- <u></u><u></u></p><p><span style="font-size:9.0pt;font-family:"Courier New"">Don Brutzman  Naval Postgraduate School, Code USW/Br        <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a></span><u></u><u></u></p><p><span style="font-size:9.0pt;font-family:"Courier New"">Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149</span><u></u><u></u></p><p><span style="font-size:9.0pt;font-family:"Courier New"">X3D graphics, virtual worlds, navy robotics <a href="https://faculty.nps.edu/brutzman" target="_blank">https://faculty.nps.edu/brutzman</a></span><u></u><u></u></p><p> <u></u><u></u></p><p>-----Original Message-----<br>From: Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>> <br>Sent: Friday, June 9, 2023 4:46 PM<br>To: Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>><br>Cc: Joseph D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>>; X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>>; <a href="mailto:puk@igraphics.com" target="_blank">puk@igraphics.com</a><br>Subject: Re: [x3d-public] Problem in x3dviewscene: ROUTE placement<u></u><u></u></p><p> <u></u><u></u></p><p>I do not see any need to change the X3D spec here. For once, it is all correct in X3D spec  :) And "Architecture and base components" is consistent with what "Classic VRML encoding" is saying, and both chapters of "Classic VRML encoding" ("4 Concepts" and "Annex A<u></u><u></u></p><p>(normative) Grammar") are consistent.<u></u><u></u></p><p> <u></u><u></u></p><p>Joe's model should just be fixed, from what I can tell -- you have to move ROUTE outside of the [ ... ]. It makes sense that MFList [ ... ] should contain only nodes.<u></u><u></u></p><p> <u></u><u></u></p><p>From what I can tell,<u></u><u></u></p><p><a href="https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/grammar.html" target="_blank"><span style="color:windowtext;text-decoration:none">https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/grammar.html</span></a><u></u><u></u></p><p>clearly says that ROUTE cannot be part of MFList [ ... ] , and that's OK. You have to place ROUTE within some node (or at top-level).<u></u><u></u></p><p> <u></u><u></u></p><p>Within MFList [ ... ] you can only have nodes (or USE of nodes). You cannot place ROUTE, EXPORT, IMPORT, PROTO... within MFList [ ... ] and that's OK, that's simple. Let's not break it :)<u></u><u></u></p><p> <u></u><u></u></p><p>Regards,<u></u><u></u></p><p>Michalis<u></u><u></u></p><p> <u></u><u></u></p><p>sob., 10 cze 2023 o 01:30 Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank"><span style="color:windowtext;text-decoration:none">brutzman@nps.edu</span></a>> napisał(a):<u></u><u></u></p><p>> <u></u><u></u></p><p>> Thanks for precise response Michalis, very helpful.<u></u><u></u></p><p>> <u></u><u></u></p><p>> The intent for ROUTE is that it might appear within other nodes.  The phrasing in X3D4 Architecture is quite explicit about this:<u></u><u></u></p><p>> <u></u><u></u></p><p>> X3D 4.0 Part 1: Architecture and base components, clause 4 Concepts, <u></u><u></u></p><p>> 4.4.8.2 Routes <u></u><u></u></p><p>> <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.pr" target="_blank"><span style="color:windowtext;text-decoration:none">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.pr</span></a><u></u><u></u></p><p>> oof/Part01/concepts.html#Routes Routes allows an author to <u></u><u></u></p></div></div><div><div><p>> declaratively connect the output events of a node to input events of other nodes, providing a way to implement complex behaviors without imperative programming. When a routed output event is fired, the corresponding destination input event receives notification and can process a response to that change. This processing can change the state of the node, generate additional events, or change the structure of the scene graph. Routes may be created declaratively in an X3D file or programmatically via an SAI call.<u></u><u></u></p><p>> Routes are not nodes. The ROUTE statement is a construct for establishing event paths between specified fields of nodes. ROUTE statements may either appear at the top level of an X3D file or inside a node wherever fields may appear. A ROUTE statement shall only appear after the definition of the source and destination nodes. Placing a ROUTE statement within a node does not associate it with that node in any way. A ROUTE statement does follow the name scoping rules as described in 4.4.7 Run-time name scope.<u></u><u></u></p><p>> <u></u><u></u></p><p>> We expect that the prose and grammar in 19776-2/V3.3 Part 2: Classic VRML encoding to be reviewed and refined to match, when we get back to that document and upgrade it to X3D 4.0.  I think that the current ClassicVRML spec indeed defers to the Architecture specification:<u></u><u></u></p><p>> <u></u><u></u></p><p>> X3D 3.3 Part 2: Classic VRML encoding, clause 4 Concepts, 4.3.2 <u></u><u></u></p><p>> Statements, 4.3.2.1 Organization of statements “Any number of ROUTE statements as specified in 4.4.8.2 Routes of ISO/IEC 19775-1.”<u></u><u></u></p><p>> <u></u><u></u></p><p>> So changes (corresponding to your accurate note) may need to be made to<u></u><u></u></p><p>> <u></u><u></u></p><p>> X3D 3.3 Part 2: Classic VRML encoding, Annex A (normative), Grammar <u></u><u></u></p><p>> <a href="https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/gra" target="_blank"><span style="color:windowtext;text-decoration:none">https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/gra</span></a>mmar.html<u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> Wikipedia: Extended Backus–Naur form (EBNF)<u></u><u></u></p><p>> <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FExtended_Backus-Naur_form&data=05%7C01%7Cbrutzman%40nps.edu%7C00493792347e4f819db008db69e92034%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638220222248610611%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=DcxsWZcLGeEt%2Fgglrmzr9yqc5s1dDJ9dXe4tpGXAc%2Bs%3D&reserved=0" target="_blank">https://en.wikipedia.org/wiki/Extended_Backus-Naur_form</a> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> which includes the following EBNF production rules:<u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> node ::=<u></u><u></u></p><p>> <u></u><u></u></p><p>> nodeTypeId { nodeBody } |<u></u><u></u></p><p>> <u></u><u></u></p><p>> Script { scriptBody } |<u></u><u></u></p><p>> <u></u><u></u></p><p>> ComposedShader {composedShaderBody} |<u></u><u></u></p><p>> PackagedShader {packagedShaderBody} |<u></u><u></u></p><p>> ShaderProgram {shaderProgramBody} ;<u></u><u></u></p><p>> <u></u><u></u></p><p>> nodeBody ::=<u></u><u></u></p><p>> <u></u><u></u></p><p>> nodeBodyElement |<u></u><u></u></p><p>> <u></u><u></u></p><p>> nodeBodyElement nodeBody |<u></u><u></u></p><p>> <u></u><u></u></p><p>> empty ;<u></u><u></u></p><p>> <u></u><u></u></p><p>> nodeBodyElement ::=<u></u><u></u></p><p>> <u></u><u></u></p><p>> initializeOnlyId fieldValue |<u></u><u></u></p><p>> inputOutputId fieldValue |<u></u><u></u></p><p>> <u></u><u></u></p><p>> initializeOnlyId IS initializeOnlyId |<u></u><u></u></p><p>> <u></u><u></u></p><p>> inputOnlyId IS inputOnlyId |<u></u><u></u></p><p>> <u></u><u></u></p><p>> outputOnlyId IS outputOnlyId |<u></u><u></u></p><p>> <u></u><u></u></p><p>> inputOutputId IS inputOutputId |<u></u><u></u></p><p>> <u></u><u></u></p><p>> routeStatement |<u></u><u></u></p><p>> <u></u><u></u></p><p>> protoStatement ;<u></u><u></u></p><p>> <u></u><u></u></p><p>> and<u></u><u></u></p><p>> <u></u><u></u></p><p>> routeStatement ::=<u></u><u></u></p><p>> <u></u><u></u></p><p>> ROUTE nodeNameId . outputOnlyId TO nodeNameId . inputOnlyId ;<u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> which, at first glance, looks OK to me from perspective of Joe’s <u></u><u></u></p><p>> example (and many other examples)…<u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> Do you have modifications to suggest for the grammar?<u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> p.s. I tried to add a Mantis issue for long-term tracking but had trouble getting form to respond properly, will try again another time.<u></u><u></u></p><p>> <u></u><u></u></p><p>> Ensure ClassicVRML grammar matches X3D 4.0 Architecture Concepts and rules.<u></u><u></u></p><p>> In particular, closely examine placement of ROUTE statements.<u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> all the best, Don<u></u><u></u></p><p>> <u></u><u></u></p><p>> --<u></u><u></u></p><p>> <u></u><u></u></p><p>> Don Brutzman  Naval Postgraduate School, Code USW/Br        <a href="mailto:brutzman@nps.edu" target="_blank"><span style="color:windowtext;text-decoration:none">brutzman@nps.edu</span></a><u></u><u></u></p><p>> <u></u><u></u></p><p>> Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<u></u><u></u></p><p>> <u></u><u></u></p><p>> X3D graphics, virtual worlds, navy robotics <u></u><u></u></p><p>> <a href="https://faculty.nps.edu/brutzman" target="_blank"><span style="color:windowtext;text-decoration:none">https://faculty.nps.edu/brutzman</span></a><u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> -----Original Message-----<u></u><u></u></p><p>> From: Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank"><span style="color:windowtext;text-decoration:none">michalis.kambi@gmail.com</span></a>><u></u><u></u></p><p>> Sent: Friday, June 9, 2023 2:11 PM<u></u><u></u></p><p>> To: Joseph D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank"><span style="color:windowtext;text-decoration:none">joedwil@earthlink.net</span></a>><u></u><u></u></p><p>> Cc: Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank"><span style="color:windowtext;text-decoration:none">brutzman@nps.edu</span></a>>; X3D Graphics <u></u><u></u></p><p>> public mailing list <<a href="mailto:x3d-public@web3d.org" target="_blank"><span style="color:windowtext;text-decoration:none">x3d-public@web3d.org</span></a>><u></u><u></u></p><p>> Subject: Re: [x3d-public] Problem in x3dviewscene: ROUTE placement<u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> The ROUTE cannot go anywhere in the file, in particular you cannot place it inside an MFNode.<u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <a href="https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/con" target="_blank"><span style="color:windowtext;text-decoration:none">https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/con</span></a><u></u><u></u></p><p>> cepts.html<u></u><u></u></p><p>> <u></u><u></u></p><p>> : ROUTE is allowed at top-level and in node's body,<u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> """<u></u><u></u></p><p>> <u></u><u></u></p><p>> A node's body consists of any number of field statements, IS statements, ROUTE statements, PROTO statements or EXTERNPROTO statements, in any order.<u></u><u></u></p><p>> <u></u><u></u></p><p>> """<u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> The grammar confirms this precisely:<u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <a href="https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/gra" target="_blank"><span style="color:windowtext;text-decoration:none">https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/gra</span></a><u></u><u></u></p><p>> mmar.html<u></u><u></u></p><p>> <u></u><u></u></p><p>> :<u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> - mfnodeValue is a sequence of nodeStatement<u></u><u></u></p><p>> <u></u><u></u></p><p>> - nodeStatement is only "USE ...", "DEF Xxx Node { }" or "Node { }"<u></u><u></u></p><p>> <u></u><u></u></p><p>> - only the more general "statement" allows ROUTE (and IMPORT, EXPORT, PROTO...). The "statement" is inside a node (but not in MFNode list).<u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> Regards,<u></u><u></u></p><p>> <u></u><u></u></p><p>> Michalis<u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> <u></u><u></u></p><p>> pt., 9 cze 2023 o 22:37 Joseph D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank"><span style="color:windowtext;text-decoration:none">joedwil@earthlink.net</span></a>> napisał(a):<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > Hi All,<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > My problem with view3dscene 4.3.0 is that it quits reading upon this sequence:<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > DEF StandAnimation Group {<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > children [<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > DEF StandTimer TimeSensor { … }<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > DEF Stand_r_metatarsalPitch OrientationInterpolator {<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> >   key [ … ]<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> >   keyValue [ ... ]} ...<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > ROUTE StandTimer.fraction_changed TO<u></u><u></u></p><p>> <u></u><u></u></p><p>> > Stand_r_ankleRotInterp.set_fraction<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > ]}<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > …<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > When it finds a ROUTE as child of Group. The error is:<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > VRML/X3D: Error when reading, will skip the rest of X3D file:<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > Error at line 661 column 6:<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > Expected node type or DEF or USE, got keyword "ROUTE"<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > Making this construction required.<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > DEF StandAnimation Group {<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > children [<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > DEF StandTimer TimeSensor { … }<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > DEF Stand_r_metatarsalPitch OrientationInterpolator {<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> >   key [ … ]<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> >   keyValue [ ... ]} ...<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > ]}<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > ROUTE StandTimer.fraction_changed TO<u></u><u></u></p><p>> <u></u><u></u></p><p>> > Stand_r_ankleRotInterp.set_fraction<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > …<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > Moving the Route outside the Group.<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > I think we went through the gram in detail here and found that placing the statement in this MF should be OK.<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > Thanks,<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > Joe<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > Clipped for mercy<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > From: x3d-public <<a href="mailto:x3d-public-bounces@web3d.org" target="_blank"><span style="color:windowtext;text-decoration:none">x3d-public-bounces@web3d.org</span></a>> On Behalf Of Joseph <u></u><u></u></p><p>> > D<u></u><u></u></p><p>> <u></u><u></u></p><p>> > Williams<u></u><u></u></p><p>> <u></u><u></u></p><p>> > Sent: Friday, June 9, 2023 10:29 AM<u></u><u></u></p><p>> <u></u><u></u></p><p>> > To: X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org" target="_blank"><span style="color:windowtext;text-decoration:none">x3d-public@web3d.org</span></a>><u></u><u></u></p><p>> <u></u><u></u></p><p>> > Subject: [x3d-public] Problem in x3dviewscene: ROUTE placement<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > Error in viewX3dScene processing<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > VRML/X3D: Error when reading, will skip the rest of X3D file: Error at line 661 column 6: Expected node type or DEF or USE, got keyword "ROUTE"<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > I was hoping we could fix this player problem since we determined that a ROUTE statement can go anywhere in the file.<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > Thanks,<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> > Joe<u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p><p>> <u></u><u></u></p><p>> ><u></u><u></u></p></div></div><p class="MsoNormal">_______________________________________________<br>x3d-public mailing list<br><a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><u></u><u></u></p></blockquote></div></div></div></div></div></blockquote></div></div></blockquote></div></div></blockquote></div></div></blockquote></div></div></blockquote></div></div></div></div></blockquote></div></div>
</blockquote></div></div>