WWWlogical idea

Al Globus (globus@nas.nasa.gov)
Tue, 6 Dec 1994 16:30:52 -0800

This is work in progress and much of it is pretty fuzzy.
Comments are welcome.

* html does not specify what a document looks like.
html specifies the structure of a document.
The browser decides the fonts, colors, line breaks,
inter-paragraph spacing etc.
* images specify appearance exactly -- although
hardware issues such as pixel size, available colors,
etc. will make the picture look a bit different on different

This difference between html and images (or postscript) is
fundamental and is one of the reasons I like html so much.

Now consider VRML. VRML specifies the exact appearance of
a 3D scene (within hardware limitations). This is much like
an image -- not much like html.

Question: can VRML be modified to specify the sturcture
of a world? I.e., can we express the
logical groupings of information in a 3D environment without
giving x,y,z, color, normal, etc. type information and leave
these details to the browser?

I think its possible. I have a proposal for a Inventor node
that does this. Specifically,

WWWlogical {
hints "" # a SFstring

WWWlogical is a subclass of SoGroup so it can have children.
Semantics: the child nodes are
logically grouped and the browser should display them in a
appropriate manner.

The hints string is a list of attribute/value pairs that
gives the browser ***suggestions***. Some examples:
topology R3 # a three dimensional world - probably pretty common
topology S3 viewpoint inside # a world inside a sphere
standard-type room # a standard kind of thing corresponding to a room
Obviously, coming up with a good set of hint attributes is
a challenge. I haven't done this yet.

The browser is not required to follow the suggestions. Also,
the browser may allow the user to resize things and move them
around, much as a window manager does. I could go on for quite
a while about stange and wonderful things a browser could do,
but that must wait.

Here's an example traditional room (like a bedroom or office):

WWWlogical {
hints "standard-type room"
Cube {} # put a default sized cube in the room somewhere

# now do the walls, floor and ceiling
WWWlogical {
hints "standard-type wall"
.... stuff on the wall, such as
WWWlogical { # a picture on the wall
hints "topology R2 place upper-right"
WWWAnchor {
name "http://www.nas.nasa.gov/..../foo.gif"
WWWlogical {
hints "standard-type wall"
WWWAnchor {
name "http://...../foobar.wrl"
} # browser could make this look like a door, black hole, ...
.... more stuff on the wall
WWWlogical {
hints "standard-type wall"
.... stuff on the wall
WWWlogical {
hints "standard-type wall"
.... stuff on the wall
WWWlogical {
hints "standard-type ceiling"
.... stuff on the ceiling
Material { emissiveColor 0.1 0.3 0.3 } # color of the floor
# color of the walls and
# ceiling was left to the browser
WWWlogical {
hints "standard-type floor"
.... stuff on the floor
WWWlogical { # a globe in the middle of the room
hints "topology S3 viewpoint outside place middle"
..... stuff on the surface of the sphere

The flexible hints field is used rather than a set of node fields
because I suspect that hints will evolve rather quickly, and remember
that the browser does not need to follow the hints. For example,
the user may be claustrophobic and want the room above layed out as
six panels in a plane with the interior stuff (the sphere) hanging
in front of the floor.

Why bother with WWWlogical?
* For authors, it allows adding things
to a world without constantly making sure things fit properly.
* For users it provides (with the browser's help) more control
over the layout of their information space.
* For the network, it reduces the number of bytes necessary to
specify a world since most graphic detail is left to the browser.

Serious problems:
* I think building a good browser will be hard
* the hints field could turn into a tangled mess

This may fall flat on its face when I try to do some realistic
worlds and a browser, but I thought you might be interested enough to
see it in half baked form.

Al Globus (CSC) and Creon Levit
NASA Ames Research Center