« 2004
having
raphics
d.
all the
| Studio
'eFront,
btained
order to
DSAA
International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, Vol XXXV, Part B5. Istanbul 2004
When a new object is inserted into the scene, it gets a unique and
distinguished name. This name is very important, since it is used
from the internal scripter to identify the object. It is the parameter
that is used to query the database for additional information about
the object and it is displayed in objects properties Inspector.
3.2 Viewing and changing objects properties
It is possible, in real time, to view and change almost all the
properties of an object (or model). This is done using the Objects
Inspector panel in the Control Room, where all objects and their
properties are displayed. For example, the position, rotation
vectors, scale, colour or visibility of any object can be change.
The number of the properties depends of the object's type. The
only thing that cannot be changed interactively is the geometry of
the object, although this can be done using scripts.
3.3 Moving and rotating
Moving and rotating inside scene is achieved using the PC's
keyboard and mouse or joystick. Moving forward and backward,
turning and strafing left and right, going up and down (using
mouse wheel) has already implemented, while different motion
behaviours (e.g. head up/down) are under construction. Motion
and rotation speeds are not fixed and can be changed in real-time.
Also, motion can be done using two different methods, walk or
flight.
The whole scene or a specific object that participates in scene can
interactively be rotated in order to be viewed from several
perspectives. A later restoration of the scene to its original
position is possible. Rotation is achieved using the mouse.
3.4 Further interaction
Except for the rotation and properties changing, further
interaction between viewer and scene can be achieved, with or
without scripting. For example, it is possible to select an object,
to query a database about the object and display an image, play a
video file or a sound that is linked with the object. Also, a script
can be run automatically in order to automatically change any
properties of the object or even to replace this object with
another. The action that will be selected is left to whom will make
the presentation.
3.5 Database connectivity
In order to connect OpenView with a database, the database must
be "published" to ODBC. OpenView "talks? to database using
SQL queries. This way, it is irrelevant if the database is in Oracle,
Access or in any other format.
OpenView uses a smart interface that allows the viewer to select
the proper table and a connection field, from all available
databases, tables and fields that are published to ODBC. Also, it
allows the viewer to select only the wanted fields from the
selected table. This connectivity can be done at any time;
additionally, it can switch to another database or table during
presentation. For convenience, all database settings can be stored
into files and can be loaded when needed.
Every time database info is needed about an object, OpenView
creates an SQL query and passes the name of the selected object
as a parameter to the connection field in order to find the specific
record from the selected table. This task is done in the
background, so it is invisible to viewer. Then the results are
displayed to both left and right windows in order to have
stereoscopic view of the info.
3.6 Scripting support
Seripting support is OpenView's most powerful component and is
based on “Script Studio", from Tmssoftware. The script language
that currently supported is *object pascal * while Visual Basic is
in the way.
Jsing scripts, the viewer is able to access every scene component,
to change any of its properties, to move or rotate it etc. Actually,
it is left on the fantasy to whom prepares the presentation what
the script will do.
For example, using the script below, a new object is entered to
the scene
Axis:=TmyGLAxis.Create(ControlForm); //create the object
Axis. Name:—'Axis1'; //Name for scripter and Inspector
ObjectsCube.AddChild(Axis); //put axis to ObjectsCube
Axis.valid: true; // Enable axis
Axis.RememberMe; // Set axis visible to scripter
Axis. Position.SetPoint(3,3,3);
while the following one (can be as part of the above script or
standalone) rotates and moves the already loaded object
For i:=0 to 5 do begin
Axis! Position. SetPoint(i, ii);
AxisCubel.pitchAngle: —i*3;
sleep(100);
processMessages;
end;
Actually, there are very few things that cannot be done using
scripting.
3.7 Producing Stereo Pairs
Stereo pair production is done in a background process, forced to
produce pairs as fast as the combination of the CPU and the
graphics card allows. OpenView uses three cameras when
running. The first (central camera) displays its contents on the
Control Room. The other two (called “left eye” and “right eye”)
are responsible to create the stereo pairs of images. All three
cameras together are called the “Head”. Rotation of the “head”
rotates all three cameras at once, The position of the two cameras
is not fixed but floated. Even the two cameras lie on the same line
that passes from the center of the central camera, their distance
can be change. This is done because, most of the times, different
scenes need different "eye distances".
There are a couple ways of setting the virtual cameras and
rendering the stereo pairs: toe-in and off-axis projections (Burke,
1999). The toe-in projection (Fig. 2b) is easier to be implemented
(just set the two virtual cameras focus at the same point) but has