XML Processing (CAVE/YURT)

XML Processing overview

Brown University's CAVE and YURT systems both have access to protocols for rendering objects, texts, sounds, particle systems, and actions described in an XML file. This allows for the, relatively simple, creation of a wide range of interactive CAVE/YURT experiences and visualizations.

This development pipeline relies on two fundamental pieces of software. The first is an editing interface that allows users to translate their concept into an valid XML file. The second is an interpreter that translates this XML into a rendered output for the CAVE/YURT. There's a variety of software available for both stages in this pipeline.

xml Editing interfaces


Developed for, and used predominately by, the Literary Arts class 'Writing3D' CaveWriting is a simple, but restrictive, interface for manually editing XML properties. It was generated automatically from the underlying XML schema through a JAXfront system, and offers very little in the way of visualization and mass-editing. However, it's well tested and well documented, having been used reliably in classes for years. Its bugs, while troublesome, are well documented and understood.

You can download CaveWriting here.


Glyph was developed in Unity as a student project to update the legacy CaveWriting UI. It offers a '3D Gizmo' interface allowing users to drag, twist, and scale their objects in 3D space, similar to Unity itself. Unlike CaveWriting Glyph aims to allow users to export their projects to a Vive, allowing for multiplatform development.

Unlike it's alternatives however, Glyph is very much a student project, and very much in development. It's less well tested, and less reliable.

You can download it and keep up with it's development here.

Direct-XML Editing

CaveWriting and Glyph offer sensible interfaces for translating interactive commands into XML, but the XML can be written to directly in a text editor. Understanding the XMLSchema file (available here) is all that's needd for manual develpment.

Simliarly, the XML can be directly written in C# using the translated schema file (avilable here). When writing the XML through C#, the XML needs to be serialized in and out of the C# code after being appropriately redefined as objects. This is one of the most effective methods for large, complicated, procedures.

xml interpreters

Legacy Interpreter

The legacy XML interpreter is the default interpreter available in the CCV and renders the XML through OpenGL. It's the most reliable interpreter and has been used for years. It does have certain memory constraints (most apparent when working with uploaded models) and has a relatively impenetrable codebase.

W3Dpy (Blender)

W3Dpy is an alternative interpreter that reads the XML through a Python interpreter and renders the output in Blender. It offers a more flexible, and reliable, interface for interaction- but remains unfinished and untested. It's beta state can be optionally toggled in both the CAVE/YURT by editing the batch files that call the XML scripts.

You can also download it and keep up with it's development here.