The ZOIL Software Framework for C#/WPF/Surface SDK: Distributed Zoomable User Interfaces for Natural Interaction in Multi-User, Multi-Display and Multi-Device Environments.
ZOIL (Zoomable Object-Oriented Information Landscape) is a software framework written in C# for the .NET 4.0/WPF platform. ZOIL's development is part of a research project
lead by Hans-Christian Jetter at the Human-Computer Interaction Group of the University of Konstanz. It makes use of different external frameworks and APIs, e.g. Versant’s db4objects
(db4o) object database and the Microsoft Surface SDK, to enable application programmers to easily provide a large zoomable visual workspace in their applications. This visual workspace in form of a zoomable information landscape has following properties that
make ZOIL particularly interesting for natural and post-WIMP interaction in multi-user, multi-display and multi-device work environments for tangible and ubiquitous computing:
- Semantic Zooming – For each object in the information landscape multiple size-dependent representations can be defined. While zooming in, an object can smoothly change its form, content, and nature.
- Persistent – The information landscape has a data model that can be persisted and shared across devices using a client-server architecture based on Versant’s db4o.
- Distributed and Real-Time Synchronized – The information landscape’s data model is synchronized in real-time across devices using a a client-server architecture based on Versant’s db4o. This enables multi-user and multi-device
scenarios, in which multiple collocated or remote devices and users synchronously collaborate inside a single workspace.
- MS Surface Support and Device Independent – At the current stage, ZOIL’s architecture offers support for typical mouse and multi-touch manipulations (Surface SDK) and input from OSC (Open Sound Control). While
this part of ZOIL is still provisional, different applications of ZOIL also demonstrate support for tangible physical objects and digital pens.
Following illustration shows how we already use ZOIL in our own lab at the Human-Computer Interaction Group of the University of Konstanz:
Videos of Systems Built Using ZOIL
We have built a series of elaborated prototypes with the ZOIL framework. Videos of these prototypes can be found below. While we share the ZOIL framework on Codeplex, we cannot share these applications’ sources here for different reasons. Sorry!
Still the videos should give an impression of what can be done with ZOIL. In the ZOIL download, you will also find simpler example applications which should help you with getting started.
- Video: Model-based Design and Implementation of Interactive Spaces for Information Interaction: ZOIL Examples Of Use from
Hans-Christian Jetter on
- Video: Surface Computing with ZOIL and Squidy on YouTube (see embedded video below).
Current State, Roadmap, and Help Needed
You should be aware that the current stage of the framework is clearly alpha and will stay there most probably for a long time. The framework does not satisfy typical criteria of code documentation and stability. We just use and extend ZOIL extensively in
our research work, but we have not planned to turn the framework itself into a primary goal of our work. Thus, we also do not have a roadmap for moving ZOIL to a beta stage and currently do not plan to do so. However, if there should be enough interest and
support by other developers, we could imagine to move further though!
Things that our team in Konstanz will (hopefully) be able to address in winter 2010/spring 2011:
- Improved rendering performance of the landscape by largely reducing the size of the VisualTree with virtualization.
- Less CPU load through smarter semantic zooming (e.g. get rid of “dumb” polling of render sizes for each object every frame).
- Different and more aesthetic styles of semantic zooming (e.g. using more than just opacity animation).
- Better architecture for device handlers and events to better support multiple input devices and modalities.
- Integrating a lot of the cool stuff into the framework that we current only have in some isolated applications (e.g. real-time annotation with ink strokes using Anoto pens, smarter asynchronous image component with robust memory management, overview+detail
widgets, split-screen widgets, Win 7 multi-touch support, Wiimote support, …)
Things we could need help with are:
- Generic support for rotatable and scalabe rendering of Web and Office content (or ActiveX in general): we have improvised a lot with different methods for thumbnail generation and things like WPF Win32 Interop Render Control or Awesomium. Still a more generic
solution with reasonable performance is needed.
- Optimizations in rendering performance.
ZOIL is one of the outcomes of the permaedia-project at our group in Konstanz (http://hci.uni-konstanz.de/permaedia). You will find more about ZOIL’s scientific background and publications