The Ubit Toolkit & Mouse Server
The Ubiquitous Brick Interaction Toolkit
Ubit and Ubit3D
Ubit is a GUI toolkit that combines the advantages of scene graph
and widget based toolkits. The Ubit3D extension makes it possible to
display 2D GUIs in a 3D space.
Ubit provides a flexible achitecture that makes it possible to customize
widgets in a simple way without having to create new classes.
Pseudo declarative API:
Ubit applications can either be created by using a classical OO API
or a pseudo-declarative API that makes programming simpler.
Both APIs are written in the C++ language. They do not require
using a pre-processor.
Multiple displays on remote hosts:
Ubit supports the replication of widget graphs on remote hosts:
applications can open windows on several displays and share
the entire content of these windows or arbitray subparts.
The Ubit supports multiple pointers and two-handed interaction. Applications
can handle multiple event flows that are logically separated
(hence, events coming from different threads won't be merged).
OpenGL and 3D interfaces:
Ubit can display 2D interfaces in a 3D space, as shown on the caption.
These interfaces are directly rendered in 3D by using OpenGL (they are not
rendered as textures).
Advanced graphical features:
Ubit provides support for multiscale interfaces, semantic zooming,
transparent and transluscent widgets, magic lenses, see-through tools,
Control menus, XHTML parsing and rendering...
Ubit Mouse Server (UMS)
UMS is a X11 interaction server that provides:
UMS can control and display several pointers
on a single display. Alternate pointers can be attached to a serial mouse,
to a MIMIO(tm) device or to the mouse of a remote host.
UMS makes is possible to migrate pointers from one display to
one or several remote displays. A topology of display can be defined
permanently or dynamically by using the ZeroConf/Bonjour service
UMS also provides support to control applications remotely
from another host, or to migrate data from one display to another.
Note on multiple pointers:
Ubit (or UMS compliant) applications can distinguish multiple pointers
(so that each pointer can perform a different action on the application).
Other applications will merge the events coming from different pointers.
However, it is generally possible to use one pointer per application
application without interfereing.
Ubit has been tested on a variety of Unix platforms including, Solaris, Linux,
FreeBSD, Mac OS X (with a X11 server), embedded Linux.
Ubit is written in C++. Two rendering
modes are available: by using X11 or OpenGL. The OpenGL mode improves
performance for transparency and resizing. It also makes it possible to
display widgets in 3D.
the Ubit library, the UMS server, demos and examples
(1.85 Mo with images and demos)
Install + Notes:
installation: see the
- launch Ubit applications with the -help-x or -help-ubit
option on the command line to show all options
- the -gl option specifies that OpenGL is used for rendering graphics instead of X11 (when OpenGL is available)
Notes on Ubit3D:
The U3D mode makes it possible to display 2D GUIs in a 3D space. See example 3d_demo in directory "demos"
the Xlib (and a X11 server)
OpenGL or Mesa (optional)
Documentation & Papers
Slides and videos:
Main Author: Eric Lecolinet / Telecom ParisTech
Ubit3D: Matthieu Nottale
mDNS/ZeroConf: Stuart Pook
configure: Philippe Dax, Stuart Pook
Many students have contributed to the Ubit projet,
either by writing code, testing, debugging...
Special thanks to: Philippe Dax, Michel Beaudouin-Lafon, Jean-Daniel Fekete,
Claudie Faure, Stuart Pook, Laurent Robert for their helpful comments