Open Inventor for VDS
Bluware Volume Data Store (VDS(tm)) is a storage format for volumetric data that is particularly valuable for very large seismic volumes. VDS is the preferred storage format for seismic volume data in the OSDU Data Platform (Thermo Fisher Scientific is a member of the OSDU Forum). Like the VolumeViz LDM format, VDS has significant advantages for very large volumes:
- Bricked (tiled) data storage allows efficient random access to any part of the data.
- Multiple levels of resolution (LOD levels) allow fast initial display and adapting to the available memory on any platform.
- Parallelized data access allows faster loading using multiple simultaneous requests.
But VDS has additional advantages including:
- Wavelet data compression (loss-less, virtually loss-less, etc) that is very effective for floating point data like SEGY.
- Support for data in a cloud-based object store like AWS S3 (in addition to disk files).
The Open Inventor VDS volume reader supports all the above features and is available as an "OIV Xtra" class in source code. Because VDS stores data as bricks (what we call tiles) and supports multiple levels of resolution, it is a very efficient source of data for VolumeViz. VolumeViz was specifically designed to manage large volumes as bricks (tiles) at multiple levels of resolution. As a result, VDS and VolumeViz are highly complementary technologies. VDS provides fast random access to bricks of data. VolumeViz provides the intelligence to decide which bricks are currently most important to generate the best possible visualization.
An open-source library called OpenVDS that can read and write VDS has been contributed by Bluware Inc. to the OSDU. The Open Inventor VDS reader uses this library. OpenVDS can be included in software products with no encumberments towards Bluware Inc.
Open Inventor toolkit has been the premier 3D visualization engine for E&P applications for over 20 years. If you use one of the major applications in the seismic-to-reservoir workflow, there is a good chance that Open Inventor is generating the visuals. Open Inventor provides fast, quality visualization for slices, horizons, volume rendering, wells and well logs, reservoir models, and more features explicitly implemented to meet E&P requirements. Visualization is highly optimized to use parallelism on CPU and GPU. These features ensure that your visualization meets the expectations of your users. Open Inventor is available for Windows and Linux and can be used with C++, Java, and .NET languages.
A particular strength of Open Inventor is its ability to visualize massive data sets on a single machine (desktop or server), simplifying and reducing deployment costs. In most cases, it is not possible to completely load a seismic data set in the memory available on a single machine. An effective and proven solution is to convert the seismic data to a multi-resolution "bricked" format and visualize it using Open Inventor's volume data management technology. Open Inventor pioneered this technique almost 20 years ago and it is used today in multiple applications on the desktop and in the Cloud.
Open Inventor uses sophisticated heuristics to compute the optimal set of bricks for visualization. This calculation considers what kind of objects are in the scene, the position of the camera, the resolution of the screen, the available CPU and GPU memory, and more. For example, slice rendering only requires the bricks intersected by each slice. Based on the optimal brick set, Open Inventor makes multiple data requests in parallel to take maximum advantage of network connectivity. As shown in the figure, Open Inventor manages a cache of active bricks in CPU and in GPU memory.
The result is a greatly improved user experience in several ways. Users do not have to wait a long time for data to load. They can see an initial image quickly because Open Inventor initially requests lower resolution bricks. The image is automatically "refined" as higher resolution bricks become available. The application is always responsive because bricks are loaded and processed by worker threads running in the background to avoid blocking the application's main thread. User interactions with the scene, for example moving the camera or dragging a slice, are always responsive. This is because Open Inventor maintains performance by automatically reducing image quality and/or the resolution of the bricks used for rendering.
A key feature of Open Inventor's rendering engine is its ability to do mixed resolution rendering. Multi-resolution bricks are not simply "levels of detail." They can be mixed in the same scene. Visual quality and memory usage are optimized by using high-resolution bricks close to the camera and lower resolution bricks far from the camera. Open Inventor also does view-dependent rendering. For example, when the user "zooms in" on part of the volume, rendering automatically uses higher resolution bricks
In addition to prioritizing bricks, memory usage is optimized by various techniques. If the bricks are compressed (the usual case), Open Inventor keeps the compressed data in CPU memory and only expands the bricks in GPU memory for rendering. Volumes and horizons may contain large regions with a constant value. Often this is an "undefined" value. Open Inventor efficiently stores constant value bricks as a single value in memory and the renderer knows to skip over undefined regions.