I am pleased to announce the availability of the VR Juggler 3.0.0 release candidate. Two months of testing VR Juggler 3.0 Beta 1 smoothed things out so that this release candidate should represent the final state of the code for the formal 3.0.0 release. The source code for this release can be found here:
NOTE: Flagpoll 0.9.4 or newer is required to build this VR Juggler release from source code. Version 0.9.1 was the previous minimum required version, but recent bug fixes in Flagpoll pertain to ensuring that VR Juggler can be built correctly on Mac OS X in all circumstances.
VR Juggler 3.0 represents the culmination of three years of development and testing, and as a result, this is probably the most well tested VR Juggler version yet. A great deal of care was taken to ensure that this would be a solid release because of its significance. Specifically, VR Juggler 3.0 has a totally redesigned cluster infrastructure.
The new cluster infrastructure is based on a formal client/server model rather than the peer-to-peer approach with an ad hoc server used by VR Juggler 2.x. The new architecture is vastly more scalable and more performant. It should also prove easier to configure in at least two ways. First, the server node distributes configuration information to clients rather than requiring users to maintain per-machine configuration arrangements. Second, it is no longer necessary to identify which cluster node is hosting a device because all devices have to be hosted by the server.
Since the 3.0 Beta 1 release, there have been several fixes and enhancements including the following:
Build system compatibility fixes for Autoconf 2.65 and newer.
Build fixes for GCC 4.4.
Fixes for the new mouse locking behavior.
Fixed window management quirks.
Added a width-only option to the auto corner update feature for display windows.
Fixed detection of VRPN in the Gadgeteer drivers build system.
Added forward compatibility shims for Gadgeteer 2.1 API changes (see the 3.0 Migration Guide for details).
Fixed VRJConfig execution problems.
Other highlights of VR Juggler 3.0 include the following:
Support for OpenGL 3.0 contexts.
NSPR is no longer a dependency on Windows. Boost.Asio is now used for networking, and that means that Boost 1.35.0 is the minimum required version of Boost on Windows. Using 1.40.0 or newer is highly recommended. For 64-bit Windows builds, 1.40.0 is the minimum required version.
Use of a CORBA Naming Service by Tweek is now optional as direct connections to Subject Manager servants are now supported.
VRJConfig now uses a direct connection to the configuration subject manager, thus making dynamic run-time reconfiguration easier to utilize.
Use of reference counted memory (through boost::shared_ptr<T>) has been expanded to help protect against dangling references and memory leaks. This pertains mostly to input device objects and input proxy objects.
Simulated analog devices now have an optional "auto-return" feature that can be enabled through the configuration.
Mouse locking use and behavior within keyboard/mouse input areas (i.e., windows) is now more configurable, and it can be controlled by application code when necessary.
Two new Open Scene Graph application object types have been added: vrj::osg::AppViewer and vrj::osg::AppPager. See the documentation for the respective classes for more details.
The OpenSG application object class, vrj::opensg::App, support both OpenSG 1.8 and 2.0. The decision about which API to use is made at compile time.
Many improvements have been made to the use of Cocoa on Mac OS X.
There are some "breaking" changes relative to VR Juggler 2.x of which application programmers need to be aware. They include the following:
The X,Y position for mouse events is now reported using a lower left-hand corner origin to match the window positioning convention of Juggler.
Mouse scroll events in the X and Y axes are now treated as first class mouse events rather than pretending that they are button presses.
Classes for each Draw Manager implementation now use distinct C++ namespaces. Backward compatibility typedefs have been included to aid with migrating code.
Finally, this release marks the first time that support for legacy features has been removed. The following may be of interest to users with old equipment or operating systems:
Support for SPROC threads on IRIX has been removed.
Support for Mac OS X 10.3 has been removed. 10.4 (Tiger) is now the minimum required version.
Support for AudioWorks has been removed.
Support for Visual C++ 7.1 (.NET 2003) has been dropped. Visual C++ 8.0 (2005) is the minimum supported version now.
As usual, there are changes to configuration files required to take advantage of new features. For details in migrating applications and configurations from VR Juggler 2.2 to 3.0, please see the migration page on the wiki:
Please submit bug reports through the issue tracker here:
Patrick L. Hartling
Senior Software Engineer, Priority 5