The InvAlgorithms module provides useful algorithms for arithmetic operations, data conversions, data extraction, etc.
All the algorithms are located in the directory Inventor/algorithms. They can be used on any type of SoBufferObject( C++ | Java | .NET ):
SoArithmetic( C++ | Java | .NET ): The arithmetic class provides methods to perform arithmetic operations on buffer objects like Add, Mult, Scale, etc.
SoConversion( C++ | Java | .NET ): The conversion class provides methods to perform data type conversions on buffer objects. For example to convert a buffer of bytes to a buffer of floats.
SoConvolution( C++ | Java | .NET ): The convolution class provides methods to perform separable convolutions on the data stored in a buffer object.
SoSeismic( C++ | Java | .NET ): The seismic class provides methods specific to seismic trace data, for example computing complex trace attributes on a buffer of data.
The class SoAlgorithms( C++ | Java | .NET ) is a class designed to provide generic access to algorithms developed for specific hardware using a “plugin” mechanism described in the following section.
The InvAlgorithms module provides a mechanism to develop different versions of the algorithms for specific hardware. This mechanism is provided by the class SoAlgorithms( C++ | Java | .NET ).
The standard algorithms, provided by the InvAlgorithms module, use the SSE2 instruction set for fast conversions (used internally for example by the SoDataRange( C++ | Java | .NET ) node in VolumeViz). SSE2 instructions are used by default but it’s possible to disable this by setting the preference OIV_NO_SSE to 1.