Next: Time
Up: Object inspection
Previous: Navigation in the inspection manager

Viewers

One further form of inspection is provided by Oorange which deserves mention. Objects which consist of 2-D (3-D) data can be inspected with a 2-D (3-D) viewer provided with Oorange. These viewers share a common protocol, OoToolProtocol, which describes an tool interface for handling mouse down/drag/up events.

The 2-D viewer [12] supports a wide variety of operations on 2-D images, including arbitrary resizing and translation, and reading and writing a wide variety of file formats. The underlying object is the general OoDataGrid class (see Section 4.1).

The 3-D viewer [12] is supported by a large class library in major features similar on the Inventor class library originally from SGI. There is a device-dependent core which currently supports OpenGL (immediate and offscreen modes) and mentalray (a commercial ray tracer). Point sets can be either 3 or 4 dimensional, of float or double type. There are classes for cameras, lights, appearances, materials, fog, textures, drawables, bounds, pick actions, and transforms. Every viewer must contain a scene, which is the root of a scene graph describing the scene. Scenes contain a drawable, a camera, a device, and several stacks. There are a variety of shape related classes. The base class is shape group, which has a list of children. Shape kits have additionally a transform, an appearance, a material, a texture, and a texture transform. Shape instances have a list of transforms. Finally, there are geometric types including indexed face sets, quadrilateral meshes, indexed line sets, triangulations, and cube/cone/sphere/tori classes.

Interaction in the 3-D viewer is provided through a variety of standard tools, which can be used to select a particular shape and rotate/translate/scale it; or to move the camera. There is a wild card tool which distributes the current pick information to the scene graph. A user can create a customized tool at a node simply by adding mouseDown, mouseDrag, and/or mouseUp procedures to the script (analogous to the nodeUpdate method). For example, in the node shown in Figure 1, a mouseDrag procedure allows the user to drag the curve by its center around on the surface. More sophisticated uses are easy to imagine and implement.


Copyright © 1997 Sonderforschungsbereich 288, Differential Geometry and Quantum Physics, TU-Berlin