LANG: Standard Semantic Characteristics (was Re: LANG: Re: scalability)

Brian Behlendorf (
Thu, 16 Jun 1994 12:18:28 +0000 (GMT)

On Thu, 16 Jun 1994, Mark Waks wrote:
> Mike writes:
> >What about modifications to other people's objects ?? I'd like to see the
> >reference to be parametized as well, I think, so I could reuse parametrically.
> >So that the object reference would look (something) like
> >
> >#DEFINE Refrigerator AS vrml:\\\fidge.vrml
> > # This is my special pink spotted fridge
> >
> >OBJECT Refrigerator-<AUTHOR> at: (123,435,687) sized: (232,234,33) color:
> >(343,455,677)
> > #You can reuse the local one if you like, but its gotta be pink, sized
> >and postioned like this
> I concur, but I think the best model is an assumption that *all*
> characteristics of an object are simply OO "slots" that can be
> over-ridden in an instantiation. Thus, one "slot" in the Refrigerator
> object would be "color". It would have a default, but if the
> instantiation gave a color, that would be used. I'm not hip enough
> on modern rendering technology to be sure how far you can push this,
> but I think it's an *excellent* paradigm to follow, and will
> encourage both standardization and creativity (because it will
> encourage people to use standard objects, and mess with them)...

Can we come up with a short list of standard "slots", OO characteristics,
and that would be the semantic tagging we want? They should be
characteristics of almost any object, and the idea is that they would be
passed along on a higher level than the polygon-list, so that the
browser could modify cached objects or grab the "correct one", with
the difference being as minimal as possible. We want this list to be
as short as possible, so that the benefit of getting the cached item
isn't lost by overmodifying it. How about this:

Standard characteristics of all objects:

1. color
2. orientation (TOP and FORWARD vectors see below)
3. bounding box (8 points, simple 3-space for now?)
4. name
5. the URL for the actual polygon list.

Orientation - this is difficult. You obviously want the door of the
refrigerator to face away from the wall. What is the standard axis for
objects? If a refrigerator has a "front" we all default to, can we define a
"front" of a chair, or a "front" of a fish? Upon thinking about this,
we can define orientation as two vectors:

TOP: Defines the View Up Vector for the object's coordinates - in general
terms, the vector opposite the object's normal sense of gravity.

FORWARD: Defines the "vector of interest", which could be totally up to
the discretion of the object creator but could be generally agreed to
be something like:

the side of the refrigerator with the door
the direction running from handle to spout in the teapot
from the tail to the head of a fish
from the engine to the tip of a rocket

The TOP vectors must align exactly, but the FORWARD vector of the object
simply has to lie in the same plane as the specified FORWARD vector and TOP
vectors, and that the two FORWARD vectors both lie on the same half-plane
as bisected by the top vectors.

These vectors don't have to be orthogonal, but by making them equal the
author implies that there's no preferred orientation around the TOP
vector. I.e., if I'm representing a rocket in space and make TOP and
FORWARD equal, then my cached rocket object could be placed arbitrarily
about the TOP axis.