Go to content Go to navigation

ExaminationRoom · 2009-12-08 13:05 by Black in

As previously mentioned, ExaminationRoom is the result of my masters thesis. From the project page:

Viewing stereoscopic movies or images is unnatural. The focus and vergence of the eyes have to be decoupled. Artefacts and inconsistencies of a stereoscopic image with the real world cause confusion and decrease viewing pleasure.

ExaminationRoom is a Tool that enables exploration of those problems and quantifying them by providing a flexible and extensible framework for user testing. Challenges include understanding the needs in this relatively new field of research, as well as the commonly used methods in user testing.

The project began with a simple program that generated random dot stereograms from a 1 bit depth image. While this code was rewritten completely later on, it still proved that the general idea of the test worked.

The real ExaminationRoom design started out as a bunch of boxes on a notepad. It was fairly simple: A scene graph containing the objects that are displayed, a scripting core that executes user provided code to move the scene, and a rendering engine that renders the the scene graph.

After some searching I decided to build my own scene code. The preexisting libraries had too many limitations when it came to simulate depth cues. The script core was a Lua state that acted directly on the scene graph. During my WoW Addon writing career I got to like this language, it’s simplicity make it easy to learn and integrate into other applications.

The whole application had to run on both Mac OS X and Windows. Qt was the most comfortable way to achieve this goal, it abstracted many platform dependent features such as window and input handling. Easy handling of pictures for textures was an added benefit.

The rendering of the scene is OpenGL based. Each object in the scene graph can draw itself into the scene, containers can modify the state before and after drawing their contents to achieve interesting effects. The rendering of the stereoscopic representation is controlled by a group of classes titled Renderer, which are responsible for mixing the views of left and right cameras appropriately.

ExaminationRoom Screenshot

The screenshot shows a simple scene with custom depth ordering drawn with the line interlacing renderer.
Read more on this topic in my thesis, but be warned: It’s long! :)

  Textile help