It gives me great pleasure to announce the release of PyJuggler 1.0.0. This release is fully compatible with VR Juggler 2.0.0 and is ready for widespread use. Since PyJuggler 1.0 Beta 2 was released, many bugs were fixed in classes introduced in PyJuggler 1.0 Beta 1. These classes were primarily in the modules PyJuggler.snx and PyJuggler.gadget, so they may not have seen too much use yet. Users updating to PyJuggler 1.0.0 are strongly encouraged to update to PyGMTL 0.4.9 as well. That release has a couple of important bug fixes relative to PyGMTL 0.4.8.
For more information and downloads, go to the PyJuggler website:
The full source code and binary versions of PyJuggler for Fedora Cora 4 (x86), Red Hat Enterprise Linux 4 (AMD64/EM64T), Red Hat Enterprise Linux 3 for SGI Prism (IA-64), Mac OS X Tiger, and Microsoft Windows can be downloaded from this page:
Please note that there are two separate builds for Windows: one for Python 2.3 and one for Python 2.4.
PyJuggler documentation can be found here:
The pydoc-generated API documentation for PyJuggler and PyGMTL is available with the pre-compiled releases and from the above page.
All pre-compiled releases include a compiled version of PyGMTL 0.4.9, 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.0 dependencies. It is highly recommended that the dependency distribution be used.
The pre-compiled versions of PyJuggler (except the Mac OS X version) were built against Open Scene Graph 0.9.9. To my knowledge, there is not yet a full 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 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.
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.0 release for OS X Tiger includes the necessary components of Boost in order for PyJuggler 1.0.0 to be used on Mac OS X Tiger.
There is a branch in the PyJuggler CVS module to allow bug fix releases of PyJuggler 1.0 to be made as necessary. The HEAD branch of the CVS module is for the development of PyJuggler 1.1--the code that will become PyJuggler 1.2. PyJuggler 1.1 already has some significant changes relative to PyJuggler 1.0 to improve performance and memory efficiency. Unfortunately, these changes will not be merged to the PyJuggler 1.0 branch because they would cause a major change to the (internal) run-time behavior of PyJuggler, and this could introduce a highly undesirable degradation of stability. The changes will be allowed to mature in PyJuggler 1.1 to be released in PyJuggler 1.2.
Other than that, PyJuggler 1.1 will be kept in sync with VR Juggler 2.1, and new features will be added when the need arises.