Following up on the release of VR Juggler 2.0 Beta 3, I am pleased to announce the release of PyJuggler 1.0 Beta 2. This release is primarily a bug-fix release relative to 1.0 Beta 1, released in December 2004. The most significant aspect of this release is the update to use PyGMTL 0.4.8, which was released earlier this week. PyGMTL 0.4.8 has dozens of bug fixes and interface enhancements to ensure that the full power of GMTL can be accessed from Python.
For more information and downloads, go to the PyJuggler website:
The full source code and binary versions of PyJuggler for Fedora Cora 3, Mac OS X Tiger, and Microsoft Windows can be downloaded from this page:
PyJuggler documentation can be found here:
The pydoc-generated API documentation is available with the pre-compiled releases and from the above page.
All pre-compiled releases include a compiled version of PyGMTL 0.4.8, 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 3 dependencies. It is highly recommended that the dependency distribution be used. The package for your platform and compiler can be acquired here:
Please note that the pre-compiled versions of PyJuggler for Fedora Core 3 and Windows were built against Python 2.3 and Open Scene Graph 0.9.9. To my knowledge, there is no release of PyOSG that is up to date with the Open Scene Graph 0.9.9 API, but I hope that one will be available soon.
If you are using Python 2.4, you will have to build Boost.Python, PyGMTL, and PyJuggler yourself (it will work just fine). If you are using OSG 0.9.8, 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 exposure of Juggler C++ classes to Python through PyJuggler should be comprehensive enough to allow full-featured VR Juggler application objects to be written in Python using OpenGL. The use of Open Scene Graph depends on the availability of PyOSG. Support for accessing OpenSG will likely be available in a future release sometime later this year.
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.
To use Boost (and Boost.Python specifically) on Mac OS X Tiger (version 10.4), it is necessary to get the in-progress Boost 1.33.0 source from the Boost CVS repository. Boost 1.32.0 will not compile on Mac OS X Tiger without modifications to the Boost build. The VR Juggler 2.0 Beta 3 release for OS X Tiger includes the necessary components of Boost in order for PyJuggler 1.0 Beta 2 to be used on Mac OS X Tiger.