jCAE - VTK
The jCAE project has started a migration process from Java3D to VTK. The main reason why we are giving up java3d is the lack of picking features. The viewer3d module will be replaced by a vtk-util module.
Kitware doesn't provide binary distributions with Java binding enabled so you have to build VTK by yourself. The current version of vtk-util requires at least VTK 5.2, and is also known to work with VTK 5.3 (current CVS HEAD). The latter is an unreleased CVS version. See http://www.vtk.org.
Here are the requirements to build VTK with Java binding:
- patch. You have it in your Linux distro. There are also Windows binaries.
- GNU make and gcc [Linux], or Visual Studio Express [Windows], or any other set of compilation tool supported by cmake.
- OpenGL header and developer libraries
- The Sun Java Development Kit
On Debian/Ubuntu system just do:
apt-get install patch make cmake libgl1-mesa-dev sun-java6-jdk
By developing jCAE we fixed several problems in VTK and sent our patches to VTK Bug Tracker. They are not yet integrated in the VTK CVS repository. You may find them here: https://jcae.svn.sourceforge.net/svnroot/jcae/trunk/vtk-util/patch. The patching commands will look like this:
cd /a/foo/path/VTK patch -p1 < /tmp/depth patch -p1 < /tmp/displayList patch -p1 < /tmp/offset patch -p1 < /tmp/translucent patch -p1 < /tmp/underscore patch -p1 < /tmp/warning patch -p1 < /tmp/light
We are maintaining our patches with the help of quilt; the list of patches above may become outdated, but if you have quilt installed on your machine, you can run the apply.sh shell script under vtk-util/patch/nightly/ or vtk-util/patch/5.2/ like this:
cd /a/foo/path/VTK sh /path/to/vtk-util/patch/nightly/apply.sh
This script calls quilt to apply patches listed in the series file. We maintain our own VTK tree this way, so this method should always work.
Configuring and building
mkdir /a/bar/path/build-vtk cd /a/bar/path/build-vtk cmake /a/foo/path/VTK
This will create a default configuration file name CMakeCache.txt. To build the Java binding you have to modify it. Here is an example for Debian like distribution:
VTK_WRAP_JAVA:BOOL=ON //Path to a program. JAVA_ARCHIVE:FILEPATH=/usr/bin/jar //Path to a file. JAVA_AWT_INCLUDE_PATH:PATH=/usr/lib/jvm/java-6-sun/include/ //Path to a library. JAVA_AWT_LIBRARY:FILEPATH=/usr/lib/jvm/java-6-sun/jre/lib/i386/libjawt.so //Path to a program. JAVA_COMPILE:FILEPATH=/usr/bin/javac //Path to a file. JAVA_INCLUDE_PATH:PATH=/usr/lib/jvm/java-6-sun/include/ //Path to a file. JAVA_INCLUDE_PATH2:PATH=/usr/lib/jvm/java-6-sun/include/linux //Path to a program. JAVA_RUNTIME:FILEPATH=/usr/bin/java
To speed up compilation, you can disable Python and Tcl wrappers, and always use system libraries (if headers and libraries are installed, of course) by setting all VTK_USE_SYSTEM_* variables to ON. Then rerun cmake ../VTK to take the change into account. Finally run make.
The building process on Windows is similar except that the CMakeCache.txt edition can be done through a GUI and that you will probably use Visual Studio instead of GNU Make/GCC.
For more documentation see the VTK wiki.