root/juggler/branches/2.0/doc/README.xml

Revision 13784, 11.1 kB (checked in by patrickh, 5 years ago)

Fixed some typos and some out-of-date content. Added a short section about
VRJConfig.

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