[x3d-public] [x3d] X3D Working Group meeting 19 OCT 2018 minutes: X3D Semantic Web working group, Water/mirrors, etc.

Michalis Kamburelis michalis.kambi at gmail.com
Fri Oct 19 11:25:54 PDT 2018

Brutzman, Donald (Don) (CIV) <brutzman at nps.edu> wrote:
> Updates including today's discussion attached.

Below, some additional information about what I want to do on GitHub,
and about my "water + mirrors in X3D" demo:

> - Michalis will look at possibility making a mirror of our sourceforge infrastructure on Github.

Yes. I will create a mirror of the repository
https://sourceforge.net/p/x3d/code/HEAD/tree/ , with complete history
and contents. (Only the subdirectory "www.web3d.org" there, without
the "legacy" subdirectory? Or everything? Your choice.)

Every commit will be synchronized automatically (unidirectional
synchronization, SourceForge -> GitHub).

> - If that looks worthwhile, creating a new open account for X3D usage there should be free.

It would be an "organization", not an "account", to be precise. Like
an organization "web3d-public". So you would have a repository like
https://github.com/web3d-public/web3d/ (with contents synchronized
from www.web3d.org SVN repoo on SourceForge).

In the first approach (without a new organization) we will simply have
https://github.com/michaliskambi/web3d/ , because
https://github.com/michaliskambi/ is my account on GitHub.

> Suggested additions to X3D specification:
> ========================================================
> ========================================================
> https://castle-engine.io/x3d_extensions_mirror_plane.php
> add RenderedTexture, ViewpointMirror and TextureCoordinateGenerator.mode = MIRROR-PLANE


- "RenderedTexture" node is already considered for inclusion in X3D
4.0, and that's good :) See
http://www.web3d.org/wiki/index.php/X3D_version_4.0_Development .

    "RenderedTexture" is implemented by many X3D browsers, and has
many user-cases.
    - CGE: https://castle-engine.io/x3d_implementation_texturing_extensions.php#section_ext_rendered_texture
    - InstantReality:
    - Xj3D: http://xj3d.org/extensions/render_texture.html ,
    - X3DOM: https://doc.x3dom.org/author/Texturing/RenderedTexture.html .

- The remaining features ("ViewpointMirror" and
TextureCoordinateGenerator.mode = "MIRROR-PLANE") should probably wait
until more X3D browsers decide to implement them. I welcome opinions
from other browser implementors :) The description is on
https://castle-engine.io/x3d_extensions_mirror_plane.php .

> Discussion questions - totally helpful!
> a. How might this capability modify the X3Dv4 specifications?
> b. How is it different from Environmental Texture Component and Texturing Component?

Using this technique to create mirrors is very similar to using
GeneratedCubeMapTexture . In fact, my docs
https://castle-engine.io/x3d_extensions_mirror_plane.php refer to
GeneratedCubeMapTexture . The way of thinking (for the X3D authors)
should be:

- Is this a (mostly) flat object? Like a mirror in your bathroom, or a
water surface (with small waves). Then use this approach, with 2D
RenderedTexture and ViewpointMirror. It will result in better quality
and speed.

- Is this not a flat object? Like a very shiny teapot, sphere,
cylinder etc. Then use GeneratedCubeMapTexture , which is using a
cubemap, which is basically 6x 2D textures.

> c. How implementable is it by other players? Mirrors considered straightforward.

If you can implement RenderedTexture, then the rest is easy :)

In fact, look at how X3DOM does it in JavaScript:
https://doc.x3dom.org/tutorials/lighting/mirror/index.html .

> d. Is shader support necessary?  Shader capabilities are internally necessary for all modern X3D players.
> e. Might these techniques relate to inclusion of shadows?  Not really, separately defined and implemented.
> f. If ViewpointMirror node only appears within RenderedTexture, might it be incorporated
> g. Are prismatic effects possible and relevant in this context?

The X3D extensions proposed above focus on making mirrors.

More effects, like water waves or caustics, can be added using shaders
(ComposedShader, or Castle Game Engine "compositing shaders"
https://castle-engine.io/compositing_shaders.php extensions). I did
not yet think about expressing them using X3D (without explicit shader
code). If you'd like to see water with caustics, see at
https://github.com/castle-engine/demo-models/, subdirectory
water/caustics/ :) You can open it with view3dscene from snapshots,
http://michalis.ii.uni.wroc.pl/view3dscene-snapshots/ .

> h. Might these techniques relate to proposed Projective Texture Mapping (PTM) capabilities?  Possibly...
> TODO where is PTM linked?  Need to get this material exposed.

Google finds this :

Best regards,

More information about the x3d-public mailing list