<html aria-label="message body"><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div>Yes, that's a good idea, which I had already thought of.</div><div><br></div><div>If a hash exists, the exported node with this name is used, otherwise the first X3DGeometryNode from the file is used.</div><div><br></div><div>I have implemented this, but a new version will not be available until Sunday.</div><div><br></div><div>Best regards,</div><div>Holger</div><div><br></div><div>
<meta charset="UTF-8"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="text-align: start; text-indent: 0px; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">—</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">Holger Seelig<br>holger.seelig@yahoo.de<br><br></div></div></div></div></div></div></div></div></div></div></div></div>
</div>
<div><br><blockquote type="cite"><div>Am 23.02.2026 um 05:06 schrieb Don Brutzman <don.brutzman@gmail.com>:</div><br class="Apple-interchange-newline"><div><div dir="ltr"><div>Holger, thanks for sharing an excellent example. Glad it works!</div><div><br></div><div>For your example, it certainly is convenient to load the first geometry node in an X3D model... but I am wondering if it might be better to encourage Inline with a regular EXPORT/IMPORT combination... I guess InlineGeometry load of first Shape saves loading a full X3D Inline, and possibly needing to hide it under a Switch (or use visible='false') to avoid rendering.</div><div><br>Building on your example, perhaps we might extend the syntax of InlineGeometry url to point to an EXPORTed node, i.e. change your</div><div><ul><li><div style="background-color: rgb(255, 255, 254); font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><div><span style="color:rgb(0,0,255)"><</span><span style="color:rgb(128,0,0)">InlineGeometry</span> <span style="color:rgb(255,0,0)">DEF</span>=<span style="color:rgb(0,0,255)">'InlinePoints'</span></div><div> <span style="color:rgb(255,0,0)">url</span>=<span style="color:rgb(0,0,255)">'"assets/Points.x3d"'</span><span style="color:rgb(128,0,0)">/</span><span style="color:rgb(0,0,255)">></span></div></div></li></ul><div><font>to something like</font></div></div><div><ul><li><font color="#0000ff"><div style="font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><div style="background-color:rgb(255,255,254)"><span style="color:rgb(0,0,255)"><</span><span style="color:rgb(128,0,0)">InlineGeometry</span> <span style="color:rgb(255,0,0)">DEF</span>=<span style="color:rgb(0,0,255)">'InlinePoints'</span></div><div style=""><span style="background-color:rgb(255,255,254)"> </span><span style="background-color:rgb(255,255,254);color:rgb(255,0,0)">url</span><span style="background-color:rgb(255,255,254)">=</span><span style="color:rgb(0,0,255)"><span style="background-color:rgb(255,255,254)">'"assets/Points.x3d</span><span style="background-color:rgb(255,255,0)">#ExportedPointSet</span><span style="background-color:rgb(255,255,254)">"'</span></span><span style="background-color:rgb(255,255,254);color:rgb(128,0,0)">/</span><span style="background-color:rgb(255,255,254);color:rgb(0,0,255)">></span></div></div></font></li></ul></div><div>Such a url extension is similar to how we handle external prototypes, and gives more flexibility regarding what to extract from the remote scene. Also less error-prone in the future if someone shuffles the geometry around in an external .x3d file. Nevertheless, it might also leave more opportunity for error if the EXPORT node is not geometry. Hmmm... seems like we need to be careful here. Wondering what people think.</div><div><br></div><div>I have added another example that shows Sunrize successfully loading an STL file via InlineGeometry.</div><div><ul><li>X3D Example Archives: X3D4AM, X3D for Advanced Modeling, Additive Manufacturing, Cleat Clamp Inline Geometry</li><li>CleatClamp STL loaded by InlineGeometry with Appearance applied.</li><li><a href="https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AdditiveManufacturing/CleatClampInlineGeometryIndex.html">https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AdditiveManufacturing/CleatClampInlineGeometryIndex.html</a><br></li><li><a href="https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AdditiveManufacturing/CleatClampInlineGeometrySunrize.png">https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/AdditiveManufacturing/CleatClampInlineGeometrySunrize.png</a></li></ul></div><div>Additional progress: I have added InlineGeometry to v4.1 drafts for X3D Tooltips, XML DTD and Schema, X3DUOM, X3DJSAIL Java, X3DPSAIL Python, and X3D Ontology for Semantic Web. Node-aware links for each of these (and to X3D spec) are found at the top of each tooltip.</div><div><ul><li><a href="https://www.web3d.org/x3d/tooltips/X3dTooltips.html#InlineGeometry">X3D Tooltips, draft v4.1: InlineGeometry</a></li><li><a href="https://www.web3d.org/x3d/tooltips/X3dTooltips.html#InlineGeometry">https://www.web3d.org/x3d/tooltips/X3dTooltips.html#InlineGeometry</a><br></li></ul>Again thanks for super demonstration of progress, and contributing to our thinking through InlineGeometry possibilities fully.</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"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace">all the best, Don</font></div><div style="color:rgb(34,34,34)"><font face="monospace">-- </font></div><div style="color:rgb(34,34,34)"><font face="monospace">X3D Graphics, Maritime Robotics, Distributed Simulation</font></div><div style="color:rgb(34,34,34)"><font face="monospace">Relative Motion Consulting <a href="https://relativemotion.info/" target="_blank">https://RelativeMotion.info</a></font></div></div></div></div><br></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sun, Feb 22, 2026 at 3:34 AM Holger Seelig via x3d-public <<a href="mailto:x3d-public@web3d.org">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"><div><div>The new version of X_ITE, which has just been released, now comes with experimental support for InlineGeometry. </div><div><br></div><div>The implementation of InlineGeometry loads a model and searches for the first X3DGeometryNode it finds. This is then taken and displayed.</div><div><br></div><div>There is already an example showing three InlineGeometry nodes with a box, lines, and points, where the load field can be toggled with a switch button and the color of all geometries can be changed:</div><div><a href="https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/media/examples/Networking/InlineGeometry/InlineGeometry.x3d" target="_blank">https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/media/examples/Networking/InlineGeometry/InlineGeometry.x3d</a></div><div><br></div><div>The loaded files are very normal X3D or converted glTF, OBJ, STL, or PLY files in which an X3DGeometryNode is searched for.</div><div><br></div><div>Of course, InlineGeometry will work with any other node that expects an X3DGeometryNode or an X3DUrlObject.</div><div><br></div><div>Have fun trying out InlineGeometry, it works. 😃</div><div><br></div><div>Best regards,</div><div>Holger</div><div><br></div><div>
<div dir="auto" style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;"><div dir="auto" style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;"><div dir="auto" style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;"><div dir="auto" style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;"><div dir="auto" style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;"><div dir="auto" style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;"><div dir="auto" style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;"><div dir="auto" style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;"><div dir="auto" style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;"><div dir="auto" style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;"><div dir="auto" style="text-align:start;text-indent:0px"><div style="letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;">—</div><div style="letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;">Holger Seelig<br><a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a><br><br></div></div></div></div></div></div></div></div></div></div></div></div>
</div>
<br></div>_______________________________________________<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>
</div></blockquote></div><br></body></html>