<div dir="ltr"><div>(slapping of dust while emerging from the cave of history, which actually is pretty well lit...)</div><div><br></div><div>Key references:</div><div><ul><li><b>VRML97</b>, The Virtual Reality Modeling Language, 4 Concepts, 4.6.2 DEF/USE semantics</li><li><a href="https://www.web3d.org/documents/specifications/14772/V2.0/part1/concepts.html#4.6.2" target="_blank">https://www.web3d.org/documents/specifications/14772/V2.0/part1/concepts.html#4.6.2</a></li></ul><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><h3 style="color:rgb(0,0,0)"><font size="2" face="arial, sans-serif">4.6.2 DEF/USE semantics</font></h3><p style="color:rgb(0,0,0)"><font face="arial, sans-serif">A node given a name using the DEF keyword may be referenced by name later in the same file with USE or ROUTE statements. The USE statement does not create a copy of the node. Instead, the same node is inserted into the scene graph a second time, resulting in the node having multiple parents. Using an instance of a node multiple times is called <i>instantiation</i>.</font></p><p style="color:rgb(0,0,0)"><font face="arial, sans-serif">Node names are limited in scope to a single VRML file, prototype definition, or string submitted to either the CreateVrmlFromString browser extension or a construction mechanism for SFNodes within a script. Given a node named "NewNode" (i.e., <code>DEF NewNode</code>), any "<code>USE NewNode</code>" statements in SFNode or MFNode fields inside NewNode's scope refer to NewNode (see <a href="https://www.web3d.org/documents/specifications/14772/V2.0/part1/concepts.html#4.4.4" target="_blank">4.4.4, Transformation hierarchy</a>, for restrictions on self-referential nodes).</font></p><p style="color:rgb(0,0,0)"><font face="arial, sans-serif" style="background-color:rgb(255,255,0)">If multiple nodes are given the same name, each USE statement refers to the closest node with the given name preceding it in either the VRML file or prototype definition.</font></p></blockquote><div>and</div><div><ul><li><a href="https://www.web3d.org/documents/specifications/14772/V2.0/part1/concepts.html#4.10.2" target="_blank">https://www.web3d.org/documents/specifications/14772/V2.0/part1/concepts.html#4.10.2</a></li></ul><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><b>4.10.2 Route semantics</b><br>The connection between the node generating the event and the node receiving the event is called a route. Routes are not nodes. The ROUTE statement is a construct for establishing event paths between nodes. ROUTE statements may either appear at the top level of a VRML file, in a prototype definition, or inside a node wherever fields may appear. <span style="background-color:rgb(255,255,0)">Nodes referenced in a ROUTE statement shall be defined before the ROUTE statement.</span></blockquote></div><div> </div><div>... which led to a common practice by browsers (and sometimes authors) to move all ROUTE statements to the end of a file (or PROTO declaration). When ROUTEs are collected at the end, all DEF identifiers are found first.</div><div><br></div><div>Next level: X3D 3.0</div><div><ul><li><b>X3D Architecture v3.0</b>, clause 4 Concepts, 4.4.3 DEF/USE Semantics</li><li><a href="https://www.web3d.org/documents/specifications/19775-1/V3.0/Part01/concepts.html#DEFL_USESemantics" target="_blank">https://www.web3d.org/documents/specifications/19775-1/V3.0/Part01/concepts.html#DEFL_USESemantics</a></li></ul><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><h2 style="margin-top:18px;color:rgb(0,0,0)"><font size="2" face="arial, sans-serif">4.4.3 DEF/USE semantics</font></h2><p style="color:rgb(0,0,0)"><font face="arial, sans-serif">A node given a name using the DEF keyword may be referenced by name later in the same file with USE or ROUTE statements. The USE statement does not create a copy of the node. Instead, the same node is inserted into the scene graph a second time, resulting in the node having multiple parents. Using an instance of a node multiple times is called instantiation.<br><br>Node names are limited in scope to a single X3D file, prototype definition, or string submitted to either the CreateX3DFromString browser extension or a construction mechanism for SFNodes within a script. Given a node named "NewNode" (i.e., DEF NewNode), any "USE NewNode" statements in SFNode or MFNode fields inside NewNode's scope refer to NewNode (see <a href="https://www.web3d.org/documents/specifications/19775-1/V3.0/Part01/concepts.html#Transformationhierarchy" target="_blank">4.3.5 Transformation hierarchy</a>, for restrictions on self-referential nodes).<br><br><span style="background-color:rgb(255,255,0)">Node names shall be unique in the context within which the associated DEF keyword occurs.</span></font></p></blockquote></div><div>No mention of DEF before seen in X3D 3.0 paragraphs for 4.4.2.4.1 Routes or 4.4.8.2 Routes, and the words 'before' or 'prior' do not appear in this clause.</div><div><br></div><div>So it looks like the requirement for DEF before USE was formally relaxed in X3D 3.0 International Standard, circa 2004.</div><div> </div></div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><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">https://RelativeMotion.info</a></font></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, May 4, 2026 at 4:57 PM Len Bullard via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</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">Yes. Welcome to the fog of history which enshrouds the earnest digital <br>
archaeologist. Beyond the citation echo chambers and the fight for <br>
influence and wealth that hides treasures in the sands of ground truth <br>
and the bones of unheralded prophets.<br>
<br>
As John Houseman said in the TV show, The Paper Chase, there is always <br>
one more reference.<br>
<br>
Have fun.<br>
<br>
len<br>
<br>
> Future scholars of the 3D graphics parchment scrolls might find this<br>
> requirement in the VRML documents.<br>
> <br>
> Vince Marchetti<br>
> <br>
<br>
_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</blockquote></div>