Click or drag to resize
SoVolumeIsosurface Class

Isosurface property node.

Inheritance Hierarchy

Namespace: OIV.VolumeViz.Nodes
Assembly: OIV.VolumeViz (in OIV.VolumeViz.dll) Version: 2024.2.0.0 (2024.2.0)
Syntax
public class SoVolumeIsosurface : SoVolumeShader

The SoVolumeIsosurface type exposes the following members.

Constructors
  NameDescription
Public methodSoVolumeIsosurface

Constructor.

Top
Methods
  NameDescription
Public methodAddShaderParameterImage

Convenience method to create an OIV.Inventor.Nodes.SoShaderParameterImage with the specified name and value and add it to this shader program.

(Inherited from SoShaderProgram.)
Public methodAffectsState

Returns true if a node has an effect on the state during traversal.

(Inherited from SoNode.)
Public methodCallback
(Inherited from SoNode.)
Public methodCopy
Calls Copy(false).
(Inherited from SoNode.)
Public methodCopy(Boolean)

Creates and returns an exact copy of the node.

(Inherited from SoNode.)
Public methodCopyFieldValues(SoFieldContainer)
Calls CopyFieldValues(fc, false).
(Inherited from SoFieldContainer.)
Public methodCopyFieldValues(SoFieldContainer, Boolean)

Copies the contents of fc's fields into this object's fields.

(Inherited from SoFieldContainer.)
Public methodDispose
Releases all resources used by SoDisposable.
(Inherited from SoDisposable.)
Public methodDistribute
(Inherited from SoNode.)
Public methodDoAction
(Inherited from SoShaderProgram.)
Public methodEnableNotify

Notification at this Field Container is enabled (if flag == true) or disabled (if flag == false).

(Inherited from SoFieldContainer.)
Public methodEquals
Determines whether the specified Object is equal to the current Object.
(Inherited from Object.)
Public methodFieldsAreEqual

Returns true if this object's fields are exactly equal to fc's fields.

(Inherited from SoFieldContainer.)
Public methodGet

Returns the values of the fields of this object in the Open Inventor ASCII file format in the given string.

(Inherited from SoFieldContainer.)
Public methodGetAllFields

Returns a list of fields, including the eventIn's and eventOut's.

(Inherited from SoFieldContainer.)
Public methodGetAlternateRep

This method is called by actions to allow the node to provide an "alternate representation" when appropriate (typically depending on the action type).

(Inherited from SoNode.)
Public methodGetBoundingBox
(Inherited from SoShaderProgram.)
Public methodGetEventIn

Returns a the eventIn with the given name.

(Inherited from SoFieldContainer.)
Public methodGetEventOut

Returns the eventOut with the given name.

(Inherited from SoFieldContainer.)
Public methodGetField

Returns a the field of this object whose name is fieldName.

(Inherited from SoFieldContainer.)
Public methodGetFieldName

Returns the name of the given field in the fieldName argument.

(Inherited from SoFieldContainer.)
Public methodGetFields

Appends references to all of this object's fields to resultList, and returns the number of fields appended.

(Inherited from SoFieldContainer.)
Public methodGetFragmentShader

Returns the fragment shader at the specified position.

(Inherited from SoShaderProgram.)
Public methodGetGeometryShader

Returns the geometry shader at the specified position.

(Inherited from SoShaderProgram.)
Public methodGetHashCode
Overrides GetHashCode().
(Inherited from SoNetBase.)
Public methodGetMatrix
(Inherited from SoNode.)
Public methodGetName

Returns the name of an instance.

(Inherited from SoBase.)
Public methodGetPrimitiveCount
(Inherited from SoNode.)
Public methodGetRenderEngineMode

Returns the supported Render engine mode.

(Inherited from SoNode.)
Public methodGetRenderUnitID
(Inherited from SoNode.)
Public methodGetStringName (Inherited from SoBase.)
Public methodGetTessellationControlShader

Returns the tessellation control shader at the specified position.

(Inherited from SoShaderProgram.)
Public methodGetTessellationEvaluationShader

Returns the tessellation evaluation shader at the specified position.

(Inherited from SoShaderProgram.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodGetVertexShader

Returns the vertex shader at the specified position.

(Inherited from SoShaderProgram.)
Public methodGLRender
(Inherited from SoShaderProgram.)
Public methodGLRenderBelowPath
(Inherited from SoNode.)
Public methodGLRenderInPath
(Inherited from SoNode.)
Public methodGLRenderOffPath
(Inherited from SoNode.)
Public methodGrabEventsCleanup
(Inherited from SoNode.)
Public methodGrabEventsSetup
(Inherited from SoNode.)
Public methodHandleEvent
(Inherited from SoNode.)
Public methodHasDefaultValues

Returns true if all of the object's fields have their default values.

(Inherited from SoFieldContainer.)
Public methodIsBoundingBoxIgnoring

This method is used by getBoundingBox action traversal to know if the current node must be traversed or not, ie the bounding should be ignored.

(Inherited from SoNode.)
Public methodIsNotifyEnabled

Notification is the process of telling interested objects that this object has changed.

(Inherited from SoFieldContainer.)
Public methodIsOverride

Returns the state of the override flag.

(Inherited from SoNode.)
Public methodIsSynchronizable

Gets the ScaleViz synchronizable state of this object.

(Inherited from SoBase.)
Public methodPick
(Inherited from SoShaderProgram.)
Public methodRayPick
(Inherited from SoNode.)
Public methodSearch
(Inherited from SoNode.)
Public methodSet

Sets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format.

(Inherited from SoFieldContainer.)
Public methodSetComputeShader(Int32, String)
Calls SetComputeShader(pos, filenameOrSource, OIV.Inventor.Nodes.SoShaderObject.SourceTypes( .SoShaderObject.FILENAME )).
(Inherited from SoShaderProgram.)
Public methodSetComputeShader(Int32, String, SoShaderObjectSourceTypes)

Convenience method to create a compute shader with the specified filename and add it at the specified position.

(Inherited from SoShaderProgram.)
Public methodSetFragmentShader(Int32, String)
Calls SetFragmentShader(pos, filenameOrSource, OIV.Inventor.Nodes.SoShaderObject.SourceTypes( .SoShaderObject.FILENAME )).
(Inherited from SoVolumeShader.)
Public methodSetFragmentShader(Int32, String, SoShaderObjectSourceTypes)

Creates a fragment shader with the given filename and add it at the given pos.

(Inherited from SoVolumeShader.)
Public methodSetGeometryShader(Int32, String)
Calls SetGeometryShader(pos, filenameOrSource, OIV.Inventor.Nodes.SoShaderObject.SourceTypes( .SoShaderObject.FILENAME )).
(Inherited from SoShaderProgram.)
Public methodSetGeometryShader(Int32, String, SoShaderObjectSourceTypes)

Convenience method to create a geometry shader with the specified filename and add it at the specified position.

(Inherited from SoShaderProgram.)
Public methodSetName (Inherited from SoBase.)
Public methodSetOverride

Turns the override flag on or off.

(Inherited from SoNode.)
Public methodSetSynchronizable

Sets this to be a ScaleViz synchronizable object.

(Inherited from SoBase.)
Public methodSetTessellationControlShader(Int32, String)
Calls SetTessellationControlShader(pos, filenameOrSource, OIV.Inventor.Nodes.SoShaderObject.SourceTypes( .SoShaderObject.FILENAME )).
(Inherited from SoShaderProgram.)
Public methodSetTessellationControlShader(Int32, String, SoShaderObjectSourceTypes)

Convenience method to create a tessellation control shader with the specified filename and add it at the specified position.

(Inherited from SoShaderProgram.)
Public methodSetTessellationEvaluationShader(Int32, String)
Calls SetTessellationEvaluationShader(pos, filenameOrSource, OIV.Inventor.Nodes.SoShaderObject.SourceTypes( .SoShaderObject.FILENAME )).
(Inherited from SoShaderProgram.)
Public methodSetTessellationEvaluationShader(Int32, String, SoShaderObjectSourceTypes)

Convenience method to create a tessellation evaluation shader with the specified filename and add it at the specified position.

(Inherited from SoShaderProgram.)
Public methodSetToDefaults

Sets all fields in this object to their default values.

(Inherited from SoFieldContainer.)
Public methodSetVertexShader(Int32, String)
Calls SetVertexShader(pos, filenameOrSource, OIV.Inventor.Nodes.SoShaderObject.SourceTypes( .SoShaderObject.FILENAME )).
(Inherited from SoVolumeShader.)
Public methodSetVertexShader(Int32, String, SoShaderObjectSourceTypes)

Creates a vertex shader with the given filename and adds it at the given pos.

(Inherited from SoVolumeShader.)
Public methodToString
Converts this SoBase structure to a human readable string.
(Inherited from SoBase.)
Public methodTouch

Marks an instance as modified, simulating a change to it.

(Inherited from SoNode.)
Public methodWrite
(Inherited from SoNode.)
Top
Properties
  NameDescription
Public propertybufferObjects

Specifies a list of OIV.Inventor.Nodes.SoShaderParameterBufferObject to use with this shader.

(Inherited from SoShaderProgram.)
Public propertyforVolumeOnly

Set to true if the shader should be called for volume rendering (OIV.VolumeViz.Nodes.SoVolumeRender).

(Inherited from SoVolumeShader.)
Public propertygenerateTransparency

If set to true, then shapes affected by this shader will be considered transparent.

(Inherited from SoShaderProgram.)
Public propertygeometryInputType

Specifies the input primitive type of the current geometry shader if any (not used otherwise).

(Inherited from SoShaderProgram.)
Public propertygeometryOutputType

Specifies the output primitive type of the current geometry shader if any (not used otherwise).

(Inherited from SoShaderProgram.)
Public propertyimages

Specifies a list of OIV.Inventor.Nodes.SoShaderParameterImage nodes to use with this shader.

(Inherited from SoShaderProgram.)
Public propertyinterpolateOnMove

When set to false, interpolation between LDM tiles (across the tile boundary) is not done when rendering in interactive mode.

(Inherited from SoVolumeShader.)
Public propertyIsDisposable
ISafeDisposable interface implementation.
(Inherited from SoDisposable.)
Public propertyisovalues

Specifies the list of isovalues to display.

Public propertymaxGeometryOutputVertices

Set the maximum number of vertices the geometry shader will emit in one invocation.

(Inherited from SoShaderProgram.)
Public propertypatchLength

Set the length of the fixed-size collection of vertices used by tessellation shaders.

(Inherited from SoShaderProgram.)
Public propertyshaderObject

Specifies the list of shader objects (i.e., vertex shaders, geometry and fragment shaders) which form the shader program.

(Inherited from SoShaderProgram.)
Public propertyshadowShader

Only used when an OIV.Inventor.Nodes.SoShadowGroup is active.

(Inherited from SoShaderProgram.)
Public propertyUserData
Gets or sets the user data to be contained by the field container.
(Inherited from SoFieldContainer.)
Public propertyvertexProgramTwoSide

If set to true, vertex shaders will operate in two-sided color mode.

(Inherited from SoShaderProgram.)
Top
Remarks

This property node causes subsequent OIV.VolumeViz.Nodes.SoVolumeRender nodes to draw isosurfaces instead of classical volume rendering of the volume data defined by the current OIV.VolumeViz.Nodes.SoVolumeData.

This is functionally equivalent to using an OIV.VolumeViz.Nodes.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 OIV.VolumeViz.Nodes.SoVolumeIsosurface.isovalues field.

You may not use both OIV.VolumeViz.Nodes.SoVolumeShader and OIV.VolumeViz.Nodes.SoVolumeIsosurface with the same OIV.VolumeViz.Nodes.SoVolumeRender node. However since Open Inventor 7.1 it is possible to use both OIV.VolumeViz.Nodes.SoVolumeRenderingQuality and OIV.VolumeViz.Nodes.SoVolumeIsosurface with OIV.VolumeViz.Nodes.SoVolumeRender.

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 OIV.Inventor.Nodes.SoSeparator nodes).

The multiple fields OIV.Inventor.Nodes.SoMaterial.diffuseColor, OIV.Inventor.Nodes.SoMaterial.transparency, OIV.Inventor.Nodes.SoMaterial.specularColor, and OIV.Inventor.Nodes.SoMaterial.shininess of the current OIV.Inventor.Nodes.SoMaterial specify the material of each isosurface. All isosurfaces share the first OIV.Inventor.Nodes.SoMaterial.specularColor and OIV.Inventor.Nodes.SoMaterial.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 OIV.VolumeViz.Nodes.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 OIV.VolumeViz.Nodes.SoVolumeRenderingQuality.segmentedInterpolation or OIV.VolumeViz.Nodes.SoVolumeRenderingQuality.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 to OIV.VolumeViz.Nodes.SoVolumeShape.interpolation for details.

Because this node is derived from OIV.VolumeViz.Nodes.SoVolumeShader, IVVR_FIRST_RESERVED_TEXTURE_UNIT applies to it. See OIV.VolumeViz.Nodes.SoVolumeShader 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 OIV.VolumeViz.Nodes.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 []
}

ACTION BEHAVIOR

OIV.Inventor.Actions.SoGLRenderAction Sets volume isosurface parameters in the traversal state.

See Also