The set of features selected looks like a good set to get going on.
I have some reservations about Inventor, but hope these can be managed
by our adaptation/selection for VRML 0.1. The following message outlines
an approach for a platform/graphics engine independent module for parsing
VRML and will make it a straightforward step to add scripting support.
I believe that although the display engine works best with tree like
data structures for scene description (PEX works this way); it is
much better to describe scenes for interchange purposes in an object
oriented manner with simple inheritance of properties. You should be
able to use lexical scope to overide properties like surface material
and color. As far as I can see, Inventor seems a bit weak on this point.
Another point, which is critical to linking VRML with scripts, is the
ability to have an extendable data model for objects. The goal here is
to allow for high level descriptions of objects to be defined in VRML.
I want to be able to define an object, say "house" and to give it
some parameters, say "4 bedrooms" and "double garage", that are not
a priori part of the language. Declarative programming languages like
Prolog and Lisp provide direct support for this kind of thing and VRML
needs to do the same. The semantics are then defined by linking the
VRML to scripts that recognise these tags. The common tags can be
considered formally in the same way; its just that the "scripts" for
these are considered to be built-in to every VRML 0.1 viewer.
The way forward then, is a simple object-oriented language that allows
authors to describe objects a) in terms of standard geometric primitives
and b) as arbitary collections of tagged data. This is where the "markup"
bit of VRML comes in. The core grammar for VRML is really very simple.
"Document type definitions" are then used to define how this core syntax
is restricted for particular classes of objects, i.e. what tags and what
types of data are expected in each context. This approach allows for
an open-ended description of novel object classes, while allowing such
descriptions to be validated against formal DTDs for those classes (We
may want to use a different term for these grammar fragments).
The starting point is defining the core grammar, and the DTDs for the
object classes and primitives that are to be part of every VRML 0.1
viewer. The parser for VRML is a module that scans the source text and
generates a list-based polymophic data structure corresponding to the
objects and their elements. The viewer binds each object to a procedure
and passes that procedure a pointer to the object's data.
Following this approach will allow us to distribute a platform independent
parser for VRML which can be linked to different graphics engines such as
PEX, OpenGL and the new packages for PCs and Macs.
-- Best wishes,Dave Raggett
----------------------------------------------------------------------------- Hewlett Packard Laboratories email: dsr@hplb.hpl.hp.com Filton Road tel: +44 272 228046 Stoke Gifford fax: +44 272 228003 Bristol BS12 6QZ United Kingdom