Ygdrasil Basics

Ygdrasil is an extensible framework and markup language for creating networked, interactive immersive environments. A virtual environment in Ygdrasil is called a scene, made up of different nodes. Each 3D object in the environment is a node; animations, sounds, scripting controls for interactive, and anything else in the world are also nodes. These nodes are the building blocks of the world, and the world is created by arranging and connecting nodes in a scene file.

Graphics

Ygdrasil uses the CAVELib for immersive display, so it has built-in support for stereoscopic graphics, multi-wall projections, and spatial tracking input. It uses the OpenGL Performer graphics library, a powerful visualization toolkit made by SGI. Performer provides a structured scene graph, loader functions for different 3D model formats, optimization to speed up display, and many other useful tools. It is specifically optimized for high-end SGI visualization supercomputers such as the Onyx, but also runs on Linux.

Extensibility

One of Ygdrasil's key features is extensibility. The entire language is built on the idea of nodes, discrete components with specific functions. The nodes themselves are individual chunks of code written in C++, compiled and stored as DSO's (Dynamic Shared Objects). Adding a new feature to the language is jsut a matter of writing a new node in C++ and compiling it. After that, you can then use it in your scene file just like any other node. Because all the nodes are stored as individual code modules, you don't have to recompile the entire Ygdrasil program whenever you want to add a new node. The whole Ygdrasil framework is written in C++, with one C++ class for each node. So, many node classes can be made by extending another node class.