Re: LANG: Object Sharing

Ian McFarland (
Thu, 16 Jun 1994 11:50:31 -0700 (PDT)

> On Tue, 14 Jun 1994, Mark Waks wrote:
> > Let me toss out a strawman model to play with. Fairly early in the
> > project, we should come up with a collection of Major Classes, the
> > object classes that really form the fundement of the cyberworld. This
> > would include things like rooms, streets, viewports, doors, stuff
> > like that. We would define the critical slots for those classes
> > (color, size, and so on), and very primitive primary subclasses,
> > a la the Athena Widgets for X. These primitive classes would get
> > distributed widely, and would form a sort of standard core.
> Hmm. You're on to something, but... hmm. "Markup Language" denotes
> some sort of high-level structural description of the scene is preferred
> over precise details - exactly the reaons why writing an HTML file
> by hand is a couple orders of magnitude easier than writing a Postscript
> file by hand (though I know sick people who like to do that :) In
> HTML, you don't say "Helvetica 11pt, adjusted 2 points to the right of
> the margin and 50 points below the top margin..." you say "<H2>".
> Now, it's possible that laying out a document is orders of magnitude
> easier than laying out a scene, but it seems like being able to
> specify "a room with two chairs and a table" is preferable to a list
> of 400 polygons. Hmm. This is a Tough Problem. It wasn't too hard
> to constrain document layout types to a dozen often-used tags and 2-dozen
> moderately-used tags and 100 rarely-used tags, but maybe this is just
> something you can't do in an almost purely visual environment like VRML
> would describe. Maybe it's because there's no baseline semantics to
> what people will want to represent with VRML, in the same way that
> headings and emphasized text are semantic constructs of an HTML file.

Hmm. Seems to me like if we start with some base classes ($ROOM, for
example, which has the basic properties of a Room: 8 corners, default
surfaces...) we can rely on inheritance and overloading to let people
design things simply. (Like <ROOM>, which doesn't sound too tough.)

Users could do things like <ROOM:<CHAIR><CHAIR>> for a room containing
two generic chairs, or <ROOM/white:<CARPET/beige><CHAIR/grey><CHAIR>>
for a white room with blue carpet, a grey chair, and a default-color chair.

This leaves some questions of course about locations of objects, but there
could just as well be default locations, for example <CARPET> would always
occupy the floor plane of any child of <ROOM>.

I think the point about VRML being a mark-up language is important. This
needs to be easy to use for everyone if there is to be much use of it.
(Viz. HTML, and its explosive growth.)

MOO is a good example of how inheritance can make the construction of
complex VR objects a relatively simple task, and one that any user can
learn without too much trouble. (MOO users get their 'builder bit' and
can create complex objects, before they are even _allowed_ to program
on most if not all MOOs.)