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