1. Description
We developed a local file system navigator where
directories and files in the
file-system are represented by various objects in the virtual library.
The Java3D scene graph hierarchy is in fact very similar to the
hierarchy of a file
system. They both have a tree structure, with leaf nodes representing
files in a
file system and geometry nodes in a scene graph, while intermediate
nodes in the
tree are transformations in a scene graph and directories in a file
system.
In the virtual world we need to represent both the
files and the directories with
visible objects and allow the user to navigate the file system in an
intuitive way.
For this, we chose a virtual library model, with virtual rooms and
virtual books. Each room in the virtual environment represents a
directory in the file system. In
the file system, directories can contain other subdirectories and
files. In the
virtual world, subdirectories are represented by doors leading to other
rooms; books
inside the room represent files in the current directory.
Each room has a round shape. Doors are labeled with
the name of the subdirectory
they lead to. Books are also labeled with the name of the corresponding
file.
The user can navigate in the virtual environment using the 5DT Data
glove. Several
gestures are recognized and interpreted based on the context. For
example,
navigation is performed using 5 different finger configurations for
going forward,
backwards, turning left or right and stopping. There is an additional
gesture
interpreted as an attempt to grab one of the books in the room.
Grabbing a book will
show information about the corresponding file, such as a small sample
text from text
files and the image in image files (.jpg).
Interaction with the objects in the room is
performed through Java3D behaviors. They
are responsible for opening the doors in the room when the user
approaches them, or
activating the books. The active book is the book to which the grab
action applies.
While developing this project we used many of the features of Java3D,
such as:
virtual camera control, behaviors, complex scene graphs, interaction
using
input devices (data
glove,
keyboard and mouse), texture mapping, file system interfaces, sound
control and many
others.
2. How to navigate
To
explore the virtual world, we use the 5DT Data Glove. Each of five
gestures are
interpreted as a different command to the system (see images below).
Go
Forward Go
Back Grab the
book Turn
Right
Turn
Left
Stop
3. Screen Shots
figure1:
Two rooms and the books inside the room
figure2:
Books inside the room
figure3: Open the door and the room is created
figure4: New room which has the doors(sub
folders) and the books(files)
figure5: The door
figure6: The selected book
figure7: Non text file is selected!
figure8: Text file is selected!!
figure9: Image file is selected!!
4. Implementation Details
Gestures on the
5DT Data Glove interface are recognized by using five
combinations of different thresholds for the five finger angles.
Since it is not
possible to construct all the rooms corresponding to the
entire file system tree at once and still have a round shape for each
room, the rooms are created dynamically as the user navigates through
the
virtual world. As a consequence, at any point in time, at most two
rooms
exist: the current room where the user is located, and the room that
the
user is about to enter. Luckily, the doors leading to the other
subdirectories are closed so the illusion of a complete universe is
maintained (unless the user decides to pass through a wall to explore
"the
other side"). A disadvantage of this approach is reduced system
response
time when the user is about to enter a room with many subdirectories or
files because many objects (doors and books) need to be created on the
fly.
Doors and books
are activated by individual behaviors, activated by
proximity sensors. The spacing between books and the size of the books
had
to be kept large to allow easy access to a specific book.
Collision
detection for the purpose of preventing the user from passing
through walls is not implemented.