A critical factor in a virtual reality application is the interface available
between the computer and the human user. As applications of virtual reality
delve into new areas, the facility by which its users must interact
with their virtual environment emphasizes the importance, if not necessity
of new
input devices for this purpose. A human accustomed to manipulating
the world around him/her will hardly be satisfied with the use of a 3-buttoned
mouse to navigate in and interact with a virtual world. Although not
used on a widespread basis, input devices such as CyberGloveTM
of Virtual Technologies Inc. and MiniBirdTM
of Ascension Technologies
provide the opportunity for a richer and more realistic experience of a
virtual environment.
Java3D Interfaces
The software interface to the aforementioned devices are both in the C++
language but in order to use them in applications employing Java as their
core
technology and Java3D as the mechanism of rendering, the gap must be
bridged between the C++ device interface and Java application. In order
to use
code written in C++ from a Java application, the Java
Native Interface (JNI) is utilized. The following are screenshots of
the end product. A video clip of
device in work can be downloaded from here.
Screenshots of CyberGloveTM and MiniBirdTM connected
to a Java application
Details
The Java application used to test the Java3D interfaces is COllaborative
System based on MPEG4 Objects and Streams (COSMOS) developed at the
MCRLab. This application provides a framework for building collaborative
virtual environments using the MPEG4 standard, however only its capability
to load VRML files and display them in Java3D was exercised for this
particular task. The application ran on a dual processor PentiumII 500
computer
with 3DLab's Oxygen GVX210 graphics card.
The 3D model of the hand used to test the CyberGloveTM data
was one developed by Christian
Babski as a part of a virtual humanoid. The 3D hand
was slightly modifed in order to be loaded into Java3D and easily manipulated.
The modified 3D hand model in VRML can be downloaded here.
The
code for this interface may be obtained by contacting the developer.
mojtaba@mcrlab.uottawa.ca
Version 2.0 of the miniBirdTM Interface
As can be seen from the screenshots above and the video clip, having a
hand floating in 3D space without it being connected to a body is an eerie
experience. There were also some problems with the rotational component
of the miniBirdTM device as they were not very accurate. The
second
version of the Java interface hence strived to remedy these issues
by fine tuning the interface to produce more accurate results with regards
to the
rotational component as well as using inverse kinematics to derive
the elbow and shoulder joint rotations needed to connect the hand to a
body. The
details of the inverse kinematics calculations can be found here,
while the screenshots below illustrate the final results.
Summary
The C++ software provided by the manufacturers of the input devices capture
the sensory data and after processing, supply individual joint rotation
information (in case of the glove) or position and orientation (in
the case of the tracker). These values are retrieved by a Java interface
and used by
an application (COSMOS) in order to appropriately change the 3D geometry
of a hand and its position and orientation.
Future Work
Developing the Java interfaces for these input devices is only a step towards
their utilization. There needs to be an application that uses these devices
for a purpose. It is hoped to use the glove and the tracker in conjuction
with the COSMOS application in order to manipulate object position and
orientation as opposed to using the mouse, as it is currently. Furthermore,
a similar interface could be developed for the CyberGraspTM
device in order to
provide force feedback to the user in a more realistic virtual environments.