[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