forked from vrjuggler/vrjuggler
-
Notifications
You must be signed in to change notification settings - Fork 1
/
README.html
98 lines (98 loc) · 13.7 KB
/
README.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Juggler Project Overview</title><link rel="stylesheet" type="text/css" href="base_style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.0"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div lang="en" class="article" title="Juggler Project Overview"><div class="titlepage"><div><div><h2 class="title"><a name="d0e1"></a>Juggler Project Overview</h2></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="othername">The Juggler Team</span></h3></div></div></div><div><p class="pubdate">$Date$</p></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#d0e15">Introduction</a></span></dt><dt><span class="section"><a href="#d0e26">Compiling</a></span></dt><dt><span class="section"><a href="#modules-section">Modules</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e42">VR Juggler</a></span></dt><dt><span class="section"><a href="#d0e56">VR Juggler Portable Runtime (VPR)</a></span></dt><dt><span class="section"><a href="#d0e88">Juggler Configuration and Control Library (JCCL)</a></span></dt><dt><span class="section"><a href="#d0e112">Gadgeteer</a></span></dt><dt><span class="section"><a href="#d0e126">Sonix</a></span></dt><dt><span class="section"><a href="#d0e142">Tweek</a></span></dt><dt><span class="section"><a href="#d0e158">VRJConfig</a></span></dt></dl></dd><dt><span class="section"><a href="#d0e170">VR Juggler 2.x</a></span></dt></dl></div><div class="section" title="Introduction"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e15"></a>Introduction</h2></div></div></div><p>Congratulations, you have downloaded the source code to the Juggler
Project, open source software for virtual reality from the <a class="ulink" href="http://www.vrac.iastate.edu/" target="_top">Virtual Reality Applications
Center</a> at <a class="ulink" href="http://www.iastate.edu/" target="_top">Iowa State
University</a>. Within this document, you will find information about
the new VR Juggler 2.x directory structure including descriptions of all
the component modules that make up the Juggler Project. Instructions for
building the individual modules can be found within the specific module
directories and on the VR Juggler website.</p></div><div class="section" title="Compiling"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e26"></a>Compiling</h2></div></div></div><p>For information on compiling the source code, refer to either the
<code class="filename">INSTALL.txt</code> or <code class="filename">INSTALL.html</code> file
found in this directory.</p></div><div class="section" title="Modules"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="modules-section"></a>Modules</h2></div></div></div><p>The Juggler Project is made up of several modules that have evolved
from the original VR Juggler source tree. Within this section, we describe
each of the modules, what they are used for, and, when possible, how they
relate to VR Juggler 1.0.</p><div class="section" title="VR Juggler"><div class="titlepage"><div><div><h3 class="title"><a name="d0e42"></a>VR Juggler</h3></div></div></div><div class="section" title="Directory"><div class="titlepage"><div><div><h4 class="title"><a name="d0e45"></a>Directory</h4></div></div></div><p><code class="filename">juggler/modules/vrjuggler</code></p></div><div class="section" title="Description"><div class="titlepage"><div><div><h4 class="title"><a name="d0e51"></a>Description</h4></div></div></div><p>VR Juggler is still VR Juggler. There are many new features in
VR Juggler since the 1.0 series, but in essence, it is still the same
familiar tool. Of the projects listed below, VR Juggler depends on
VPR, JCCL, Sonix, and Gadgeteer. Its individual components have simply
been broken out into individually developed modules. More information
about the latest version of VR Juggler is given in the following
section.</p></div></div><div class="section" title="VR Juggler Portable Runtime (VPR)"><div class="titlepage"><div><div><h3 class="title"><a name="d0e56"></a>VR Juggler Portable Runtime (VPR)</h3></div></div></div><div class="section" title="Directory"><div class="titlepage"><div><div><h4 class="title"><a name="d0e59"></a>Directory</h4></div></div></div><p><code class="filename">juggler/modules/vapor</code></p></div><div class="section" title="Description"><div class="titlepage"><div><div><h4 class="title"><a name="d0e65"></a>Description</h4></div></div></div><p>VPR is the foundation for all the Juggler modules. It provides
an object-oriented, cross-platform abstraction layer to common
operating system features such as threads, semaphores, and sockets.
All the other modules depend on VPR so that they may be ported easily
to other platforms. In VR Juggler 1.0, VPR was the collection of
directories Threads, SharedMem, and Sync. Since then, that code has
been collected into a single library and greatly extended into what is
now VPR.</p><p>VPR itself contains a great deal of platform-specific code. It
categorizes this code into subsystems, and various subsystems may be
chosen depending upon the target platform and target threading system.
For example, on IRIX, there are two possible subsystems: POSIX and
Netscape Portable Runtime (NSPR). For Windows, on the other hand, VPR
uses native WIndows threading and serial ports with socket I/O based
on Boost.Asio. The subsystems are:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>POSIX (UNIX-based platforms only)</p></li><li class="listitem"><p>NSPR (all platforms, required on Solaris)</p></li></ul></div><p>Because VPR is the foundation for all the other modules, it is
important to choose the right subsystem.</p><p>Choosing the correct subsystem depends on many factors. For
example, which of the subsystems are supported on the desired target
platform? Are there compatibility issues with software outside the
Juggler Project? In most cases, however, the choice is
straightforward. Indeed, IRIX is the only platform that presents any
real issues. In particular, the use of OpenGL Performer from SGI
raises important compatibility concerns. POSIX threads will work, but
applications may sometimes crash on startup. As of this writing,
OpenGL Performer does not work at all with NSPR. Other software may
pose similar problems, and it is important to know the needs of other
tools when configuring VPR.</p><p>As mentioned above, all the other modules depend on VPR, so it
must be compiled before anything else. For more information on
compiling VPR, refer to
<code class="filename">modules/vapor/INSTALL.txt</code>.</p></div></div><div class="section" title="Juggler Configuration and Control Library (JCCL)"><div class="titlepage"><div><div><h3 class="title"><a name="d0e88"></a>Juggler Configuration and Control Library (JCCL)</h3></div></div></div><div class="section" title="Directory"><div class="titlepage"><div><div><h4 class="title"><a name="d0e91"></a>Directory</h4></div></div></div><p><code class="filename">juggler/modules/jackal</code></p></div><div class="section" title="Description"><div class="titlepage"><div><div><h4 class="title"><a name="d0e97"></a>Description</h4></div></div></div><p>JCCL provides the configuration layer for VR Juggler and other
modules. The config chunks and reusable configuration editor JavaBeans
come from JCCL. These JavaBeans are used by the VR Juggler
configuration editor tool, VRJConfig (see below). In essence, JCCL is
the VR Juggler 1.0 Config directory with many new features including
XML-based config files.</p><p>To build the JCCL C++ library, CppDOM is required for parsing
XML. CppDOM is a lightweight XML parser written in C++ and designed to
provide an interface similar to JDOM. More information can be found at
<a class="ulink" href="http://xml-cppdom.sourceforge.net/" target="_top">http://xml-cppdom.sourceforge.net/</a>.</p><p>To build the configuration editor JavaBeans, JDOM and the Tweek
Java API are required. Tweek is another module in the Juggler Project,
and it will be built automatically as a dependency of JCCL. JDOM comes
with the Juggler Project source code and can be found in the directory
<code class="filename">juggler/external/jdom</code>.</p></div></div><div class="section" title="Gadgeteer"><div class="titlepage"><div><div><h3 class="title"><a name="d0e112"></a>Gadgeteer</h3></div></div></div><div class="section" title="Directory"><div class="titlepage"><div><div><h4 class="title"><a name="d0e115"></a>Directory</h4></div></div></div><p><code class="filename">juggler/modules/gadgeteer</code></p></div><div class="section" title="Description"><div class="titlepage"><div><div><h4 class="title"><a name="d0e121"></a>Description</h4></div></div></div><p>Gadgeteer is made up of the code that was formerly in the VR
Juggler 1.0 Input directory. It contains all the drivers used for VR
Juggler input devices, and it contains the high-level Input Manager.
The goal with Gadgeteer is to mold it into the first dynamically
loadable component within the VR Juggler microkernel. At this time, it
must still be compiled in, but we hope to generalize the concepts of
VR Juggler Managers to the point that the kernel knows nothing about
them until they are loaded at run time.</p></div></div><div class="section" title="Sonix"><div class="titlepage"><div><div><h3 class="title"><a name="d0e126"></a>Sonix</h3></div></div></div><div class="section" title="Directory"><div class="titlepage"><div><div><h4 class="title"><a name="d0e129"></a>Directory</h4></div></div></div><p><code class="filename">juggler/modules/sonix</code></p></div><div class="section" title="Description"><div class="titlepage"><div><div><h4 class="title"><a name="d0e135"></a>Description</h4></div></div></div><p>Sonix provides an interface useful to many simple VR and
entertainment applications to trigger and position sounds in 3D. This
library provides simple audio sound objects on top of several audio
APIs. The interface to Sonix is kept very simple in order to get
people up and running with sound as fast as possible.</p><p>The interface to sonix is kept very simple in order to get
people up and running with sound as fast as possible. Sonix is
reconfigurable allowing audio APIs to be safely swapped out at runtime
without the dependent systems noticing. Systems using this layer
expect to be completely portable.</p></div></div><div class="section" title="Tweek"><div class="titlepage"><div><div><h3 class="title"><a name="d0e142"></a>Tweek</h3></div></div></div><div class="section" title="Directory"><div class="titlepage"><div><div><h4 class="title"><a name="d0e145"></a>Directory</h4></div></div></div><p><code class="filename">juggler/modules/tweek</code></p></div><div class="section" title="Description"><div class="titlepage"><div><div><h4 class="title"><a name="d0e151"></a>Description</h4></div></div></div><p>Tweek is a cross-platform, cross-language library consisting of
a C++ API and a Java API. Its purpose is to provide a convenient
mechanism for a Java-based GUI to interact with a complex C++ library
or application. The Tweek GUI can be run in virtual environments,
external on a palm top, or on the desktop next to a running
application. Each of these methods gives a familiar 2D widget set that
can control applications flexibly. To provide this capability, it uses
CORBA.</p><p>The Java code in Tweek includes the Tweek Java API and the Tweek
JavaBean loader application. The Java API is provided to make the use
of JavaBeans and CORBA simpler for programmers. The JavaBean loader
application simply loads the Beans it finds and presents them to the
user in some sort of structured manner (for example, a collection of
icons with web-style navigation).</p></div></div><div class="section" title="VRJConfig"><div class="titlepage"><div><div><h3 class="title"><a name="d0e158"></a>VRJConfig</h3></div></div></div><p>VRJConfig is the configuration editor for VR Juggler. It is a
complete rewrite of VjControl, both in terms of the user interface and
the back-end code. The new interface is based on open discussion and
feedback from users of VR Juggler 1.0 and VjControl.</p><p>The back-end is much more extensible. It allows users to write
plug-in editors to simplify complex editing tasks. User-defined
configuration elements can be handled in a much more dynamic manner as
well. No modification of VR Juggler or JCCL <span class="quote">“<span class="quote">system</span>”</span> files
must be made to get user-defined elements into the editor.</p><p>VRJConfig is itself a JavaBean that is loaded into the Tweek Java
GUI. VRJConfig uses JavaBeans internally to facilitate user extensions.
All in all, VRJConfig is a highly dynamic, powerful editor for VR
Juggler configurations.</p></div></div><div class="section" title="VR Juggler 2.x"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e170"></a>VR Juggler 2.x</h2></div></div></div><p>TODO... (this is the version number of the next release of
Juggler)</p></div></div></body></html>