Re: Implementation

Stephan Diehl (diehl@cs.uni-sb.de)
Tue, 03 Jun 1997 09:58:35 +0200

Michael St. Hippolyte wrote:
>
> Stephan wrote:
> >It seems that the only way to get an implemention
> >of our extensions as soon as possible is to use
> >LiquidReality (LR).
> ...
>
> There is another possibility. You could, in principle, create an OO VRML
> filter which could handle the OO extensions. This filter would interpret
> the VRML data stream and then pass it on (possibly modified) to a standard
> VRML browser. It would maintain its own copy of the scene graph for
> answering queries concerning field names. The EventInObserver is more
> complicated, but I believe it could be handled by adding routes and nodes
> to the scene to intercept all events and pass them to the filter, which
> would then call the appropriate EventInObserver. It would be a lot of work
> obviously, and not very efficient (with a lot of duplication between the
> filter and the browser), but would have the advantage of working with
> standard VRML browsers.

Filters, hmmm? A good idea, but as you mention, it doesn't
solve the problem of having a function called every time an
eventIn occurs (a field or event is set). The filter approach
would be useful, if we would do some sort of runtime type
checking.

One could try to use ROUTEs. For every user defined prototype
one routes every eventIn to a Script node inside the PROTO
or a global one. But what about standard nodes. Could we
define

PROTO Transform [ ... ] { Transform { } ROUTE ...}

or should we define

PROTO NewTransform [ ... ] { Transform { } ROUTE ... }

and replace all occurrences of Transform in
"the rest of the world" by NewTransform. If this
works we could really implement the extensions
on top of VRML 2.0 using Java Scripting or
JavaScript Scripting only.

Cheers
-- Stephan

---------------------------------------------------------------
Dr. Stephan Diehl Tel.: ++49-681/302-3915
EMAIL: diehl@cs.uni-sb.de WWW: http://www.rw.cdl.uni-saarland.de/private/diehl
---------------------------------------------------------------
There is no place like $HOME
---------------------------------------------------------------