[x3d-public] extra NavigationInfo modes, ptm

Michalis Kamburelis michalis.kambi at gmail.com
Thu Jan 30 09:51:27 PST 2020


In case of CGE  approach, indeed "ProjectedTextureCoordinate" is
implemented similar to "TextureCoordinateGenerator". A matrix
(corresponding to the viewpoint projection) is prepared on CPU, passed
to the GPU shaders as a uniform, and the necessary calculation is done
in the vertex shader.

( It even worked with OpenGL fixed-function pipeline, glTexGen, by
passing proper vectors as GL_EYE_PLANE vectors. Some time ago, even
whole shadow maps worked in CGE in the fixed-function pipeline. )

The "ProjectedTextureCoordinate.projector" can be a viewpoint or a
light source (in case of shadow maps, the light source projects a
special GeneratedShadowMap texture).

As for changing the spec of PTM: I rely on others opinion here :) I'm
not objective, since I made my own implementation of projective
texture mapping long time ago (it was presented at the Web3d 2010
conference). I don't feel objective enough to now almost remake the
existing PTM component in X3D v4 to essentially match my own
implementation. I'm happy to hear that my approach seems reasonable.

Regards,
Michalis

czw., 30 sty 2020 o 17:53 GPU Group <gpugroup at gmail.com> napisał(a):
>
> https://webglfundamentals.org/webgl/lessons/webgl-render-to-texture.html
> - shows rendering to a texture in webgl, so a GenerateOnceTexture or GeneratedTexture with some frequency / start/stop / once fields could work.in webgl
> -Doug
>
>
> On Thu, Jan 30, 2020 at 9:40 AM GPU Group <gpugroup at gmail.com> wrote:
>>
>> Upvector Hypotheses:
>> H0: orientation,translation vs upvector - they do the same thing, its a matter of convenience, and given one, internally can convert to the other.
>> If so then if its more convenient during scene authoring to follow viewpoint syntax, and more convenient in shaders to use upvector, then a few lines of code in the implementation can convert.
>>
>> Processing vs visualization
>> Hypothesis:weeb3d needs a general node(s) for creating a texture once to be used repeatedly later
>> (GeneratedCubeMapTexture I think it re-generates every frame)
>> <GenerateOnceTexture>
>> - uses backbuffer or fbo for target
>> - <scenegraph with viewpoint, shaders etc listed here to render to backbuffer (or USE from Switch case)>
>> - scrapes backbuffer into a texture
>> - maybe a fall-back texture in case fbo capabilities aren't available (are they in GL 2.1/webgl?)
>> </GenerateOnceTexture>
>>
>> -Doug
>>
>>
>> On Thu, Jan 30, 2020 at 8:56 AM Andreas Plesch <andreasplesch at gmail.com> wrote:
>>>
>>> I agree, just dealing with generating texture coordinates (on the fly, in the shader) and plugging into the texCoord field feels much more seamless.
>>>
>>> Would that work for typical use cases ? Are those limited to reconstruction of obliquely acquired images (from the air or inside a body) ?
>>>
>>> Applying oblique imagery to a surface is really more of an image processing step, and less of a visualization step.
>>>
>>> Since a projector really acts as a light source, could it be modeled as an image based light ?
>>>
>>> I did not understand what the advantage of direction+upVector over orientation as rotation is? Perhaps it is easier to animate direction separately since upVector typically is constant ?
>>>
>>> ---on the phone---
>>>
>>> On Thu, Jan 30, 2020, 7:59 AM Michalis Kamburelis <michalis.kambi at gmail.com> wrote:
>>>>
>>>>  I think the alternative approach to Projective Texture Mapping,
>>>> described by Andreas, is almost exactly what I proposed and
>>>> implemented long time ago :)
>>>>
>>>> CGE approach to projective texture mapping (unrelated to PTM in X3Dv4)
>>>> is on https://castle-engine.io/x3d_extensions_shadow_maps.php . It's
>>>> part of shadow maps specs, but it's useful without shadow maps as
>>>> well.
>>>>
>>>> Basically you can just use """ProjectedTextureCoordinate { projector
>>>> USE MyViewport }""" as a texture coordinate (in a "texCoord" field).
>>>> This generates texture coordinates, nothing more. You set up the
>>>> appropriate textures using existing texturing methods.
>>>>
>>>> In the same spirit, I did mirrors on flat objects:
>>>> https://castle-engine.io/x3d_extensions_mirror_plane.php , where you
>>>> can use """TextureCoordinateGenerator { mode "MIRROR-PLANE" }""".
>>>>
>>>> I admit I like my approach a bit. It cooperates with existing texture
>>>> specification without anything additional -- because it just generates
>>>> texture coordinates, and doesn't try to do more. But I'm no longer
>>>> subjective :)
>>>>
>>>> Regards,
>>>> Michalis
>>>>
>>>> śr., 29 sty 2020 o 23:57 Andreas Plesch <andreasplesch at gmail.com> napisał(a):
>>>> >
>>>> > Hi Michalis,
>>>> >
>>>> > I took the opportunity to look at
>>>> > https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-WD1/Part01/components/ProjectiveTextureMapping.html
>>>> > and some of the history.
>>>> >
>>>> > My main thought was why not reuse the existing, abstract viewpoint
>>>> > nodes to define the projector characteristics. The projector node
>>>> > fields just reiterate the viewpoint node fields, for the most part.
>>>> > But probably there are enough differences since viewpoint mixes camera
>>>> > and navigation options.
>>>> >
>>>> > Why not follow viewpoint and use orientation as a rotation instead of
>>>> > direction and upVector ? Seems more consistent and simpler.
>>>> >
>>>> > The definition of the coordinate system for location/direction seems
>>>> > to be missing. It is probably implied that it is the local coordinate
>>>> > system.
>>>> >
>>>> > Overall, it feels strange to have a global projector to affect all
>>>> > appearances by default but perhaps that is the most common scenario.
>>>> > The term Texture Mapping rather implies that it is a way to compute
>>>> > texture coordinates for a given texture, similar to
>>>> > TextureCoordinateGenerator, and on a similar level:
>>>> > ProjectiveTextureGenerator. DEF/USE would allow applying it to
>>>> > multiple Appearances easily.
>>>> >
>>>> > -Andreas
>>>> >
>>>> > On Mon, Jan 27, 2020 at 6:18 PM Michalis Kamburelis
>>>> > <michalis.kambi at gmail.com> wrote:
>>>> > >
>>>> > > Andreas Plesch <andreasplesch at gmail.com> wrote:
>>>> > > >
>>>> > > > x3dom has an extra explorationMode field which restricts mouse function in examine/turntable mode.
>>>> > > > zoom, pan, rotate values restrict to only these.
>>>> > > > -zoom, -pan, -rotate disable these.
>>>> > > > The field tends to be quite useful.
>>>> > > >
>>>> > > > I think x-ite implemented Projective Texture Mapping.
>>>> > >
>>>> > > Good news we have an implementation of PTM.
>>>> > >
>>>> > > I had some questions about how the Projective Texture Mapping in X3D
>>>> > > v4 applies the texture -- what happens if the shape already has a
>>>> > > ImageTexture, what happens if shape already has MultiTexture etc. I
>>>> > > listed them on "TODO: Address how the projective texturing in spec
>>>> > > affects existing textures" in
>>>> > > https://github.com/michaliskambi/x3d-tests/wiki/Clarify-%22Projective-texturing%22-component#todo-address-how-the-projective-texturing-in-spec-affects-existing-textures
>>>> > > . I'll test how X_ITE answered these questions.
>>>> > >
>>>> > > Regards,
>>>> > > Michalis
>>>> > >
>>>> > > >
>>>> > > > ---on the phone---
>>>> > > >
>>>> > > > On Mon, Jan 27, 2020, 3:00 PM <x3d-public-request at web3d.org> wrote:
>>>> > > >>
>>>> > > >> Send x3d-public mailing list submissions to
>>>> > > >>         x3d-public at web3d.org
>>>> > > >>
>>>> > > >> To subscribe or unsubscribe via the World Wide Web, visit
>>>> > > >>         http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>>> > > >> or, via email, send a message with subject or body 'help' to
>>>> > > >>         x3d-public-request at web3d.org
>>>> > > >>
>>>> > > >> You can reach the person managing the list at
>>>> > > >>         x3d-public-owner at web3d.org
>>>> > > >>
>>>> > > >> When replying, please edit your Subject line so it is more specific
>>>> > > >> than "Re: Contents of x3d-public digest..."
>>>> > > >>
>>>> > > >>
>>>> > > >> Today's Topics:
>>>> > > >>
>>>> > > >>    1. Re: x3d v4 proposed changes > 2 opensource criteria > any
>>>> > > >>       that are short (GPU Group)
>>>> > > >>
>>>> > > >>
>>>> > > >> ----------------------------------------------------------------------
>>>> > > >>
>>>> > > >> Message: 1
>>>> > > >> Date: Mon, 27 Jan 2020 12:18:39 -0700
>>>> > > >> From: GPU Group <gpugroup at gmail.com>
>>>> > > >> To: X3D Graphics public mailing list <x3d-public at web3d.org>
>>>> > > >> Subject: Re: [x3d-public] x3d v4 proposed changes > 2 opensource
>>>> > > >>         criteria > any that are short
>>>> > > >> Message-ID:
>>>> > > >>         <CAM2ogRfqXoH1duy9iGvX9BEmLFCpiLbYYO_HwMuR7HbYXkRvmg at mail.gmail.com>
>>>> > > >> Content-Type: text/plain; charset="utf-8"
>>>> > > >>
>>>> > > >> INVENTORY
>>>> > > >> FREEWRL
>>>> > > >> * X3Dv4 Implementations
>>>> > > >>    https://www.web3d.org/x3dv4-implementations
>>>> > > >> 1) 43 Projective Texture Mapping
>>>> > > >> x freewrl does not implement, document is mistaken
>>>> > > >> 2) 23.4.4 NavigationInfo > TURNTABLE
>>>> > > >> * freewrl implemented
>>>> > > >> (other freewrl navmodes and related not in v3.3:
>>>> > > >> DIST - explicit control over distance to pivot point for examine, turntable
>>>> > > >> - touchpads don't need RMB
>>>> > > >> SHIFT - turns off sensors
>>>> > > >> HOVER - isOver mode (useful for touch pad - allows triggering of isOver
>>>> > > >> only)
>>>> > > >> PEDAL - can drag 'floating cursor' in steps
>>>> > > >> SPHERICAL - like FLY: YAWPITCH except rotations constrained to viewpoint
>>>> > > >> local axes)
>>>> > > >> subsets of FLY: YAWZ, XY, YAWPTICH,ROLL)
>>>> > > >> 3) GeoSpatial > GeoOrigin - freewrl still allows in v3.3, never deprecated
>>>> > > >> in freewrl
>>>> > > >> 4) The rest freewrl has not implemented
>>>> > > >> /FREEWRL
>>>> > > >> Does this table miss anything?
>>>> > > >> /INVENTORY
>>>> > > >> -Doug Sanden
>>>> > > >> PS who's doing projective texture mapping? Should start with that?
>>>> > > >>
>>>> > > >>
>>>> > > >> On Mon, Jan 27, 2020 at 11:59 AM GPU Group <gpugroup at gmail.com> wrote:
>>>> > > >>
>>>> > > >> > INVENTORY
>>>> > > >> > FREEWRL
>>>> > > >> > * X3Dv4 Implementations
>>>> > > >> >    https://www.web3d.org/x3dv4-implementations
>>>> > > >> > 1) 43 Projective Texture Mapping
>>>> > > >> > x freewrl does not implement, document is mistaken
>>>> > > >> > 2) 23.4.4 NavigationInfo > TURNTABLE
>>>> > > >> > * freewrl implemented
>>>> > > >> > (other freewrl navmodes and related not in v3.3:
>>>> > > >> > DIST - explicit control over distance to pivot point for examine,
>>>> > > >> > turntable - touchpads don't need RMB
>>>> > > >> > SHIFT - turns off sensors
>>>> > > >> > HOVER - isOver mode (useful for touch pad - allows triggering of isOver
>>>> > > >> > only)
>>>> > > >> > PEDAL - can drag 'floating cursor' in steps
>>>> > > >> > SPHERICAL - like FLY: YAWPITCH except rotations constrained to viewpoint
>>>> > > >> > local axes)
>>>> > > >> > subsets of FLY: YAWZ, XY, YAWPTICH,ROLL)
>>>> > > >> > 3) GeoSpatial > GeoOrigin - freewrl still allows in v3.3, never deprecated
>>>> > > >> > in freewrl
>>>> > > >> > 4) The rest freewrl has not implemented
>>>> > > >> > /FREEWRL
>>>> > > >> > Does this table miss anything?
>>>> > > >> > /INVENTORY
>>>> > > >> >
>>>> > > >> >
>>>> > > >> > On Mon, Jan 27, 2020 at 11:14 AM Don Brutzman <brutzman at nps.edu> wrote:
>>>> > > >> >
>>>> > > >> >> Thanks for writing Doug.
>>>> > > >> >>
>>>> > > >> >> On 1/27/2020 6:01 AM, GPU Group wrote:
>>>> > > >> >> > A rule of web3d.org <http://web3d.org> is that changes to the spec
>>>> > > >> >> need a least 2 opensource implementations.
>>>> > > >> >>
>>>> > > >> >> * Web3D Standards Adoption Process
>>>> > > >> >>    https://www.web3d.org/standards/adoption-process
>>>> > > >> >>
>>>> > > >> >> 5.c. "Identify at least two independent and interoperable implementations
>>>> > > >> >> (at least one should be open source)"
>>>> > > >> >>
>>>> > > >> >> > Q. are there any proposed changes that do not yet have 2 opensource
>>>> > > >> >> implementations?
>>>> > > >> >>
>>>> > > >> >> Yes, plenty.  We have not taken a recent inventory of features yet, but
>>>> > > >> >> will be tracking that at
>>>> > > >> >>
>>>> > > >> >> * X3Dv4 Implementations
>>>> > > >> >>    https://www.web3d.org/x3dv4-implementations
>>>> > > >> >>
>>>> > > >> >> Our prominent open-source implementations for X3Dv3.3 include FreeWrl,
>>>> > > >> >> X_ITE, X3DOM, Castle Game Engine.  Soon Xj3D will be back on the table as
>>>> > > >> >> well.  There are also non-rendering X3Dv4 implementations for Java,
>>>> > > >> >> JavaScript, Python, conversions and validation.  Not sure about Titania but
>>>> > > >> >> presumably yes.  X3D-Editv4 is on the horizon. Interestingly everything on
>>>> > > >> >> this list is open source.
>>>> > > >> >>
>>>> > > >> >> Hoping that FreeWrl developers are keen to keep their record-setting X3D
>>>> > > >> >> support accomplishments continuing!  8)
>>>> > > >> >>
>>>> > > >> >> All feedback welcome, appreciate your many efforts.
>>>> > > >> >>
>>>> > > >> >> > Thanks,
>>>> > > >> >> > Doug Sanden
>>>> > > >> >> > -freewrl
>>>> > > >> >>
>>>> > > >> >> all the best, Don
>>>> > > >> >> --
>>>> > > >> >> Don Brutzman  Naval Postgraduate School, Code USW/Br
>>>> > > >> >> brutzman at nps.edu
>>>> > > >> >> Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA
>>>> > > >> >>  +1.831.656.2149
>>>> > > >> >> X3D graphics, virtual worlds, navy robotics
>>>> > > >> >> http://faculty.nps.edu/brutzman
>>>> > > >> >>
>>>> > > >> >
>>>> > > >> -------------- next part --------------
>>>> > > >> An HTML attachment was scrubbed...
>>>> > > >> URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20200127/53a57192/attachment-0001.html>
>>>> > > >>
>>>> > > >> ------------------------------
>>>> > > >>
>>>> > > >> Subject: Digest Footer
>>>> > > >>
>>>> > > >> _______________________________________________
>>>> > > >> x3d-public mailing list
>>>> > > >> x3d-public at web3d.org
>>>> > > >> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>>> > > >>
>>>> > > >>
>>>> > > >> ------------------------------
>>>> > > >>
>>>> > > >> End of x3d-public Digest, Vol 130, Issue 49
>>>> > > >> *******************************************
>>>> > > >
>>>> > > > _______________________________________________
>>>> > > > x3d-public mailing list
>>>> > > > x3d-public at web3d.org
>>>> > > > http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>>> >
>>>> >
>>>> >
>>>> > --
>>>> > Andreas Plesch
>>>> > Waltham, MA 02453
>>>
>>> _______________________________________________
>>> x3d-public mailing list
>>> x3d-public at web3d.org
>>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org



More information about the x3d-public mailing list