Hey folks,
 
Our software uses Java 3D to do some offline preprocessing of 3D data, before it is viewed using a Java 3D-based applet.  This preprocessing is typically done in the background on a remote Windows server (nothing is actually displayed during this process).  Part of the preprocessing phase involves the use of two Java 3D utility classes, j3d.utils.compression.GeometryCompressor and j3d.utils.geometry.Stripifier.
 
We have noticed that the preprocessing steps can crash the JVM without warning if a bad graphics card driver is installed on the server.  My understanding is that the only way that Java 3D can interact with the graphics card driver (and possibly induce such a crash) is through native code, specifically j3d.dll.  This DLL is linked to opengl32.dll, which can invoke the driver.
 
So my question is this: When does Java 3D use native code? (in other words, under what circumstances does Java 3D load j3d.dll?)  I don't think that using GeometryCompressor or Stripifier should invoke native code, but perhaps we are doing something else that causes Java 3D to load that DLL.  This is probably a question that only someone familiar with the Java 3D code would be able to answer (e.g. a member of the team), but I'd also like to hear from anyone who uses Java 3D for offline processing.
 
Ideally, we want a situation where we use Java 3D in the background without actually invoking any native code, which could be dependent on the graphics card driver (in other words, we don't want the server's graphics hardware to impact our preprocessing steps).
 
Thanks in advance for any help.
 
- Mauricio

Reply via email to