The OpenWorlds AppKitTM Developer Libraries are our innovative C++ libraries
that bring 3D graphics, animation, sound, and Web graphics support including
VRML 2.0/97 and X3D support to your new or legacy application. Whether
or not you need Web-standards support, OpenWorlds can provide your graphics
support. OpenWorlds supports any rendering layer, including OpenGL,
Optimizer, Performer, and others Use OpenWorlds as your general
3D scene graph engine, and forget about worrying which rendering layer
to choose. Because switching rendering layers is as easy as switching
our node libraries, you never will have to migrate your application to
support a new rendering layer!
If you have an application which you want to add 3D graphics and animation
to, OpenWorlds is for you. Unlike other graphics libraries, OpenWorlds
is designed to fit into any application. You do not have to re-write
your application on top of OpenWorlds; OpenWorlds integrates into your
existing application! You can either develop your own custom 3D application,
bring Web 3D graphics support to your existing application, create your
own VRML 2.0 browser as a Netscape plug-in.
The philosophy behind the design of OpenWorlds is this: an open library
accessible by all, open to platforms, open to scripting languages, open
to change. OpenWorlds is essentially a scene-graph execution engine which
supports industry standard formats, whose purpose is to traverse a scene graph executing
nodes and passing events. What the nodes in the graph are doesn't matter.
They can be script nodes such as Javascript. They can be C++ built-in nodes.
They can be nodes based on a proprietary rendering
architecture written in C. They can use a high level rendering library
like Performer, or use primitives inherent in a CAD system's
API. However you want to implement
built-in nodes or script nodes is up to you. If you want to mix Javascript and
C++ built-in nodes, you can do that. You can even create nodes in the language
of your choice!
And node implementation is not the only open area. OpenWorlds is designed
to be modular, with interface classes for every area of functionality.
In addition to the built-in and scripting node interfaces, there are database,
GUI, parser, language, and other interfaces as well. OpenWorlds provides
sample implementations and template code, but all of these features are
customizable. Whether you have existing modules in your application which
you prefer to use, or simply want to extend the sample code, OpenWorlds
is amenable.
OpenWorlds handles nodes, both built-in and script nodes. It supports
prototyping, inheritance, routes and event-passing. It supports all field
types, the event cascade model, and the Javascript. It supports
the VRML and X3D specifications, yet provides the ability to extend the specification if desired.