This page contains some notes and status about the NVidia Vision 3D on Linux. To put it simple the problem is that the monitor is receiving frame sequential images, and without a Quadro the Emitter is synchronised via USB with some visible ghosting effects. The main point is that it is needed a quite high-end NVidia Card because DIN has been dropped in low-end Quadro.
Why do we need it? Because of the setup in the context of the FP7 ReMeDi project in which we use 3D Display with Haptic interaction for Remote Ultrasonography and Palpation [IROS15 Paper]
The key issue is the support of Quad Buffering for non-Quadro devices and the Driver automatic interface to the USB IR Emitter. Windows supports this since 314.07, while Linux is still locked.
Under Windows the API stays in nvstereo.h of the SDK and as seen from one of the project in the resources the API controls the glasses directly (when using USB), and introduced by NVidia (PDF).
The stereo Direct3D API works by creating a side-by-side 3D with the addition of one row at the end with NVSTEREOIMAGEHEADER. This structure contains signature, width, height, bpp and flags.
The OpenGL-Direct3D technique is also used by H3DAPI under Windows
- Project from 2011
- [PDF] NVIDIA’s 2009 SIGGRAPH presentation about 3D Vision
- Forum thread about reverse engineering the 3D Vision kit
- libnvstusb project on SourceForge => my GitHub with changes
- Related instruction page: here
- Bridge library that allows to use NVidia 3D Vision under Windows by rendering the output via Direct3D: here, similar https://gist.github.com/avengerdr/6062614
- Discussion about the header technique http://www.mtbs3d.com/phpbb/viewtopic.php?f=105&t=16310
- Original NVidia Talk about the technique (PDF)
- Exposing OpenGL Quad Buffer to DirectX (here)
- OpenGL Quad Buffer emulation for OpenGL (here)
- Quad buffer interface but then internally rendered as SBS or FS
Recent Programs with Support for NVidia Vision
- CloudCompare: OpenGL Quad Buffer (GL_STEREO)
- H3DAPI: OpenGL-D3D bridge with special row