What is it ?- Presentation Glass Applications - Screenshot - Celestia / Catthredal in Cave
MobileContro- GUI used to PDA interface development References
Video (Celestia in CAVE with Stereo) Low - High VRCAI presentation
Marcelo de Paiva Guimar„es (firstname.lastname@example.org) and Bruno Barberi Gnecco
Glass is a new
library for distributed computing. Itís
a flexible solution, in which all functionality is provided by plug-ins. It was
designed from scratch to be a simple, efficient solution for real time
distributed computing. This way games, scientific and educational applications
can run easily in a graphic cluster using CAVEs, Panoramas and PowerWalls to
display the results.
Virtual Reality applications
running in a graphic cluster have specific requirements that include: low
delays, fast synchronization, high bandwidth, etc. Not all available
APIs for distributed computing fit these requirements. And those that do are
usually too specific: they target multiprojection, for instance, not giving much
importance to the underlying computational process ó such as physical
simulation, real time computation of geometry, etc. They usually provide good
resources for graphic rendering (such as scene graphs).
The available frameworks require rewriting the existing code, since it has to be adapted to the new programming paradigm. Legacy code may take a good amount of time and effort to port, and the result is often unsatisfactory. Glass was designed to fulfill this gap, being based on the following principle
∑ Portability and interoperability: distributed computing is everyday more heterogeneous. The library can not only run in different architectures (Personal Computers, PDAs) and operating systems (Linux, Irix, Windows), but interoperate among them.
∑ Extensibility and flexibility: Glass is easy to extend, not requiring API changes or even recompilation. This way it can be kept up-to-date with the latest technologies and be able to solve specific needs of users.
∑ Easy to use, fast learning curve: distributed computing APIs tend to be complicated, requiring a lot of time to understand and master. Most libraries provide a huge number of functions, many of them with a high number of arguments. They are hard to learn and remember. Frameworks require a new approach to the programming, and therefore have a steep learning curve. Glass aims to be easy to use, being almost transparent to the user: thatís where its name comes from.
∑ High performance: if an application requires distributed computing, itís because it has a high computational cost.
∑ Network protocol independency: an abstraction of the underlying network protocol makes Glass protocol independent. You can use TCP, UDP, or even more high-level systems such as MPI easily. Just instantiate the proper network class. This is very important in a world where applications have hugely different network requirements.
∑ Reliability and fault tolerance: any distributed computing library must be reliable and fault tolerant. Itís unacceptable that failure of a single node crashes the entire computational system. Glass provides fault tolerance automatically.
∑ Thread safety: many APIs are note thread safe. This forces the user to find workarounds or use other solutions instead place of threads. Glass works in thread applications seamlessly.
Glass is completely written in C++. The choice was due to its wide number
of compilers and spread use, good performance, and certain features that would
make programmerís life easier (such as OO and templates). C++ is easy to
interface with C, Java and other languages.
A core provides all internal functionality, such as the network system, plug-in management, node management, etc. The developer is completely oblivious to this core
User navigating in Celestia application using a PDA ( http://www.shatters.net/celestia/) - Celestia in Cave
User navigating in Cathedral application using a PDA - Model provided by Marko Dabrovic (email@example.com)