<div dir="ltr"><div dir="ltr"><div><div>Thanks again for developmental efforts and discussions.  Dick and I reviewed further last week.</div><div><div dir="ltr" class="gmail_signature"><div dir="ltr"></div></div></div> </div><div>As previously noted, security precautions are significant for saving texture/depth images.  We haven't really had to consider such issues before... it seems better to consider a new interface, <i>X3DUrlOutputObject</i>.</div><div><br></div><div>The latest draft spec prose follows.  As ever, all consideration and potential improvements are welcome.</div><div><ul><li><font face="arial, sans-serif">X3D Architecture, draft 4.1, clause 18 Texturing component, <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/texturing.html#RenderedTexture"><span class="gmail-proposed" title="Mantis 1529" style="background-color:yellow">18.4.7 RenderedTexture</span></a></font></li><li><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/texturing.html#RenderedTexture">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/texturing.html#RenderedTexture</a></li></ul></div><div><div class="gmail-proposed" title="Mantis 1529" style="background-color:yellow;color:rgb(0,0,0)"><p class="editorsNote" title="Mantis 1529" style="background-color:lightcyan"><font face="arial, sans-serif">Editors note: under discussion.</font></p><h2 style="margin-top:18px"><font size="2" face="arial, sans-serif"><a id="gmail-RenderedTexture"></a>18.4.7 RenderedTexture</font></h2><pre class="gmail-node" style="margin-left:25px">RenderedTexture : X3DTexture2DNode, X3DUrlOutputObject {
  SFNode   [in,out] children          NULL   [X3DBackgroundNode,X3DFogObject,X3DViewpointNode, X3DChildNode]
  SFBool   [in,out] depthMap          FALSE
  SFString [in,out] description       ""
  MFInt32  [in,out] dimensions        [128,128,4,1,1]   [0,infinity)
  SFBool   [in,out] enabled           TRUE
  SFBool   [out]    isActive
  SFNode   [in,out] metadata          NULL   [X3DMetadataObject]
  SFBool   []       repeatS           TRUE
  SFBool   []       repeatT           TRUE
  SFBool   [in,out] replaceImage      TRUE
  SFNode   []       textureProperties NULL   [TextureProperties]
  SFString [in,out] update            "NONE" ["NONE"|"NEXT_FRAME_ONLY"|"ALWAYS"]
  MFString [in,out] url               []     [URI]
}<font face="arial, sans-serif">
</font></pre><p><font face="arial, sans-serif">RenderedTexture is a texture node that renders the view from a local viewpoint or separate scene into an offscreen buffer, producing an image that can be applied to geometry in real time. Such images can also be saved to a local file or stream. RenderedTexture enables effects such as dynamic reflections, live video screens, shadows, or portals by continuously updating the texture based on the rendered content.</font></p><p><font face="arial, sans-serif">The <i>children</i> field can include a single specific viewpoint from which to render to texture. If no X3DViewpointNode is defined, then the currently bound viewpoint in the scene is used. The <i>children</i> field can also explicitly define a single optional background node, single optional fog node, and a single X3DChildNode scene subgraph to be used when creating the render image.</font></p><p><font face="arial, sans-serif">The <i>depthMap</i> field indicates that a generated texture contains a depth buffer for the image, instead of the color buffer.</font></p><p><font face="arial, sans-serif">The <i>dimensions</i> field sets values for width, height, color components [1..4] and number of multiple render targets (MRT).</font></p><p><font face="arial, sans-serif">The <i>enabled</i> field enables and disables node operation.</font></p><p><font face="arial, sans-serif">The <i>replaceImage</i> field defines whether only a single updated image file or multiple image files can be saved.</font></p><p><font face="arial, sans-serif">The <i>update</i> field controls regeneration of the texture, where <span class="gmail-code">"NONE"</span> means no updates after initialization, <span class="gmail-code">"NEXT_FRAME_ONLY"</span> means a single update, and <span class="gmail-code">"ALWAYS"</span> means continuous updates. See <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/environmentalTexturing.html#GeneratedCubeMapTexture">34.4.2 GeneratedCubeMapTexture</a> for details.</font></p><p><font face="arial, sans-serif">The <i>url</i> field optionally defines a relative address to a file name that can be used for storing one or more rendered textures. See <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/texturing.html#ImageTexture">18.4.1 ImageTexture</a> for supported file formats.</font></p><p><font face="arial, sans-serif">Security considerations and requirements in <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/networking.html#X3DUrlOutputObject">9.3.3 <i>X3DUrlOutputObject</i></a> are essential and must be observed whenever data output might occur.</font></p></div><div class="editorsNote" title="Mantis 1529" style="background-color:lightcyan;color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif"><p>Editors note: additional considerations follow, overall status maintained in <a href="https://mantis.web3d.org/view.php?id=1529" target="_blank">Mantis 1529</a>.</p><ol type="a"><li style="margin-top:4px">Security precautions: saving output information to a file is a new capability for X3D. Need to require user permission for saving images (if allowed by local file system) due to potential loss of privacy.</li><li style="margin-top:4px">Rather than overloading or subsetting <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/networking.html#X3DUrlObject">X3DUrlObject</a>, security precautions for privacy concepts, file storage etc. are handled in new interface <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/networking.html#X3DUrlOutputObject">X3DUrlOutputObject</a>.</li><li style="margin-top:4px">Added <i>enabled</i> and <i>replaceImage</i> fields for greater control of functionality both by authors and by users at run time.</li><li style="margin-top:4px">Likely need an inputOnly SFBool triggering mechanism for a single image, perhaps <i>setRenderNextFrame</i> or by setting enabled TRUE.</li><li style="margin-top:4px">What is the meaning of multiple render targets (MRT)?</li><li style="margin-top:4px">This node matches the interface for X3DSensorNode. If detecting whether writing a file counts as sensing, should we add that?</li><li style="margin-top:4px">Likely future capability: connecting url to an output video stream.</li></ol></div></div><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)"><font face="arial, sans-serif">and a first draft for</font></div><div style="color:rgb(34,34,34)"><ul><li><span style="font-family:arial,sans-serif">X3D Architecture, draft 4.1, clause 9 Networking component, </span><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/networking.html#X3DUrlOutputObject" style="font-family:Verdana,Arial,Helvetica,sans-serif">9.3.3 <i style="">X3DUrlOutputObject</i></a></li><li><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/networking.html#X3DUrlOutputObject">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/networking.html#X3DUrlOutputObject</a></li></ul><div><h3 style="margin-top:14px;color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif"><font size="2" style="background-color:rgb(207,226,243)">9.3.3 <i>X3DUrlOutputObject</i></font></h3><pre class="gmail-node" style="color:rgb(0,0,0);margin-left:25px"><span style="background-color:rgb(207,226,243)">X3DUrlOutputObject {
  SFString [in,out] description   ""
  SFBool   [in,out] enabled       TRUE
  SFBool   [out]    isActive
  MFString [in,out] url           []     [URI]
}
</span></pre><p style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif"><span style="background-color:rgb(207,226,243)">This abstract interface is inherited by all nodes that publish data on the local file system or to the World Wide Web, such as <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/texturing.html#RenderedTexture">RenderedTexture</a>.</span></p><p style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif"><span style="background-color:rgb(207,226,243)">The <i>description</i> field is useful for authors to communicate functional intent of the data output process. Mechanisms for displaying such description hints are intentionally not specified and may vary among X3D browsers.</span></p><p style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif"><span style="background-color:rgb(207,226,243)">The <i>enabled</i> field either enables or disables data output processing by the node.</span></p><p style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif"><span style="background-color:rgb(207,226,243)">The <i>isActive</i> field provides a TRUE event when node data output becomes active, and a FALSE event when node data output is stopped.</span></p><p style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif"><span style="background-color:rgb(207,226,243)">Security precautions are significant since url data output raises privacy considerations that include possible observation of user behaviour, revealing restricted-access scene observations, and the potential for unintended information disclosure.</span></p><p style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif"><span style="background-color:rgb(207,226,243)">Browsers must provide one or more configuration mechanisms to ensure</span></p><ol type="a" style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif"><li style="margin-top:4px"><span style="background-color:rgb(207,226,243)">General permissions are provided for a browser to save data,</span></li><li style="margin-top:4px"><span style="background-color:rgb(207,226,243)">Specific permissions are granted by a user to save data in the current session, and</span></li><li style="margin-top:4px"><span style="background-color:rgb(207,226,243)">Ensuring permissions are granted before overwriting prior saved data.</span></li></ol><p class="gmail-note" style="margin-top:18px;margin-bottom:18px;font-family:univers,arial,sans-serif;color:rgb(0,0,0)"><span style="background-color:rgb(207,226,243)">NOTE  It is considered good security practice for X3D browsers to ensure that an indication is provided when data output is occurring.</span></p></div></div><div style="color:rgb(34,34,34)"><font face="arial, sans-serif">Have fun with X3D rendering and Web extensibility!  😁</font></div><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace">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, Mar 22, 2026 at 10:11 AM Don Brutzman <<a href="mailto:don.brutzman@gmail.com">don.brutzman@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><i>Wow!  </i>Thanks for this interesting proposal Holger (and Michalis, and X3DOM team).  This is an excellent and interesting prospect for X3D 4.1.</div><div><ul><li><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/Architecture.html" target="_blank">X3D Architecture 4.1 draft — ISO/IEC 19775-1:202x — X3D Architecture index page</a></li><li><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/Architecture.html" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/Architecture.html</a></li></ul><div>with list of current v4.1 draft nodes at</div></div><div><ul><li>X3D Architecture draft 4.1, Node, abstract node type, and abstract interface index</li><li><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/nodeIndex.html" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/nodeIndex.html</a></li><li><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;text-align:center;background-color:rgb(224,255,255)">New nodes in X3D 4.1 draft: </span><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/nodeIndex.html#EnvironmentLight" style="font-family:Verdana,Arial,Helvetica,sans-serif;text-align:center" target="_blank">EnvironmentLight</a><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;text-align:center;background-color:rgb(224,255,255)">, </span><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/nodeIndex.html#FontLibrary" style="font-family:Verdana,Arial,Helvetica,sans-serif;text-align:center" target="_blank">FontLibrary</a><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;text-align:center;background-color:rgb(224,255,255)">, </span><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/nodeIndex.html#HAnimPose" style="font-family:Verdana,Arial,Helvetica,sans-serif;text-align:center" target="_blank">HAnimPose</a><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;text-align:center;background-color:rgb(224,255,255)">, </span><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/nodeIndex.html#InlineGeometry" style="font-family:Verdana,Arial,Helvetica,sans-serif;text-align:center" target="_blank">InlineGeometry</a><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;text-align:center;background-color:rgb(224,255,255)">, </span><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/nodeIndex.html#Tangent" style="font-family:Verdana,Arial,Helvetica,sans-serif;text-align:center" target="_blank">Tangent</a></li><li>also at 

<a href="https://www.web3d.org/x3d/tooltips/X3dTooltips.html" target="_blank">X3D Tooltips in English version 4.0 (with X3D version 4.1 draft)</a></li><li><a href="https://www.web3d.org/x3d/tooltips/X3dTooltips.html" target="_blank">https://www.web3d.org/x3d/tooltips/X3dTooltips.html</a></li></ul></div><div><i>Looking back:</i>  perhaps someone knows if any Web3D Conference papers were written on this topic?  I searched the ACM Digital Library but was not able to narrow the query well enough.</div><div><ul><li><a href="https://dl.acm.org/conference/web3d" target="_blank">WEB3D Conference - Home</a></li><li><a href="https://dl.acm.org/conference/web3d" target="_blank">https://dl.acm.org/conference/web3d</a></li></ul><div><i>Looking ahead: </i>wondering if we might add an inputOnly field to trigger saving the rendered image to a file, along with a local relative url for saving that file?  Having such functionality might be a powerful way for people to use X3D models as an authoring tool.  The specification would necessarily need to add some security precautions for implementations that will keep end users in charge of permitting such a capability.</div></div><div><br></div><div>Have fun with X3D!  😁 👉 📷 </div><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace">all the best, Don</font></div><div style="color:rgb(34,34,34)"><font face="monospace">-- </font></div><div style="color:rgb(34,34,34)"><font face="monospace">X3D Graphics, Maritime Robotics, Distributed Simulation</font></div><div style="color:rgb(34,34,34)"><font face="monospace">Relative Motion Consulting  <a href="https://RelativeMotion.info" target="_blank">https://RelativeMotion.info</a></font></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Mar 22, 2026 at 2:44 AM Holger Seelig 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"><div><div>The latest version of X_ITE now includes the new RenderedTexture node. This node is very close to Castle's and X3DOM's RenderedTexture. Therefore, it makes sense to standardize this node and possibly include it in the new X3D 4.1 standard.</div><div><br></div><div>Description (from Castle)</div><div>RenderedTexture is a texture rendered from a specified viewpoint in the 3D scene. This can be used for a wide range of graphic effects, the most straightforward use is to make something like a "security camera" or a "portal", through which a player can peek what happens at a other place in 3D world, or to make a mirror.</div><div><br></div><div>Documentation for the node in the respective browsers</div><div>X_ITE: <a href="https://create3000.github.io/x_ite/components/texturing/renderedtexture/" target="_blank">https://create3000.github.io/x_ite/components/texturing/renderedtexture/</a></div><div>Castle: <a href="https://castle-engine.io/x3d_implementation_texturing_extensions.php#section_ext_rendered_texture" target="_blank">https://castle-engine.io/x3d_implementation_texturing_extensions.php#section_ext_rendered_texture</a></div><div>X3D’OM: <a href="https://doc.x3dom.org/author/Texturing/RenderedTexture.html" target="_blank">https://doc.x3dom.org/author/Texturing/RenderedTexture.html</a></div><div><br></div><div>Example file in X_ITE Playground</div><div><a href="https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/media/examples/Texturing/RenderedTexture/RenderedTexture.x3d" target="_blank">https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/media/examples/Texturing/RenderedTexture/RenderedTexture.x3d</a></div><div><br></div><div>Best regards,</div><div>Holger</div><div><br></div><div>
<div dir="auto" style="color:rgb(0,0,0);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="color:rgb(0,0,0);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="color:rgb(0,0,0);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="color:rgb(0,0,0);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="color:rgb(0,0,0);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="color:rgb(0,0,0);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="color:rgb(0,0,0);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="color:rgb(0,0,0);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="color:rgb(0,0,0);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="color:rgb(0,0,0);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="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">—</div><div style="color:rgb(0,0,0);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>
</blockquote></div></div>