[X3D-Ecosystem] GeneratedCubeMapTexture

Don Brutzman don.brutzman at gmail.com
Tue Dec 16 16:01:57 PST 2025


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.

>From the X3D specification:

   - X3D Architecture draft 4.1, clause 34, Cube Map Environmental
   Texturing component
   -
   https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/environmentalTexturing.html#GeneratedCubeMapTexture

34.4.2 GeneratedCubeMapTexture
>
> 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]
> }
>
> 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.
>
> The viewpoint of the generated texture is based on the location and
> orientation of the associated geometry in world space.
>
> NOTE   An object trying to render itself in the scene graph can cause
> infinite loops in the renderer implementation and is thus not permitted.
>
> The field of view shall be π/2 radians (or the equivalent angle base
> units) with an aspect ratio of 1:1.
>
> The *size* field indicates the resolution of the generated images in
> number of pixels per side.
>
> The *update* field can be used to request a regeneration of the texture.
> Setting this field to "ALWAYS" will cause the texture to be rendered
> every frame. A value of "NONE" will stop rendering so that no further
> updates are performed even if the contained scene graph changes. When the
> value is set to "NEXT_FRAME_ONLY", 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 "NONE" to
> indicate that the rendering has already taken place. Since this is a change
> of value for the *update* field, an output event is automatically
> generated.
>

   - X3D Tooltips:  GeneratedCubeMapTexture
   -
   https://www.web3d.org/x3d/tooltips/X3dTooltips.html#GeneratedCubeMapTexture

Aaron, my understanding of this restriction is to avoid image-generation
recursion at run time.

   - Wikipedia: Droste effect
   - The *Droste effect* (Dutch pronunciation: [ˈdrɔstə]
   <https://en.wikipedia.org/wiki/Help:IPA/Dutch>), known in art as an
   example of *mise en abyme <https://en.wikipedia.org/wiki/Mise_en_abyme>*,
   is the effect of a picture recursively
   <https://en.wikipedia.org/wiki/Recursion> 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.
   - https://en.wikipedia.org/wiki/Droste_effect


   - Wikipedia:  Mise en abyme
   - In Western art history
   <https://en.wikipedia.org/wiki/Western_art_history>, *mise en abyme* (French
   pronunciation: [miz ɑ̃n‿abim]
   <https://en.wikipedia.org/wiki/Help:IPA/French>; also *mise en abîme*)
   is the technique of placing a copy of an image within itself, often in a
   way that suggests an infinitely recurring sequence.
   - https://en.wikipedia.org/wiki/Mise_en_abyme

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.

p.s. probably not what you are thinking of, but here is a humanoid image
generated  with Droste effect...  8)

all the best, Don
-- 
X3D Graphics, Maritime Robotics, Distributed Simulation
Relative Motion Consulting  https://RelativeMotion.info


On Tue, Dec 16, 2025 at 3:13 PM Bergstrom, Aaron via X3D-Ecosystem <
x3d-ecosystem at web3d.org> wrote:

> So I’m rewriting material/texture export out of Maya.
>
>
>
> 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.”
>
>
>
> Does that mean that it’s safe to use it on a skin of an HAnimHumanoid?
>
>
>
> Aaron
> --
> X3D-Ecosystem mailing list
> X3D-Ecosystem at web3d.org
> http://web3d.org/mailman/listinfo/x3d-ecosystem_web3d.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-ecosystem_web3d.org/attachments/20251216/b72ec4af/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: DrosteEffectCameraImage.600x800.jpg
Type: image/jpeg
Size: 104659 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-ecosystem_web3d.org/attachments/20251216/b72ec4af/attachment-0001.jpg>


More information about the X3D-Ecosystem mailing list