root/juggler/trunk/doc/README.xml

Revision 20738, 11.8 kB (checked in by patrick, 1 year ago)

Updated for SPROC removal.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
4 <article lang="en">
5    <articleinfo>
6       <title>Juggler Project Overview</title>
7
8       <authorgroup>
9          <author>
10             <othername>The Juggler Team</othername>
11          </author>
12       </authorgroup>
13
14       <pubdate>$Date$</pubdate>
15    </articleinfo>
16
17    <section>
18       <title>Introduction</title>
19
20       <para>Congratulations, you have downloaded the source code to the
21       Juggler Project, open source software for virtual reality from the
22       <ulink url="http://www.vrac.iastate.edu/">Virtual Reality Applications
23       Center</ulink> at <ulink url="http://www.iastate.edu/">Iowa State
24       University</ulink>. Within this document, you will find information
25       about the new VR Juggler 2.x directory structure including descriptions
26       of all the component modules that make up the Juggler Project.
27       Instructions for building the individual modules can be found within the
28       specific module directories and on the VR Juggler website.</para>
29    </section>
30
31    <section>
32       <title>Compiling</title>
33
34       <para>For information on compiling the source code, refer to either the
35       <filename>INSTALL.txt</filename> or <filename>INSTALL.html</filename>
36       file found in this directory.</para>
37    </section>
38
39    <section id="modules-section">
40       <title>Modules</title>
41
42       <para>The Juggler Project is made up of several modules that have
43       evolved from the original VR Juggler source tree. Within this section,
44       we describe each of the modules, what they are used for, and, when
45       possible, how they relate to VR Juggler 1.0.</para>
46
47       <section>
48          <title>VR Juggler</title>
49
50          <section>
51             <title>Directory</title>
52
53             <para><filename>juggler/modules/vrjuggler</filename></para>
54          </section>
55
56          <section>
57             <title>Description</title>
58
59             <para>VR Juggler is still VR Juggler. There are many new features
60             in VR Juggler since the 1.0 series, but in essence, it is still
61             the same familiar tool. Of the projects listed below, VR Juggler
62             depends on VPR, JCCL, Sonix, and Gadgeteer. Its individual
63             components have simply been broken out into individually developed
64             modules. More information about the latest version of VR Juggler
65             is given in the following section.</para>
66          </section>
67       </section>
68
69       <section>
70          <title>VR Juggler Portable Runtime (VPR)</title>
71
72          <section>
73             <title>Directory</title>
74
75             <para><filename>juggler/modules/vapor</filename></para>
76          </section>
77
78          <section>
79             <title>Description</title>
80
81             <para>VPR is the foundation for all the Juggler modules. It
82             provides an object-oriented, cross-platform abstraction layer to
83             common operating system features such as threads, semaphores, and
84             sockets. All the other modules depend on VPR so that they may be
85             ported easily to other platforms. In VR Juggler 1.0, VPR was the
86             collection of directories Threads, SharedMem, and Sync. Since
87             then, that code has been collected into a single library and
88             greatly extended into what is now VPR.</para>
89
90             <para>VPR itself contains a great deal of platform-specific code.
91             It categorizes this code into subsystems, and various subsystems
92             may be chosen depending upon the target platform and target
93             threading system. For example, on IRIX, there are three possible
94             subsystems: POSIX and Netscape Portable Runtime (NSPR). Win32, on
95             the other hand, only uses the NSPR subsystem. The subsystems
96             are:</para>
97
98             <itemizedlist>
99                <listitem>
100                   <para>POSIX (UNIX-based platforms only)</para>
101                </listitem>
102
103                <listitem>
104                   <para>NSPR (all platforms, required on Win32 and Mac OS
105                   X)</para>
106                </listitem>
107             </itemizedlist>
108
109             <para>Because VPR is the foundation for all the other modules, it
110             is important to choose the right subsystem.</para>
111
112             <para>Choosing the correct subsystem depends on many factors. For
113             example, which of the subsystems are supported on the desired
114             target platform? Are there compatibility issues with software
115             outside the Juggler Project? In most cases, however, the choice is
116             straightforward. Indeed, IRIX is the only platform that presents
117             any real issues. In particular, the use of OpenGL Performer from
118             SGI raises important compatibility concerns. SPROC threads are the
119             only threads that are stable with OpenGL Performer (on IRIX).
120             POSIX threads will work, but applications may sometimes crash on
121             startup. As of this writing, OpenGL Performer does not work at all
122             with NSPR. Other software may pose similar problems, and it is
123             important to know the needs of other tools when configuring
124             VPR.</para>
125
126             <para>On platforms other than IRIX, the choice is relatively
127             simple. If NSPR is available, its use is recommended. If NSPR is
128             not available, POSIX threads is the next logical choice--at least
129             on UNIX-based platforms. On Win32 and Mac OS X, NSPR is
130             required.</para>
131
132             <para>As mentioned above, all the other modules depend on VPR, so
133             it must be compiled before anything else. For more information on
134             compiling VPR, refer to
135             <filename>modules/vapor/INSTALL.txt</filename>.</para>
136          </section>
137       </section>
138
139       <section>
140          <title>Juggler Configuration and Control Library (JCCL)</title>
141
142          <section>
143             <title>Directory</title>
144
145             <para><filename>juggler/modules/jackal</filename></para>
146          </section>
147
148          <section>
149             <title>Description</title>
150
151             <para>JCCL provides the configuration layer for VR Juggler and
152             other modules. The config chunks and reusable configuration editor
153             JavaBeans come from JCCL. These JavaBeans are used by the VR
154             Juggler configuration editor tool, VRJConfig (see below). In
155             essence, JCCL is the VR Juggler 1.0 Config directory with many new
156             features including XML-based config files.</para>
157
158             <para>To build the JCCL C++ library, CppDOM is required for
159             parsing XML. CppDOM is a lightweight XML parser written in C++ and
160             designed to provide an interface similar to JDOM. More information
161             can be found at <ulink
162             url="http://xml-cppdom.sourceforge.net/">http://xml-cppdom.sourceforge.net/</ulink>.</para>
163
164             <para>To build the configuration editor JavaBeans, JDOM and the
165             Tweek Java API are required. Tweek is another module in the
166             Juggler Project, and it will be built automatically as a
167             dependency of JCCL. JDOM comes with the Juggler Project source
168             code and can be found in the directory
169             <filename>juggler/external/jdom</filename>.</para>
170          </section>
171       </section>
172
173       <section>
174          <title>Gadgeteer</title>
175
176          <section>
177             <title>Directory</title>
178
179             <para><filename>juggler/modules/gadgeteer</filename></para>
180          </section>
181
182          <section>
183             <title>Description</title>
184
185             <para>Gadgeteer is made up of the code that was formerly in the VR
186             Juggler 1.0 Input directory. It contains all the drivers used for
187             VR Juggler input devices, and it contains the high-level Input
188             Manager. The goal with Gadgeteer is to mold it into the first
189             dynamically loadable component within the VR Juggler microkernel.
190             At this time, it must still be compiled in, but we hope to
191             generalize the concepts of VR Juggler Managers to the point that
192             the kernel knows nothing about them until they are loaded at run
193             time.</para>
194          </section>
195       </section>
196
197       <section>
198          <title>Sonix</title>
199
200          <section>
201             <title>Directory</title>
202
203             <para><filename>juggler/modules/sonix</filename></para>
204          </section>
205
206          <section>
207             <title>Description</title>
208
209             <para>Sonix provides an interface useful to many simple VR and
210             entertainment applications to trigger and position sounds in 3D.
211             This library provides simple audio sound objects on top of several
212             audio APIs. The interface to Sonix is kept very simple in order to
213             get people up and running with sound as fast as possible.</para>
214
215             <para>The interface to sonix is kept very simple in order to get
216             people up and running with sound as fast as possible. Sonix is
217             reconfigurable allowing audio APIs to be safely swapped out at
218             runtime without the dependent systems noticing. Systems using this
219             layer expect to be completely portable.</para>
220          </section>
221       </section>
222
223       <section>
224          <title>Tweek</title>
225
226          <section>
227             <title>Directory</title>
228
229             <para><filename>juggler/modules/tweek</filename></para>
230          </section>
231
232          <section>
233             <title>Description</title>
234
235             <para>Tweek is a cross-platform, cross-language library consisting
236             of a C++ API and a Java API. Its purpose is to provide a
237             convenient mechanism for a Java-based GUI to interact with a
238             complex C++ library or application. The Tweek GUI can be run in
239             virtual environments, external on a palm top, or on the desktop
240             next to a running application. Each of these methods gives a
241             familiar 2D widget set that can control applications flexibly. To
242             provide this capability, it uses CORBA.</para>
243
244             <para>The Java code in Tweek includes the Tweek Java API and the
245             Tweek JavaBean loader application. The Java API is provided to
246             make the use of JavaBeans and CORBA simpler for programmers. The
247             JavaBean loader application simply loads the Beans it finds and
248             presents them to the user in some sort of structured manner (for
249             example, a collection of icons with web-style navigation).</para>
250          </section>
251       </section>
252
253       <section>
254          <title>VRJConfig</title>
255
256          <para>VRJConfig is the configuration editor for VR Juggler. It is a
257          complete rewrite of VjControl, both in terms of the user interface
258          and the back-end code. The new interface is based on open discussion
259          and feedback from users of VR Juggler 1.0 and VjControl.</para>
260
261          <para>The back-end is much more extensible. It allows users to write
262          plug-in editors to simplify complex editing tasks. User-defined
263          configuration elements can be handled in a much more dynamic manner
264          as well. No modification of VR Juggler or JCCL <quote>system</quote>
265          files must be made to get user-defined elements into the
266          editor.</para>
267
268          <para>VRJConfig is itself a JavaBean that is loaded into the Tweek
269          Java GUI. VRJConfig uses JavaBeans internally to facilitate user
270          extensions. All in all, VRJConfig is a highly dynamic, powerful
271          editor for VR Juggler configurations.</para>
272       </section>
273    </section>
274
275    <section>
276       <title>VR Juggler 2.x</title>
277
278       <para>TODO... (this is the version number of the next release of
279       Juggler)</para>
280    </section>
281 </article>
Note: See TracBrowser for help on using the browser.