The Performer library primarily uses textures stored in the RGB format, sometimes known as SGI format.
All sound nodes in Ygdrasil use the Bergen sound server.
To start the sound server, run the executable snerd located in one of the binary directories of the Bergen software.
setenv BERGEN_SERVER chicago.evl.uic.edu
setenv BERGEN_PATH /AUDIO/sounds:/home/dan/sound
setenv BERGEN_RAT_SOURCE 1a2b3c4d
The Space class is the parent for any node class which covers a volume (sounds, triggers, and environments). It provides a standard way to define volumes, via the volume message; these can be boxes, spheres, cylinders, infinite spaces (i.e. everywhere), or point volumes (mostly useful for sounds).
Environment nodes are used to control the sky color, fog, and clipping planes. Whichever environment volume the user is currently inside of will define these attributes; if environments overlap, the result is currently semi-random.
Here is an example scene:
User User0 () { caveNavigator User0Nav (fly(off)) caveTracker User0HeadTracker () { head User0Head () } caveTracker User0WandTracker (sensor(1)) { caveWand User0Wand (when(button3, User0Nav.toggleFly)) } keyboard User0KB (when(ckey, User0Nav.toggleCollide)) } light sun () light sun2 (position(-.5 -1 1)) object (file(ground.pfb), floor, position(0 0 -5)) switch spinnerSwitch () { timer (start,endvalue(365),when(changed,spinner.orientation(0 0 $value)),when(end,start)) transform spinner(position(-5 2 7)) { object (file(banana.pfb)) } } Environment space0 (volume(box -1000 -1000 -1000 1000 10 1000), skyColor(.5 .7 1)) Environment space1 (volume(box -1000 10 -1000 1000 1000 1000), skyColor(0 0 0)) WandTrigger trigger0 (volume(sphere 0 5 5 3), when (enter, print($user entered)), when (button1, space0.skyColor(1 1 .2)), when (button2, spinnerSwitch.toggle) )
The yg.config file sets the default values for several environmental variables. These values can be overridden by creating a .ygrc file in the home or local directory. The following environmental variables can be set to control program behavior. All paths are a colon-separated list of directories and include the current directory by default:
setenv YG_PATH data:/usr/local/yg/data
setenv YG_DSO_PATH modules:/usr/local/yg/modules
setenv YG_DEBUG "world.sentMessages *.volume"
setenv YG_NET_SERVER laurel.evl.uic.edu
setenv YG_NET_SERVER 2700
setenv YG_CPP "/usr/bin/cc -C"
setenv YG_NOCPP_COMMAND
setenv YG_PRELOAD_CLASSES "mirror clipper"
setenv YG_PF_SHOW_TEXTURES
In order to add new DSO nodes to your scene, do the following:
All messages will be automatically parsed into ygMessage objects, which contain the message name and a vector of the arguments, all as ygStrings. For instance, position(1 0 2) becomes a ygMessage with the message name "position" and 3 arguments - "1", "0", "2". The == operator is overloaded for messages to compare message names with strings, as in the msg == "mymessage" above. There are also a number of convenience functions for converting message arguments into various types:simpleNode.h
#ifndef _simpleNode_h_ #define _simpleNode_h_ #include "ygNode.h" class simpleNode : public ygNode { public: simpleNode(const char* name,bool master=true); virtual void reset(void); virtual void message(const ygMessage&); virtual void app(void); }; #endifsimpleNode.cxx
#include "simpleNode.h" using namespace std; extern "C" ygNode* construct_simpleNode(const char* name,bool master) { return new simpleNode(name,master); } simpleNode::simpleNode(const char* name,bool master) : ygNode(name,master) { setClassName("simpleNode"); } void simpleNode::reset(void) { ygNode::reset(); } void simpleNode::message(const ygMessage& msg) { if (msg == "mymessage") { /* mymessage(msg.floatArg(0)); */ } else ygNode::message(msg); } void simpleNode::app(void) { ygNode::app(); }
spinnerIf there is more than one dependency, list each one on a separate line. You do not need to list any dependencies of the parent class - those will be found recursively as the parent class is loaded.
In order to start a networked scene, do the following:
Ygdrasil runs under both IRIX and Linux and requires the SGI OpenGL Performer software library.
The Performer software library can be downloaded from www.sgi.com.
Ygdrasil Version 0.4.2
Ygdrasil has recently been upgraded to version 0.4.2 and now includes a full graphical interface.
A listing of the enhancements to version 0.4.2 can be found here.
Applications using versions 0.1.X cannot be networked with version 0.4.X.
User modules developed using the 0.1.X architecture must be modified to work with version 0.4.X.
The Bergen Sound server has recently been upgraded to version 0.6.
Bergen can produce up to 4 channel spatialized sound for both sampled and RAT sound streams.
Ygdrasil
version | platform | CAVElib license (3.1.1) | EVL use only (2.7.4_EVL) |
0.4.2 | gcc 3.3.3/Performer 3.2.0 | yg_0.4.2_gcc3.tar.gz | yg_0.4.2_gcc3.tar.gz |
0.4.2 | gcc 2.96/Performer 3.0.2 | yg_0.4.2_gcc2.tar.gz | yg_0.4.2_gcc2.tar.gz |
0.4.2 | Irix 6.5/Performer 2.4 | yg_0.4.2_irix.tar.gz | |
0.4.2 | source | yg_0.4.2.tar.gz | |
0.4.1 | gcc 3.3.3/Performer 3.2.0 | yg_0.4.1_gcc3.tar.gz | yg_0.4.1_gcc3.tar.gz |
0.4.1 | gcc 2.96/Performer 3.0.2 | yg_0.4.1_gcc2.tar.gz | yg_0.4.1_gcc2.tar.gz |
0.4.1 | Irix 6.5/Performer 2.4 | yg_0.4.1_irix.tar.gz | |
0.4.1 | source | yg_0.4.1.tar.gz | |
0.4 | gcc 3.3.3/Performer 3.2.0 | yg_0.4_gcc3.tar.gz | yg_0.4_gcc3.tar.gz |
0.4 | gcc 2.96/Performer 3.0.2 | yg_0.4_gcc2.tar.gz | yg_0.4_gcc2.tar.gz |
0.4 | Irix 6.5/Performer 2.4 | yg_0.4_irix.tar.gz | |
0.4 | source | yg_0.4.tar.gz |
version | platform | required by sound nodes |
0.4.2 | gcc 3.3.3 | bergen_0.6_gcc3.tar.gz |
0.4.2 | gcc 2.9.6 | bergen_0.6_gcc2.tar.gz |
0.4.2 | Irix 6.5 | bergen_0.6_irix.tar.gz |
0.4.1 | gcc 3.3.3 | bergen_0.6_gcc3.tar.gz |
0.4.1 | gcc 2.9.6 | bergen_0.6_gcc2.tar.gz |
0.4.1 | Irix 6.5 | bergen_0.6_irix.tar.gz |
0.4 | gcc 3.3.3 | bergen_0.5_gcc3.tar.gz |
0.4 | gcc 2.9.6 | bergen_0.5_gcc2.tar.gz |
0.4 | Irix 6.5 | bergen_0.5_irix.tar.gz |
version | platform | required by movie nodes |
0.4.2 | Linux | openquicktime-1.0-src.tar.gz |
0.4.1 | Linux | openquicktime-1.0-src.tar.gz |
0.4 | Linux | openquicktime-1.0-src.tar.gz |
library | platform | note |
rat_4.2.23_gcc2.tar.gz | Linux | used to streaming audio |
rat_4.2.23_irix.tar.gz | Irix | precompiled for Irix 6.5 |
QUANTA-0.4.tar.gz | all | used when rebuilding Ygdrasil |
CAVE_2.7.4.tar.gz | all | for EVL use only (enhanced simulator interface) |
cxxDocumentor_0.2.tar.gz | all | used to generate Ygdrasil documentation |
A tar file containing the source distribution can be downloaded here:
yg_0.1.11.tar.gz
Due to licensing restrictions, binaries for IRIX and Linux are not included in the distribution.
EVL students can obtain binaries from the internal EVL website:
yg_0.1.11_bin.tar.gz
Other collaborating researchers can obtain binaries by contacting Daniel Sandin at dan@uic.edu.
IRIX binaries have been compliled under Performer 2.4 on IRIX 6.5.
Linux binaries have been compiled under Peformer 3.0.2 on Redhat Linux 7.3 (gcc 2.96).
Ygdrasil uses two libraries developed at EVL, the CAVE library and CAVERN G2, a library for telecollaborative networking.
The binaries distributed with Ygdrasil have been staticaly linked to both the CAVE and CAVERN G2 libraries.
However, these two libraries must be installed before recompiling or relinking Ygdrasil.
Although the current binaries use CAVE_2.7.2, most versions of the CAVE library can be used to recompile and relink Ygdrasil.
The CAVE library can be purchased at www.vrco.com.
A tar file containing the source distribution of CAVERN G2 version 1.2.2 can be downloaded here:
CAVERNG2_1.2.2.tar.gz
The sound related nodes distributed with Ygdrasil use the Bergen Sound Library.
The current version leven of Bergen is 0.5 and was recently upgraded to provide up to 4 channel directional sound.
The distribution includes binaries for both IRIX 6.5 and Linux Redhat 7.3 (OSS).
A tar file containing the full distribution can be downloaded here:
bergen_0.5.tar.gz
The OpenQuicktime library verision 1.0b is required for the movieTexture node on Linux: www.openquicktime.org
The RAT Robust Audio Tool is used frequently for audio conferencing.
A version pre-compiled for IRIX 6.5 can be found here:
rat_4.2.23_irix.tar.gz