3D texture mapping node. More...
#include <Inventor/nodes/SoTexture3.h>
Public Types | |
enum | Layout { VOLUME = 0, ARRAY = 1 } |
Public Member Functions | |
virtual SoType | getTypeId () const |
SoTexture3 () | |
Static Public Member Functions | |
static SoType | getClassTypeId () |
Public Attributes | |
SoMFFilePathString | filenames |
SoSFImage3 | images |
SoSFEnum | wrapT |
SoSFEnum | wrapR |
SoSFEnum | layout |
Friends | |
class | SoGLTextureImage3Element |
This property node defines a 3D texture map and parameters for that map. This map is used to apply a 3D texture to subsequent shapes as they are rendered.
The texture can be read from the file(s) specified by the filenames field. Once the texture has been read, the images field contains the texture data. However, this field is marked so the image is not written out when the texture node is written to a file. To turn off texturing, set the first value of the filenames field to an empty string ("").
Textures can also be specified in memory by setting the images field to contain the texture data. Doing so resets the filenames field to the empty string.
Simply put, a 3D texture is a set of well-arranged 2D textures. Typically, 3D textures represent a set of image-slices of a given volume of data, and are used for mapping onto pieces of geometry. Note that this is different from direct volume rendering in that 3D textures need to be mapped onto a piece of geometry.
OpenGL requires all images in a 3D texture to have the same dimensions, and each dimension (X, Y, and Z) needs to be a power of 2. Also, images must have the same number of components (grayscale, grayscale with transparency, RGB, or RGB with transparency).
You should take this into account when setting texture coordinates. If your 3D image is not correctly dimensioned, you may want to consider either applying a ratio to your coordinates or adding an SoTexture3Transform node with the field scaleFactor set to compensate.
The quality of the texturing is affected by the textureQuality field of the SoComplexity node. The textureQuality field affects what kind of filtering is done to the texture when it must be minified or magnified. The mapping of a particular texture quality value to a particular OpenGL filtering technique is implementation dependent, and varies based on the texturing performance. If mipmap filtering is required, mipmaps are automatically created using the simple box filter.
Transparency Texture images can contain transparency (alpha values less than 1) and modify the transparency of geometry in the scene. But transparent geometry will not render correctly in the default transparency mode (SCREEN_DOOR). Set the transparency mode to a non-default value, for example DELAYED_BLEND, using the setTransparencyType method in the Viewer class or using an SoTransparencyType node. Also note that some image file formats, for example JPEG, do not support transparency information (alpha channel).
LIMITATIONS
3D textures are only supported by the following shapes:
Only SoIndexedFaceSet shapes automatically compute texture coordinates if they are not specified either by a texture coordinate function (see SoTextureCoordinateFunction) or by explicit texture coordinates (see SoTextureCoordinate3).
filenames | "" |
enableCompressedTexture | FALSE |
images | 0 0 0 0 |
wrapS | REPEAT |
wrapT | REPEAT |
wrapR | REPEAT |
model | MODULATE |
blendColor | 0 0 0 |
enableBorder | FALSE |
borderColor | 0 0 0 1 |
maxAnisotropy | 1.0 |
minFilter | AUTO |
magFilter | AUTO |
useAutoMipmap | FALSE |
internalFormat | AUTO_INTERNAL_FORMAT |
layout | VOLUME |
SoComplexity, SoMaterial, SoTextureCoordinate3, SoTextureCoordinateBinding, SoTextureCoordinateFunction
enum SoTexture3::Layout |
SoTexture3::SoTexture3 | ( | ) |
Creates a texture node with default settings.
static SoType SoTexture3::getClassTypeId | ( | ) | [static] |
Returns the type identifier for this class.
Reimplemented from SoTexture.
virtual SoType SoTexture3::getTypeId | ( | ) | const [virtual] |
Returns the type identifier for this specific instance.
Reimplemented from SoTexture.
friend class SoGLTextureImage3Element [friend] |
Names of file(s) from which to read texture image(s).
The standard image file formats are supported. See SoRasterImageRW for the list. If the filename is not an absolute path name, the list of directories maintained by SoInput is searched. If the texture is not found in any of those directories, then the file is searched for relative to the directory from which the SoTexture3 node was read. For example, if an SoTexture3 node with a filename of "../tofu.rgb" is read from /usr/people/bob/models/food.iv, then /usr/people/bob/tofu.rgb will be read (assuming tofu.rgb isn't found in the directories maintained by SoInput).
All images must have the same dimensions and number of components. Depth (number of slices) is determined by the number of file names.
Note that only 2D image file formats are currently supported. A 3D texture image can be read as a series of 2D image files.
Contains an in-memory representation of the texture map.
It is either the contents of the file(s) read from filenames, an image read directly from an Open Inventor file, or an image set programmatically using the methods provided by SoSFImage3.
Indicates whether the data layout is a volumetric texture VOLUME or an array of bi-dimensional textures ARRAY.
Use enum SoTexture3::Layout. Default is VOLUME.
Note that if you use a SoTexture3 with a SoShaderProgram, the layout value affects the type of sampler in GLSL: if the layout value is VOLUME, the sampler type is sampler3D; if the layout value is ARRAY, the sampler type is sampler2DArray.
NOTE: field available since Open Inventor 9.6Indicates what to do when texture coordinates in the R (depth) direction lie outside the range 0-1.
Use enum SoTexture::Wrap. Default is REPEAT.
Indicates what to do when texture coordinates in the T (vertical) direction lie outside the range 0-1.
Use enum SoTexture::Wrap. Default is REPEAT.