A primer to the vishnu tk interface
Emmanuel Frécon-
emmanuel@sics.se
Olof Hagsand - olof@sics.se
Vishnu is a browser that gives access to multi-user 3D Dive and VRML
worlds. The browser is designed to be easy to use. Further information
is available on a world-wide web page at http://www.sics.se/dive,
or by the Dive contacts
(mail: dive-help@sics.se). You can
also follow the tutorial.
1. The vishnu window interface
The vishnu window consists of three parts: a header, a viewport and
a statusbar. The header consists of a set of menubuttons with pull-down
menus and a possible button bar with shortcuts to
some usual operations. The viewport displays a 3D view as seen from the
user. The status bar located at the bottom of
the window displays "interesting" information, such as the current
world name.
You can "tear off" menus by pressing the dotted line at the
top of each pull-down menu.
1.1 Fundamental concepts - Glossary
- Actor - The virtual user, vishnu is bound to one actor.
- World - A space containing objects where actors reside.
- Object - Entities with graphical representations.
- Avatar - The virtual representation of an actor consisting of
a set of objects.
- Head - Top part of avatar that can be independently rotated.
- Eye - The object of the avatar from where the current scene
is rendered.
- Navigate - The act of moving the actor's avatar in the world.
- Marked object - The actor's currently selected object (with
shift-select or double-click).
- Graspable - Only graspable objects may be marked or moved.
2. Mouse interaction
Vishnu interaction is based on mouse interaction and to some extent
keyboard interaction. The four main operations are "activate",
"mark", "move" and "rotate". In vishnu, objects
are "activated" by pressing the left mouse button. Objects are
"marked" by pressing the left mouse button while pressing the
shift button or double-clicking with the left mouse button. "Move"
is performed by the middle mouse button, while "rotate" by the
right mouse button.
2.1 Left mouse button: "activate" and "mark"
When the left mouse button is pressed, objects are "activated".
One example of an activated object is a vehicle icon which moves a user
when it is activated.
If the shift button is pressed at the same time as the left mouse button,
objects are "marked". When an object is marked, it is "blinked".
Several operations may be performed on marked objects, such deletion, movements,
etc. (see the Objects menu). Only graspable objects may be marked. Marking
actually selects an object hierarchy, and it is possible to "traverse"
the hierarchy and thereby access sub-hierarchies and individual objects.
2.2 Middle mouse button : "move"
By pressing the middle mouse button and dragging, graspable objects
are moved around. If the shift button is pressed at the same time, (without
moving) the object is attached to the user. The object then moves along
with the user.
If the control button is simultaneously pressed, the object is moved
in the z-axis of the user (in/out of the screen)
2.3 Right mouse button : "rotate"
If an object is selected while pressing the right mouse button, the
object may be rotated by moving the mouse while keeping the mouse button
pressed.
If the control button is simultaneously pressed, the object is rotated
according to a different mode.
3. File menu
- Open URL: Open an URL and spawn a viewer for it, according to
its Mime type. If it is a VRML or DIVE file, it will be interpreted as
a loadable object and inserted in the current world. Other MIME types such
as HTML or pictures will be shown in desktop windows.
- Configure: The system may be reconfigured during runtime - an
alteranitve is to change the .dive_configure file and restart. Currently
defined configuration includes:
- Proxy Server - Define a proxyserver for a non-multicast client
to which it directs its output and receives its input.
- Name Server - Define a nameserver.
- Http Proxyr - Direct all http request to a HTTP proxy server.
- Bird Server - Define a birdserver.
- Tk Interface - Tk interface configuration.
- Talk - Tk talk interface configuration.
- Configure file - All default settings in the configure file
are shown in a window. The default settings can be changed and saved. Saving
is not recommended since all defaults settings will be copied to your local
configuration file.
- Audio: Enable spatialized ambient and conference audio communication
between participants. The Audio menu first contains checkbuttons:
- Audio in : Select audio in to be on or off.
- Audio out : Select audio out to be on or off.
- Then a spatialization of the 3D audio can be chosen:
- Mono spatialization
- Headphone spatialization
- Four channel spatialization
- Headphone: no attenuation
- Configure Audio will open a dialog box to refine the audio configuration
parameters.
- Video: Enable video communication between participating peers.
The video menu first contains checkbuttons:
- Video in : Select video in to be on or off.
- Video out : Select video out to be on or off.
- Then an image quality:
- Configure Video will open a dialog box to refine the video configuration
parameters.
- Screendump: Dump a rendering image (a snapshot) to file.
- Record Movie: Record a rendering movie and save it as a sequence
of image files. This operation consumes a fair amount of disk space!
- Empty Tcl Cache: Empty the cache for tcl script.
- Notification History: Open a window with an history of
all the notifications that were shown in the status bar since the beginning
of the session.
- Exit: Exit vishnu. You can also type ESC
in the vishnu viewport.
4. Render menu
The Render Menu contains operations to control the current setting of
the 3D graphic rendering. The stationary flags sets the rendering when
the actor is not moving, while the Motion flags sets the rendering when
the actor moves.
- Render Off: If set, nothing is rendered.
- Stationary rendering flags:
- filled polys: if set, polygons are rendered with filled surfaces,
otherwise as wireframes.
- texture: if set, textures are rendered.
- smooth shading: If set, polygons and objects that are marked
for smoothing will be smooth shaded using Gouraud shading.
- transparency: If set, polygons and objects that are marked
transparent will be rendered in the correct order.
- lod: if set, all level-of-details (lods) are rendered. If not,
only the simplest lod is shown.
- Motion rendering flags:
- wireframe: if set, polygons are rendered as wireframes when
moving.
- no texture: if set, textures are not rendered when moving.
- flat shading: If set, all polygons and object are rendered
with flat shading.
- simplest lod: if set, only the simplest lod is shown when moving.
5. World menu
The World menu contains operations on the world that the actor associated
with vishnu (self) is in.
- Load: Open new world by giving a universal resource locator
(URL) or local file name. The actor leaves the current world and is transferred
into the new.
- Save: Save complete world to local file.
- Export: Export the complete current world to another file format.
Currently, VRML 1.0
and AC3D
file formats are supported.
- World->AC3D: Send the content of the current to a running
AC3D, in which edition will be possible. Communication between Dive and
AC3D is only possible on secure
hosts.
- Info: Presents name and information of current world.
- Resident: If set, world is always left resident in memory even
when the actor leaves it. In practice, this means that the world will continue
living even if not currently rendered. It is then possible to come back
to a resident world to see how it has evolved.
- Reconnect: Disconnect and reconnect from current world. If the
user is alone in the world, the world will be reread from file.
6. Object menu
In the objects menu, operations with objects can be performed. Apart
from loading and saving objects, operations can be performed on "marked"
objects (with "shift select").
- Load in Front: Load an object by giving an URL or file name.
The loaded object is inserted into the current world "in front of"
the actor.
- Load in Place: Load an object by giving an URL or file name.
The loaded object is inserted into the current world at the position defined
in the file (or URL).
- Save: Save the marked object to local file.
- Export: Export the marked object to another file format. Currently,
VRML 1.0 and AC3D
file formats are supported.
- User Subjective View: Modify local subjective view of the
marked object.
- Group Subjective View: Modify group subjective view of
the marked object. All users which have declared being member of the same
group will share the same subjective view. This option requires to run
the subjective login before.
- Info: Display information on marked object.
- Source: Display source on marked object.
- Edit: Display source on marked object. The source can sometimes
be modified and saved or replaced with the original object. Note however
that the use of all constants declared in dive.vh
is impossible.
- Material Edit: Start an interactive material editor on
the marked object.
- Dive/Tcl Editor: Start an interactive Dive/Tcl editor bound
to the selected object. Callbacks and timers can be registered "on
the fly". See the Dive/Tcl behaviour document: http://www.sics.se/dive/manual/tcl.html.
- Dive/Tcl Shell: Start a simple Dive/Tcl shell.
- Marked->AC3D: Send the current marked object for edition
to a running AC3D. Communication between Dive and AC3D is only possible
on secure hosts.
- AC3D->marked: Replace the current marked object by the
object which has been edited in AC3D. Communication between Dive and AC3D
is only possible on secure
hosts.
- Delete: Remove marked object.
- Prune: Remove the marked object from its hierarchy and add it
as a top-object to the world. Only applies to sub-objects.
- Add sub: Add a sub object to the marked object. The sub object
is selected interactively after the command is chosen. It is illegal to
add subs of the same hierarchy.
- Align: Align marked object to the y-axis of the coordinate system
of the world, or the super object, if the marked object is a sub.
- Mark down: Mark object below the currently marked object. That
is, traverse the object hierarchy by marking the next object "closer"
to the view that was interacted with by "shift-select".
- Mark up: Mark the object above the currently marked object.
That is traverse upwards towards the root in an object hierarchy.
- Graspable: Make the marked object graspable. As such, it can
be moved and rotated by grasping it with the mouse buttons, while still
being part of a hierarchy. To make it truly independent, make "Remove
sub".
- Ungraspable: Make the marked object ungraspable.
- Blink: Blink marked object. Blinking is done by turning wireframe
on.
- Smooth: Try to smooth the polygons of the currently marked object
and all its subs, i.e. calculate automatically normals in order to improve
Gouraud shading.
- Center Hierarchy: Will center the marked object and all
its subs around their approximative center of gravity. This operation will
improve rendering performance on badly modelled objects.
- Recorder: A recorder (alpha-version). Record movements of any
object or an actor's avatar.
- Bring: Move the marked object to the actor.
7. Self menu
Operations performed on the actor associated with this vishnu.
- Load: Load new actor avatar from URL or local file. Old avatar
will be left behind.
- Save: Save actor avatar to local file.
- Info: Display information on actor avatar.
- Dive/Tcl Shell: Start an interactive Dive/Tcl shell. From this
prompt Div/Tcl commands can be interactively entered to the actor associated
with vishnu. See the Dive/Tcl behaviour document: http://www.sics.se/dive/manual/tcl.html.
- Dive/Tcl Shell: Start a simple Dive/Tcl shell.
- Right eye: Change viewport to the actor's right eye.
- Left eye: Change viewport to the actor's left eye.
- Polar view: Change viewport to a position above the actor's
avatar (the positive y-axis).
- Side view: Change viewport to a side position of the actor's
avatar.
- Rear view: Change viewport to a position behind the actor's
avatar.
- Align: Align the coordinate axes of the actor's avatar to the
world's global system. If you are lost in cyberspace, this will make your
avatar "stand up", i.e., the avatar's y-axis is parallel to the
world's y-axis. Same effect if "home" key is pressed.
- Align head to avatar: Rotate head so that it faces straight
ahead with respect to the avatar.
- Align avatar to head: Rotate avatar so that it faces the same
way as the head. Useful if you have turned your head in an "interesting"
position and you wish to continue moving your avatar in this direction.
- Align as marked object: Rotate avatar so that it faces the same
way as the currently marked object.
- Attach to marked: Attach the actor's avatar as a sub-object
to the marked object. If the marked object moves, the avatar moves along
with it.
- Detach: Detach the avatar from super object, if any. Usually
meaningful only if Attach to marked has been called.
- Change avatar: Replace the current avatar with the marked object.
The old avatar will be left behind.
- Undo change avatar: Undo the most recent avatar change.
- Subjective login: Declare which user
and group name for the subjective views module.
8. Navigate menu
Vehicles represent tools that allow a user to navigate in 3D space.
- Keyboard: Enable the keyboard vehicle (see below).
- Mouse: Enable the mouse vehicle. The mouse vehicle icon has
three sub-icons, the upper triangle moves the avatar forward and rotates
sideways, the middle box-icon translates the avatar up and sideways, while
the lower icon pitch/rolls the avatar.
- Fly: Enable the Fly vehicle. When interacting with the Fly vehicle's
triangle-icon, the avatar behaves as an aeroplane; while moving the forward,
mouse movement controls pitch/roll.
- Simple: Enable the simple vehicle, a simple 2D vehicle where
you can move forward and sideways in a 2D plane.
- Head: A Tk tool that enables independent head motion.
- Walk: A Tk tool for simple "walk-style" motion.
- Translation: A Tk tool for simple translation motion (forward,
backward, left and right).
- To start: Move actor's avatar to world's start position.
- To origo: Move actor's avatar to world origo.
- To marked: Move actor's avatar to marked object.
- Increase speed: Increase default vehicle speed. PgUp
can also be used.
- Decrease speed: Decrease default vehicle speed. PgDn
can also be used.
- Use Velocity: If set, all non-Tk vehicles will use velocity
to move the avatar. Using velocity will result in a smoother rendering
and less network traffic.
Keyboard vehicle
Navigate using the keyboard vehicle:
Turn left.
Turn right.
Move forward.
Move backward.
- Home Align y-axis to world.
- +/- Zoom in or out.
- PgUp/PgDown Increase/Decrease speed.
- F1,...,F6 Rotate and change eye view.
- Pressing Shift while moving increases the speed.
- Control and Alt controls movement in other degrees of freedom.
9. Tools menu
- Viewpoints: Display a list of all viewpoints (cameras) in the
current world. Select "GoTo" or double click on a viewpoint to
go to the viewpoint.
- Bookmarks: Display a list of all bookmarks you have already
defined. Buttons are provided to add a new bookmark (i.e. remember the
current URL and the current position and orientation), to delete the selected
bookmarks or to go to a specific bookmark. Bookmarks are saved at the end
of each dive session in a file called .dive_bookmarks in your HOME directory.
- Worlds: Presents an (automatically) updated list of all the
worlds which have been visited since the beginning of a session. A double
click on a world name or a click in the "Go To" button will teleport
to the selected world.
- Actors: Display a list of all actors present in world. An actor
can be selected in the list, and operations including sending messages
and going to the selected actor are available.
- Inspect by Name: Find an entity in the database and display
an inspector with as much as possible information for the entity.
- Send Message to all: Send messages to all the other participants
of this world.
- Send Message to Actor: Send messages to actor associated with
marked object. Also accessible from Actors tools menu.
10. Window menu
The window menu has an entry for each of the top level window which
are currently opened by the Dive viewer. Clicking on an entry will deiconify
the window, if necessary and raise it to the front.
11. Help menu
- About: "about message"
- On Vishnu: This text.
- On Dive: Some information about Dive - the distributed multiuser
virtual environment system.
- On multiple users: Information about how to run multiple users.
- On audio: Information about audio.
- Release Notes: Information on the release.
- Tutorial: A tutorial for novel users of Dive and also an introduction
to the system.
12. Status bar
The status bar shows notifications from Dive, such as the number of
bytes which have been read since an URL was opened, the HTTP connection
status, the result of an HTTP connection, etc.
When the button bar is not shown, the status bar shows additionally
the name of the current world, and the URL that was used to access it.
The position and presence of the button bar can be controlled using its
positioning button or the Tk
interface configuration.
13. Button bar
The Button bar shows shortcuts to useful operations which may, otherwise,
be found in the menus. The button to the extreme
left will attach/detach the button bar from vishnu main window. The Dive
logo will be rotating each time Dive is reading from a URL or a local
file. Clicking on it will open a menu which replicates the menu of the
main window. The location entry shows the URL of the current world
and is editable. Pressing return once edition is done will connect to another
world.
The remaining buttons, from left to right, in the button bar have the
following functions:
- Load: Open new world by giving a universal resource locator
(URL) or local file name. The actor leaves the current world and is transferred
into the new.
- Reconnect: Disconnect and reconnect from current world. If the
user is alone in the world, the world will be reread from file.
- Load in Front: Load an object by giving an URL or file name.
The loaded object is inserted into the current world "in front of"
the actor.
- Load in Place: Load an object by giving an URL or file name.
The loaded object is inserted into the current world at the position defined
in the file (or URL).
- Delete: Remove marked object.
- Info: Display information on marked object.
- Mark down: Mark object below the currently marked object. That
is, traverse the object hierarchy by marking the next object "closer"
to the view that was interacted with by "shift-select".
- Mark up: Mark the object above the currently marked object.
That is traverse upwards towards the root in an object hierarchy.
- Align: Align marked object to the y-axis of the coordinate system
of the world, or the super object, if the marked object is a sub.
- Graspable: Make the marked object graspable. As such, it can
be moved and rotated by grasping it with the mouse buttons, while still
being part of a hierarchy. To make it truly independent, make "Remove
sub".
- Ungraspable: Make the marked object ungraspable.