Features (static version working)
jReality is a visualization and sonification library focused on mathematical and scientific content. It is written in Java and thus supports a wide variety of platforms. The implementation is thread-safe and allows interactive manipulation of the scene.
Like the 3D viewer geomview , jReality has intrinsic support for not only euclidean geometry but also for hyperbolic and elliptic/spherical geometry.
jReality provides a wide set of rendering backends: classes which know how to render jReality scene graphs for a particular library or format. This includes real-time rendering on a desktop and in immersive virtual reality environments, but also a variety of exportable file formats, including RenderMan® for high-quality stills and movies; and PostScript, PDF and SVG for publications.
jReality supports spatialized audio. Various sound sources (e.g., audio files or software synthesizers) can be placed in the 3D scene. The audio can then be rendered on a wide range of speaker setups including stereo, 5.1 surround, and arbitrary Ambisonics rigs. The audio rendering pipeline of jReality includes a physically accurate simulation of sound propagation that implicitly creates Doppler effects, as well as support for effects such as reverberation and distance cues.
In the same way that a jReality backend provides an abstraction for an output format, the jReality tool concept provides an abstraction of an interactive tool. As a result, bringing an application from a desktop to an immersive, distributed environment requires no modification of the application’s source code, even though the user uses a 3-button mouse on the desktop and a pointing wand in the immersive environment. The tool system is based on an abstract layer of virtual devices, which are mapped to actual physical devices via a system-dependent configuration file. Currently drivers are implemented for keyboard, mouse, joystick and Trackd® – supporting all popular motion tracking and immersive input devices such as Ascension MotionStar® or A.R.T. DTrack systems.
jReality includes readers for many 3D file formats (i.e. U3D, OBJ, 3DS, STL, VRML 1.0, Mathematica Graphics 3D, JVX) and export of geometries i. e. for 3D printers. Additionally, we provide our own XML based file format – JRS – which stores the complete jReality scene graph including interactive tools.
These capabilities make jReality a great and easy-to-use platform for 3D content creation and interaction. Typical applications are:
- mathematical / physical real-time interactive experiments
- interactive art and installation
- computer games
Design & Implementation
- Separation of the scene graph and rendering backends
- Metric neutral: projective models of euclidean, hyperbolic, and elliptic space all supported.
- Flexible attribute-inheritance mechanism in scene graph
- Device-independent user interaction
- Thread-safe implementation
- software rendering
- OpenGL (jogl)
- distributed rendering (for CAVE-like environments)
- Pixar’s RenderMan ® backend
- pdf backend
- svg backend
- postscript backend
- Audio input from audio files, hardware ports, Csound, and JACK ports, as well as support for implementing software synthesizers in Java
- Audio output through Java Sound or JACK, the JACK Audio Connection Kit
- Spatialization through stereo, VBAP, second-order planar Ambisonics, and first-order 3D Ambisonics
- Device-independent tools
- Device drivers for desktop- and Cave™ environments
- Flexible tool-activation model
- Swing widgets seamlessly integrated into 3D scenes.
- Separate shaders for point, line and surface elements.
- Built-in tubing for lines and curves
- Reflection maps (with jogl and RenderMan backends)
- 3D-labels with arbitrary fonts
- Mathematical classes for doing euclidean and non-euclidean geometry
- Wide variety of geometry factories:
- OpenGL Shading Language and GPGPU integration in jogl backend