Class SoVolumeIsosurface
- java.lang.Object
-
- com.openinventor.inventor.Inventor
-
- com.openinventor.inventor.misc.SoBase
-
- com.openinventor.inventor.fields.SoFieldContainer
-
- com.openinventor.inventor.nodes.SoNode
-
- com.openinventor.inventor.nodes.SoShaderProgram
-
- com.openinventor.volumeviz.nodes.SoVolumeShader
-
- com.openinventor.volumeviz.nodes.SoVolumeIsosurface
-
- All Implemented Interfaces:
SafeDisposable
public class SoVolumeIsosurface extends SoVolumeShader
Isosurface property node. This property node causes subsequentSoVolumeRender
nodes to draw isosurfaces instead of classical volume rendering of the volume data defined by the currentSoVolumeData
.This is functionally equivalent to using an
SoVolumeDataDrawStyle
node with the style field set to ISOSURFACE, but is much simpler when you only need to display an iso surface.The isosurfaces are only rendered, not geometrically computed. So it is not possible to directly get the geometry corresponding to the rendered isosurface. (The MeshViz extension includes algorithms to extract an isosurface as geometry, see MoMeshIsosurface.)
The isovalues to display are specified in the
isovalues
field.You may not use both
SoVolumeShader
andSoVolumeIsosurface
with the sameSoVolumeRender
node. However since Open Inventor 7.1 it is possible to use bothSoVolumeRenderingQuality
andSoVolumeIsosurface
withSoVolumeRender
.Remember this is a shader node. The effect will usually be undesirable if it is applied to standard geometry (polygons, lines, etc). Therefore applications should generally keep the volume visualization nodes and standard geometry nodes separate in the scene graph (i.e. under different
SoSeparator
nodes).The multiple fields
SoMaterial.diffuseColor
,SoMaterial.transparency
,SoMaterial.specularColor
, andSoMaterial.shininess
of the currentSoMaterial
specify the material of each isosurface. All isosurfaces share the firstSoMaterial.specularColor
andSoMaterial.shininess
. The first material will be for the first isosurface, the second material for the second isosurface, and so on.Surfaces are lighted with the first directional light found in the scene graph. No other lights affect the isosurface. Note: The isosurfaces are always lighted, regardless of the value of the
SoVolumeRenderingQuality
lighting and deferredLighting fields.The isosurface displays the boundary between 2 different values, similar to the marching cubes algorithms. In other words, a voxel is part of the isosurface if the ray entry and exit values for the voxel are different and include the specified isosurface value in their range. If you render, for example, the isosurface 100 of a volume data containing the value 100 everywhere, nothing will be rendered.
Because of linear interpolation, basic isosurface may not render correctly on segmented dataset like label field. In this case, you should use the
SoVolumeRenderingQuality.segmentedInterpolation
orSoVolumeRenderingQuality.colorInterpolation
fields. Default Linear interpolation may also generate rough result even for scalar datasets. For a smoother surface, you may have to use cubic interpolation. Please refer toSoVolumeShape.interpolation
for details.Because this node is derived from
SoVolumeShader
, IVVR_FIRST_RESERVED_TEXTURE_UNIT applies to it. SeeSoVolumeShader
for more information.Note: The volume size and orientation (like geometry) can be modified by transformation nodes in the scene graph and this in turn modifies the appearance of volume rendering nodes like
SoVolumeIsosurface
. However the same transformation must be applied to the volume data node and all volume rendering nodes associated with that volume. So effectively any transformation nodes that affect the volume must be placed before the volume data node.File format/default:
VolumeIsosurface {
isovalues [] SoGLRenderAction
Sets volume isosurface parameters in the traversal state.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.openinventor.volumeviz.nodes.SoVolumeShader
SoVolumeShader.ShaderPositions
-
Nested classes/interfaces inherited from class com.openinventor.inventor.nodes.SoShaderProgram
SoShaderProgram.GeometryInputTypes, SoShaderProgram.GeometryOutputTypes
-
Nested classes/interfaces inherited from class com.openinventor.inventor.nodes.SoNode
SoNode.RenderModes
-
Nested classes/interfaces inherited from class com.openinventor.inventor.Inventor
Inventor.ConstructorCommand
-
-
Field Summary
Fields Modifier and Type Field Description SoMFFloat
isovalues
Specifies the list of isovalues to display.-
Fields inherited from class com.openinventor.volumeviz.nodes.SoVolumeShader
forVolumeOnly, interpolateOnMove
-
Fields inherited from class com.openinventor.inventor.nodes.SoShaderProgram
bufferObjects, generateTransparency, geometryInputType, geometryOutputType, images, maxGeometryOutputVertices, patchLength, shaderObject, shadowShader, vertexProgramTwoSide
-
Fields inherited from class com.openinventor.inventor.Inventor
VERBOSE_LEVEL, ZeroHandle
-
-
Constructor Summary
Constructors Constructor Description SoVolumeIsosurface()
Constructor.
-
Method Summary
-
Methods inherited from class com.openinventor.volumeviz.nodes.SoVolumeShader
isSupported, isSupported
-
Methods inherited from class com.openinventor.inventor.nodes.SoShaderProgram
addShaderParameterImage, getFragmentShader, getGeometryShader, getNumReservedTextures, getTessellationControlShader, getTessellationEvaluationShader, getVertexShader, setComputeShader, setComputeShader, setFragmentShader, setFragmentShader, setGeometryShader, setGeometryShader, setTessellationControlShader, setTessellationControlShader, setTessellationEvaluationShader, setTessellationEvaluationShader, setVertexShader, setVertexShader
-
Methods inherited from class com.openinventor.inventor.nodes.SoNode
affectsState, callback, copy, copy, distribute, doAction, getAlternateRep, getBoundingBox, getByName, getMatrix, getPrimitiveCount, getRenderEngineMode, getRenderUnitID, GLRender, GLRenderBelowPath, GLRenderInPath, GLRenderOffPath, grabEventsCleanup, grabEventsSetup, handleEvent, isBoundingBoxIgnoring, isOverride, pick, rayPick, search, setOverride, touch, write
-
Methods inherited from class com.openinventor.inventor.fields.SoFieldContainer
copyFieldValues, copyFieldValues, enableNotify, fieldsAreEqual, get, getAllFields, getEventIn, getEventOut, getField, getFieldName, hasDefaultValues, isNotifyEnabled, set, setToDefaults
-
Methods inherited from class com.openinventor.inventor.misc.SoBase
dispose, getName, isDisposable, isSynchronizable, setName, setSynchronizable
-
Methods inherited from class com.openinventor.inventor.Inventor
getNativeResourceHandle
-
-
-
-
Field Detail
-
isovalues
public final SoMFFloat isovalues
Specifies the list of isovalues to display.
-
-