Following up on the release of VR Juggler 2.0 Beta 1, I am pleased to announce the release of PyJuggler 1.0 Beta 1. This release includes many important additions over the last release in July 2004:
1) Complete code coverage for user-visible application programming interfaces
2) Addition of bindings for vrj::GlContextData<T> to allow for user-defined application-specific data in Python application objects
3) Addition of bindings for cluster::UserData<T> to allow for user-defined shared data types in cluster configurations
4) Addition of docstrings for all classes and nearly all methods and functions
5) Support for Mac OS X (without PyJuggler.vrj.OsgApp, however)
6) Support for pickling of types commonly used with application-specific shared data in cluster configurations
7) Addition of bindings for Sonix in the new module PyJuggler.snx
For more information and downloads, go to the PyJuggler website:
The full source code and binary versions of PyJuggler for Fedora Cora 2 and Microsoft Windows (Visual C++ 7.1) can be downloaded from this page:
I will be posting a build for Mac OS X 10.3 (Panther) later today or tomorrow once I get an installer created.
For more details on 2), 3), and 6) from above, refer to the updated and extended PyJuggler /Getting Started Guide/ on the PyJuggler documentation page:
The pydoc-generated API documentation is available with the pre-compiled releases and from the PyJuggler documentation page.
All pre-compiled releases include a compiled version of PyGMTL 0.4.5, which includes pickling support for all GMTL data types. A pre-compiled copy of Boost.Python from Boost 1.32.0 comes with the VR Juggler 2.0 Beta 1 dependencies. It is highly recommended that the dependency distribution be used. The package for your platform and compiler can be
Please note that the pre-compiled versions of PyJuggler for Fedora Core 2 and Windows were built against Python 2.3 and Open Scene Graph 0.9.8. If you are using Python 2.4, you will have to build Boost.Python and PyJuggler yourself (it will work just fine). If you are using OSG 0.9.7, you will have to rebuild PyJuggler against that version. If you are not using OSG at all, do not worry about this detail. The access to PyJuggler.vrj.OsgApp through PyJuggler is optional, and its availability is determined at run time.
What is PyJuggler?
PyJuggler is an extension to VR Juggler I started in my spare time one weekend in November 2002. Its main purpose is to fulfill a goal I have had for a long time: the ability to write VR Juggler application objects in a scripting language. In this case, the language is Python, a mature and popular object-oriented scripting language.
Using PyJuggler, it is possible to write a VR Juggler application object in Python and load the object into the VR Juggler kernel, which of course is written in C++. Python-based application objects can even be mixed with C++ application objects in the same kernel. Lastly, it is possible to write the equivalent of a C++ main() function in Python so that a developer need never see or write any C++ code to use VR Juggler.
PyJuggler is built on top of the excellent Boost.Python v2 library (http://www.boost.org/libs/python/). Boost.Python makes the mapping between C++ and Python quite simple. It also makes embedding Python in C++ vastly easier than was previously possible.
The support for Mac OS X is new in this release. Getting PyJuggler to work on Mac OS X required improving the way in which the VR Juggler libraries are compiled and linked. To do this, I took advantage of all the work the Boost developers and users did to get Boost compiling and working well on Mac OS X. Nevertheless, there is probably still room to improve the use of PyJuggler on Mac OS X.
At this time, third-party dependencies such as omniORB and Open Scene Graph are not getting along with PyJuggler on Mac OS X. Therefore, PyOSG cannot be used with PyJuggler on Mac OS X, and the CORBA-based features of the VR Juggler C++ code base are not available through PyJuggler. All other platforms are working fine.