Volume Rendering with LightningChart
Introduction
An image is produced by the algorithm via the volume data sampling along the tracks of the rays which travel inside the data-set. A simple realization of hardware acceleration for Volume Ray Casting requires the generation of boundaries for a volume object. Usually, they are represented by a cube. High rendering quality with the lack of artifacts, and usage of the interchangeable ray function are the main advantages of this technology.
Ray Function is the core of the algorithm, and provides it with a very high level of flexibility. The technique is very powerful because it specifies the way how the data is sampled and combined. This makes it a very useful tool for a feature extraction.
Loading of data
- Data can be supplied to the Data property as a collection of images which represent slices of the dataset
- Data can be supplied directly to the constructor of the VolumeModel in various ways
- Data can be supplied to the VolumeModel via one of the load functions
Load functions and constructors allow to supply data as a collection of slices (same as Data property do) or as a string with a path to the folder with the slices (as .Net supported image extension). The data can also be provided as a texture map created by our tool. The texture map consists of slices, and its supplement also needs an additional information about the number of slices on the picture. This is required for an efficient usage of GPU input buffers. The texture map can be created by ChartTools.CreateMap function. Direct input of texture map is used to speed up the start of an application for a very big datasheet.
Properties
Ray Function
Accumulation Ray Function collects and combines as much data as possible. The visualization which is produced by this technique looks like a semi-transparent gel. Figure 2. shows an example of Accumulation Ray Function application, visualizing a medical dataset.
Threshold
Slice Range
Sampling Rate Options
SamplingRateOptions contains several options for Sampling Rate Manager. SamplingRateManager is needed to reach the optimal balance between quality and frame rate for a particular hardware. The usage of sampling rate manager has to be turned on by the property Enabled, otherwise, the ManualSamplingRate value would be used. SamplingRateRange defines the boundaries for Sampling Rate Manager. Inertness specifies how rapid are the changes of sampling rate in case of performance changes. TargetFPS is an aim, which should be achieved by sampling rate manager if it is possible.