SourceForge has been redesigned. Learn more.

PyJuggler 0.9.0 is available

Hot on the heels of the VR Juggler 2.0 Alpha 4 release, I am pleased to announce the release of PyJuggler 0.9.0. Windows support has been dramatically improved, and bindings for vrj::OsgApp are now included by default. If you do not have Open Scene Graph installed, do not worry; its use is entirely optional. Those who do have OSG installed can take advantage of it by extending vrj.OsgApp.

For more information and downloads, go to the following website:

The full source code and binary versions of PyJuggler for Fedora Cora 1, Red Hat Linux 8.0, and Microsoft Windows (Visual C++ 7.1) can be downloaded from this page:

All three include a compiled version of PyGMTL. A pre-compiled copy of Boost.Python from Boost 1.31.0 comes with the VR Juggler 2.0 Alpha 4 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 all the pre-compiled versions of PyJuggler were built against Python 2.2. If you are using Python 2.3, you will have to build Boost.Python and PyJuggler yourself.

What is PyJuggler?
PyJuggler is an extension to VR Juggler I started in my spare time one weekend about a year and a half ago. 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 ( Boost.Python makes the mapping between C++ and Python quite simple. It also makes embedding Python in C++ vastly easier than was previously possible.

Current Status
Since PyJuggler 0.1 was released in March 2003, a lot of work has gone into improving the code base. Version 0.1 was a proof of concept, but this new version is much closer to being a robust, full-fledged tool. Class coverage is now considered complete, and nearly all of GMTL can be accessed through the PyGMTL bindings (available with the GMTL source).

PyJuggler 0.1 was very unstable because of multi-threading issues, and those have long since been resolved. Detailed bug reports relating to application crashes would be helpful in improving PyJuggler further.

The vrj::OsgApp bindings are new in this release and have not yet been tested with PyOSG. Since PyJuggler and PyOSG are fundamentally based on Python/C, everything should work fine. However, there are known incompatibilities with Boost.Python and some other Python bindings libraries when trying to pass objects between the two. In most cases, it should not be necessary for a vrj.OsgApp subclass to have to worry about OSG objects being passed back and forth between C++ and Python, but time and use will tell if this is going to be an issue or not.

Known Problems
Trying to compile PyGMTL with Visual C++ 7.0 results in numerous compile errors not seen with other C++ compilers (GCC and MIPSpro). It is unclear whether the problems are with the PyGMTL code or with the compiler. At this time, Visual C++ 7.1 (from .NET 2003) is required for both PyGMTL and PyJuggler.

Posted by Patrick Hartling 2004-05-05

Log in to post a comment.