<div dir="ltr"><div>We could certainly use a demonstration model in the X3D Example Archives. I suggest looking at X_ITE and other implementation examples. If you or anyone wants to share an example for Web3D publication or adaptation, please let me know.</div><div><br></div><div>From the X3D specification:</div><div><ul><li>X3D Architecture draft 4.1, clause 34, Cube Map Environmental Texturing component</li><li><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/environmentalTexturing.html#GeneratedCubeMapTexture" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/environmentalTexturing.html#GeneratedCubeMapTexture</a></li></ul></div><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-family:Verdana,Arial,Helvetica,sans-serif"><font size="2">34.4.2 GeneratedCubeMapTexture</font></h2><pre style="color:rgb(0,0,0);margin-left:25px">GeneratedCubeMapTexture : X3DEnvironmentTextureNode {
SFString [in,out] description ""
SFNode [in,out] metadata NULL [X3DMetadataObject]
SFString [in,out] update "NONE" ["NONE"|"NEXT_FRAME_ONLY"|"ALWAYS"]
SFInt32 [] size 128 (0,∞)
SFNode [] textureProperties NULL [TextureProperties]
}
</pre><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif">The GeneratedCubeMapTexture node defines a cubic environment map that sources its data from internally generated images, rendered from a virtual situated perspective in the scene.</span><p style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif">The viewpoint of the generated texture is based on the location and orientation of the associated geometry in world space.</p><p style="margin-top:18px;margin-bottom:18px;font-family:univers,arial,sans-serif;color:rgb(0,0,0)"><span style="background-color:rgb(255,242,204)">NOTE An object trying to render itself in the scene graph can cause infinite loops in the renderer implementation and is thus not permitted.</span></p><p style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif">The field of view shall be <span style="font-family:"Times New Roman",Times,serif">π</span>/2 radians (or the equivalent angle base units) with an aspect ratio of 1:1.</p><p style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif">The <i>size</i> field indicates the resolution of the generated images in number of pixels per side.</p><p style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif">The <i>update</i> field can be used to request a regeneration of the texture. Setting this field to <span style="font-family:monospace">"ALWAYS"</span> will cause the texture to be rendered every frame. A value of <span style="font-family:monospace">"NONE"</span> will stop rendering so that no further updates are performed even if the contained scene graph changes. When the value is set to <span style="font-family:monospace">"NEXT_FRAME_ONLY"</span>, it is an instruction to render the texture at the end of this frame, and then not render it again. In this case, the update frame indicator is set to this frame; at the start of the next frame, the update value shall be automatically set back to <span style="font-family:monospace">"NONE"</span> to indicate that the rendering has already taken place. Since this is a change of value for the <i>update</i> field, an output event is automatically generated.</p></blockquote><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)"><ul><li><font face="arial, sans-serif">X3D Tooltips: </font>
<span style="font-family:arial,sans-serif">GeneratedCubeMapTexture</span></li><li><font face="arial, sans-serif"><a href="https://www.web3d.org/x3d/tooltips/X3dTooltips.html#GeneratedCubeMapTexture">https://www.web3d.org/x3d/tooltips/X3dTooltips.html#GeneratedCubeMapTexture</a></font></li></ul></div><div style="color:rgb(34,34,34)"><font face="arial, sans-serif">Aaron, my understanding of this restriction is to avoid image-generation recursion at run time.</font></div><div style="color:rgb(34,34,34)"><ul><li><font face="arial, sans-serif">Wikipedia: Droste effect</font></li><li><font face="arial, sans-serif"><span style="color:rgb(0,0,0);font-family:sans-serif">The </span><b style="color:rgb(0,0,0);font-family:sans-serif">Droste effect</b><span style="color:rgb(0,0,0);font-family:sans-serif"> (</span><span style="color:rgb(0,0,0);font-family:sans-serif">Dutch pronunciation:</span><span style="color:rgb(0,0,0);font-family:sans-serif"> </span><span lang="nl-Latn-fonipa" style="color:rgb(0,0,0);font-family:sans-serif"><a href="https://en.wikipedia.org/wiki/Help:IPA/Dutch" title="Help:IPA/Dutch" style="color:rgb(0,43,184);background:none;text-decoration-line:none" target="_blank">[ˈdrɔstə]</a></span><span style="color:rgb(0,0,0);font-family:sans-serif">), known in art as an example of </span><i style="color:rgb(0,0,0);font-family:sans-serif"><a href="https://en.wikipedia.org/wiki/Mise_en_abyme" title="Mise en abyme" style="text-decoration-line:none;color:rgb(0,43,184);background:none" target="_blank">mise en abyme</a></i><span style="color:rgb(0,0,0);font-family:sans-serif">, is the effect of a picture </span><a href="https://en.wikipedia.org/wiki/Recursion" title="Recursion" style="text-decoration-line:none;color:rgb(0,43,184);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-family:sans-serif" target="_blank">recursively</a><span style="color:rgb(0,0,0);font-family:sans-serif"> appearing within itself, in a place where a similar picture would realistically be expected to appear. This produces a loop which in theory could go on forever, but in practice only continues as far as the image's resolution allows.</span></font></li><li><font face="arial, sans-serif"><a href="https://en.wikipedia.org/wiki/Droste_effect" target="_blank">https://en.wikipedia.org/wiki/Droste_effect</a></font></li></ul><ul><li><font face="arial, sans-serif">Wikipedia: Mise en abyme</font></li><li><font face="arial, sans-serif"><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">In </span><a href="https://en.wikipedia.org/wiki/Western_art_history" title="Western art history" style="text-decoration-line:none;color:rgb(0,43,184);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-family:sans-serif;font-size:12.7px" target="_blank">Western art history</a><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">, </span><i style="color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><b>mise en abyme</b></i><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"> (</span><span style="font-size:10.795px;color:rgb(0,0,0);font-family:sans-serif">French pronunciation:</span><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"> </span><span lang="fr-Latn-fonipa" style="color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><a href="https://en.wikipedia.org/wiki/Help:IPA/French" title="Help:IPA/French" style="color:rgb(0,43,184);background:none;text-decoration-line:none" target="_blank">[miz<span> </span>ɑ̃n‿abim]</a></span><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">; also </span><i style="color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><b>mise en abîme</b></i><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">) is the technique of placing a copy of an image within itself, often in a way that suggests an infinitely recurring sequence.</span></font></li><li><font face="arial, sans-serif"><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><a href="https://en.wikipedia.org/wiki/Mise_en_abyme" target="_blank">https://en.wikipedia.org/wiki/Mise_en_abyme</a></span></font></li></ul></div><div style="color:rgb(34,34,34)"><font face="arial, sans-serif">Editorial: the specification phrase "not permitted" might be overstrong. Probably better is "not recommended" instead. Since a crucial part of any algorithm is a termination, this texture generation condition will terminate when the resolution of the constructed image becomes less than the 2D texture provided. Therefore this will terminate, if performed within a single-frame timestep. My guess is that the "not permitted" prose came from a pre-GPU era when image generation might require multiple frames/timesteps to accomplish, leading to a non-terminating feedback loop.</font></div><div style="color:rgb(34,34,34)"><font face="arial, sans-serif"><br></font></div><div style="color:rgb(34,34,34)"><font face="arial, sans-serif">p.s. probably not what you are thinking of, but here is a humanoid image generated with Droste effect... 8)</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"><div dir="ltr" class="gmail_attr">On Tue, Dec 16, 2025 at 3:13 PM Bergstrom, Aaron via X3D-Ecosystem <<a href="mailto:x3d-ecosystem@web3d.org" target="_blank">x3d-ecosystem@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 lang="EN-US">
<div>
<p class="MsoNormal">So I’m rewriting material/texture export out of Maya.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">For the GeneratedCubeMapTexture node, what does the spec mean by: “NOTE An object trying to render itself in the scene graph can cause infinite loops in the renderer implementation and is thus not permitted.”<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Does that mean that it’s safe to use it on a skin of an HAnimHumanoid?<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Aaron<u></u><u></u></p>
</div>
</div>
-- <br>
X3D-Ecosystem mailing list<br>
<a href="mailto:X3D-Ecosystem@web3d.org" target="_blank">X3D-Ecosystem@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-ecosystem_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-ecosystem_web3d.org</a><br>
</div></blockquote></div>