The VRML2 (VRML97) implementation in DIVE 3.3.0

Technical Memo

Mårten Stenius <mst@sics.se>
Swedish Institute of Computer Science
Stockholm, November 1998

1. Overview

The support for VRML2 (VRML97) [1] in DIVE 3.3.0 includes geometrical descriptions (except ElevationGrid, PointSet, and Extrusion), and a partial experimental implementation of ROUTEs and some sensors.

The performance and timing of animations, interpolators, timers, etc. in the current implementation is not perfect. This is because many optimisations hinted and proposed when the VRML2 standard was designed are very hard to do in a fully distributed setting. VRML2 is conceptually designed as a single-user animation modelling language that puts very specific demands and limitations on the implementation of a viewer. This is hard to combine with the general and open DIVE implementation.

VRML2 is being "simulated" in DIVE, that is, an attempt is made to build a DIVE structure that, using the general mechanisms of DIVE, simulate the VRML2 behaviour. This means for instance that we use the DIVE event and callback model [2] to mimick things like routes and fields.

This document lists some of the major limitations of the current implementation. Note that this list itself may not be complete, since the implementation is experimental.

2. Level of support of different VRML 2 features

Geometry and appearance
Most fundamental features supported, see each node type below.

 
DEF / USE
Supported, but with replication of hierarchy at each USE.

 
PROTO
Unsupported

 
EXTERNPROTO
Unsupported

 
Binding of bindable nodes (Backgrounds, etc)
Unsupported

 
ROUTE / Events
Partial support, see separate section below.
Performance may be limited, especially in networked settings.

 
Sensors
Partial support, see each sensor node type below.

 
Interpolators
Partial support, see each interpolator node type below.
Performance may be limited, especially in networked settings.

 
Java Scripting
Unsupported

3. Support for specific node types

If no comment is given for a node type below, most of the fundamental features of that node type should be supported. However the user should verify the support in each situation explicitly, since the implementation is experimental.
 
Node Type Comment
Anchor 
Appearance 
AudioClip 
Background 
Billboard
Box
Collision 
Color 
ColorInterpolator 
Cone
Coordinate 
CoordinateInterpolator
Cylinder
CylinderSensor 
DirectionalLight 
ElevationGrid 
Extrusion 
Fog 
FontStyle 
Group
ImageTexture 
IndexedFaceSet
IndexedLineSet
Inline 
LOD
Material
MovieTexture 
NavigationInfo 
Normal 
NormalInterpolator
OrientationInterpolator
PixelTexture 
PlaneSensor 
PointLight 
PointSet 
PositionInterpolator
ProximitySensor 
ScalarInterpolator
Script 
Shape
Sound 
Sphere
SphereSensor 
SpotLight 
Switch
Text 
TextureCoordinate 
TextureTransform 
TimeSensor 
TouchSensor 
Transform 
Viewpoint 
VisibilitySensor 
WorldInfo 
URL ignored, but children are built
textureTransform field ignored
ignored
only first background is built, angles ignored, last skyColor used uniformly
 

No collision detection, but children are built
ignored
ignored

ignored
performance limited with large coordinate sets

ignored
on field ignored
ignored
ignored
ignored
ignored

repeatS and repeatT ignored (no repetition)
 

only first URL of each Inline actually inlined
 

ignored
ignored
ignored
ignored
center ignored, origin always used
ignored
ignored
on, radius, and attenuation fields ignored
ignored

ignored
ignored
ignored

ignored

ignored
on field ignored

font support very limited (DIVE wireframe font only)
ignored
ignored
resolution is limited, timing not perfect
hit*changed and isOver unsupported
center and scaleOrientation fields ignored
fieldOfView and jump fields ignored. No jump to start
ignored
title ignored, info stored as a DIVE string property

4. ROUTEs and events

In general, ROUTEs and node event fields should be considered as not supported, except for a subset which has experimental support. This experimental support includes:

References

[1] Rick Carey and Gavin Bell, "The Annotated VRML 2.0 Reference Manual", Addison-Wesley Developers Press, 1997

[2] Dive 3.0 callback interface, SICS, 1995