13

Is is possible to run a Java3D application on Nvidia 3D Vision hardware?

I've got an existing Java3D application that can run in stereoscopic 3D. In the past, I've always run the application on Quadro cards using the OpenGL renderer and quad buffered stereo.

I now have access to a laptop with the nVidia 3D Vision system (with a GeForce GTX 460M). From the documentation, it seems like it should be possible to run my application in stereo if I use the DirectX bindings and let the nVidia drivers take care of the stereo, however, this does not seem to be the case.

If I run a Java3D application with j3d.rend=d3d, the nVidia 3D Vision API doesn't seem to recognize it as a DirectX application.

How can I get the nVidia 3D Vision drivers to detect a Java3D application and render in stereoscopic 3D?

JohnnyO
  • 2,958
  • 15
  • 30

4 Answers4

6

I'm disappointed that so far everyone has dismissed this as impossible right out of the gate. I've been working on this for the past several days, and made some headway. So far, I've found that it is possible, but with a few caveats:

  1. You need the latest drivers from nVidia (280.29 as of this writing)
  2. You need to use the Direct3D renderer, not the OpenGL renderer (-Dj3d.rend=d3d)
  3. You need to force Direct3D to run in fullscreen mode. (-Dj3d.fullscreen=REQUIRED)
  4. You need to run using a ConfiguredUniverse in fullscreen mode (I'm using the provided j3d-1x1.cfg that is available in the Java3D documentation)

In order to get it working on a 64-bit machine, I had to use the 64-bit dlls for Java3D, which someone has helpfully provided on the Java3D forums (http://home.java.net/node/705510) This may or may not be required on a 32-bit system.

Future releases of the nVidia drivers promise improved support for windowed-mode stereo, so its possible that this will become easier in the future (possibly eliminating the need for option 3 and/or 4 above)

I'll also investigate if rebuilding the Java3D source with some additional nVidia bindings can eliminate the fullscreen requirement, and repost with the results.

JohnnyO
  • 2,958
  • 15
  • 30
1

Java3D uses something called "Quadbuffer Stereo", i.e. two distinct doublebuffered framebuffers, one for the left and one for the right eye. NVidia considers this thing "professional grade", although it is impossible to to proper stereoscopy without accurate control of the content of both eyes.

3D Vision however inserts some shaders to create an in-situ stereo separation. This however only works with programs giving it some hints through the 3D Vision API. Java3D doesn't.

Let's just hope that Microsoft will indeed push Quadbuffered Stereo as a core requirement of DirectX 12 Graphics, so that NVidia has no longer lame excuses to keep this from "consumer grade" OpenGL.

datenwolf
  • 149,702
  • 12
  • 167
  • 273
  • 1
    True, but 3D vision is supposed to work with any DirectX programs, with or without NVision hints. I was wondering if anyone had any success with 3D vision and the DirectX bindings. – JohnnyO Aug 15 '11 at 13:14
  • @JohnnyO: Java3D builds upon OpenGL, not DirectX. – datenwolf Aug 15 '11 at 17:58
  • 1
    @datenweolf Actually, Java3D has OpenGL and DirectX backends (as well as a pure JOGL implementation) I'm specifically interested in getting the 3D Visison hardware working when j3d.rend=d3d (I've edited the question to include this tidbit) – JohnnyO Aug 17 '11 at 01:44
0

This is may outdated, but I have the binary DirectX libs for Java3D 64. It is the j3dcore-d3d.dll . If someone needs it, send a message to me.

From readme.txt file :

======

README

Java3D DirectX 9.0 Renderer for 64bits

January, 2010

Hi

The companion j3dcore-d3d.dll is a Java3D renderer for Microsoft DirectX D3D in 64bit. This uses exactly same source code from 32bits, but compiled with Visual studio 2005 for Windows 64bits.

It was tested with Windows XP Pro. 64bit Edition, Vista 64 and Windows-7 64. In both nVidia and ATI drivers.

Usage

Drop the j3dcore-d3d.dll in the same folder you have j3dcore-ogl.dll.

Dependency

Use it with a 64bit JRE. It requires Java3D for Windows AMD 64, available at https://java3d.dev.java.net/binary-builds.html

It also needs a DirectX driver update You can get it http:\www.microsoft.com\directx Current full link for DirectX Web Setup : http://www.microsoft.com/downloads/details.aspx?familyid=2DA43D38-DB71-4...

This last link points to a very small web updater for DirectX runtime.

Disclaimer

This is for testing purposes only. Use it at your own risk. This IS NOT endorsed or supported by Sun, Oracle or any other company.

Alex Byrth
  • 1,150
  • 12
  • 19
0

java3D does not support the 3d vision api but it may work with any direct x program

Olafgarten
  • 25
  • 1
  • 5