vtkVolumeMapper inherits from vtkMapper. A volume mapper that performs ray casting on the GPU using fragment programs.
Methods
createRadonTransferFunction
Create an absorption transfer function to set to the mapper when blend mode is RADON. The transfer function is a linear ramp between the lowest material with absorption and the material with maximum absorption. Voxel values lower than the lowest material with absorption will have no absorption associated. Voxel values higher than the maximum absorbent material will have the same absorption than the max absorbent material. The associated color transfer function is typically black to white between 0 and 1. An alternative is to create your own transfer function with HU/absorption pairs. e.g. const ofun = vtkPiecewiseFunction.newInstance(); ofun.addPointLong(-1000,0, 1, 1); // air, “1, 1)” to flatten the function ofun.addPoint(-10, 0.01); // fat ofun.addPoint(-10, 0.015); // water ofun.addPointLong(1000, 0.03, 1, 1); // bone ofun.addPoint(3000, 1); // silver
Argument
Type
Required
Description
firstAbsorbentMaterialHounsfieldValue:
number
Yes
Define minimum voxel value (in hounsfield unit) with non zero absorption (e.g. water (0), fat(-10)…). Any voxel value lower than this parameter will have no absorption (absorption === 0)
firstAbsorbentMaterialAbsorption:
number
Yes
Absorption attributed to voxels with firstAbsorbentMaterialHounsfieldValue (e.g. 0 or 0.01)
maxAbsorbentMaterialHounsfieldValue:
number
Yes
Define maximum voxel value (in hounsfield unit) with increasing absorption (e.g. bone (1000))
maxAbsorbentMaterialAbsorption:
number
Yes
Absorption attributed to voxels >= maxAbsorbentMaterialHounsfieldValue (e.g. 0.03)
outputTransferFunction:
vtkPiecewiseFunction
Yes
To provide optionally to avoid instantiating a new transfer function each time.
extend
Method use to decorate a given object (publicAPI+model) with vtkVolumeMapper characteristics.
Argument
Type
Required
Description
publicAPI
Yes
object on which methods will be bounds (public)
model
Yes
object on which data structure will be bounds (protected)
initialValues
IVolumeMapperInitialValues
No
(default: {})
getAnisotropy
Get anisotropy of volume shadow scatter
getAutoAdjustSampleDistances
getAverageIPScalarRange
getAverageIPScalarRangeByReference
getBlendMode
getBlendModeAsString
getBounds
Get the bounds for this mapper as [xmin, xmax, ymin, ymax,zmin, zmax].
getGlobalIlluminationReach
Get the global illumination reach of volume shadow
getImageSampleDistance
Sampling distance in the XY image dimensions. Default value of 1 meaning 1 ray cast per pixel. If set to 0.5, 4 rays will be cast per pixel. If set to 2.0, 1 ray will be cast for every 4 (2 by 2) pixels. T
getInitialInteractionScale
Get at what scale the quality is reduced when interacting for the first time with the volume It should should be set before any call to render for this volume The higher the scale is, the lower the quality of rendering is during interaction
getInteractionSampleDistanceFactor
Get by how much the sample distance should be increased when interacting This feature is only implemented in the OpenGL volume mapper
getLAOKernelRadius
Get kernel radius for local ambient occlusion
getLAOKernelSize
Get kernel size for local ambient occlusion
getLocalAmbientOcclusion
Get local ambient occlusion flag
getMaximumSamplesPerRay
getSampleDistance
Get the distance between samples used for rendering
getVolumeShadowSamplingDistFactor
Get the multipler for volume shadow sampling distance
getVolumetricScatteringBlending
Get the blending coefficient that interpolates between surface and volume rendering
newInstance
Method use to create a new instance of vtkVolumeMapper
setAnisotropy
Set anisotropy of volume shadow scatter. This function is only effective when volumeScatterBlendCoef is greater than 0. Default value of 0.0 means light scatters uniformly in all directions. Value of -1.0 means light scatters backward, value of 1.0 means light scatters forward.
Argument
Type
Required
Description
anisotropy
Yes
setAutoAdjustSampleDistances
Argument
Type
Required
Description
autoAdjustSampleDistances
Yes
setAverageIPScalarRange
Argument
Type
Required
Description
x
Yes
y
Yes
setAverageIPScalarRangeFrom
Argument
Type
Required
Description
averageIPScalarRange
Range
Yes
setBlendMode
Set blend mode to COMPOSITE_BLEND
Argument
Type
Required
Description
blendMode
BlendMode
Yes
setBlendModeToAverageIntensity
Set blend mode to AVERAGE_INTENSITY_BLEND
setBlendModeToComposite
Set blend mode to COMPOSITE_BLEND
setBlendModeToMaximumIntensity
Set blend mode to MAXIMUM_INTENSITY_BLEND
setBlendModeToMinimumIntensity
Set blend mode to MINIMUM_INTENSITY_BLEND
setBlendModeToRadonTransform
Set blend mode to RADON_TRANSFORM_BLEND
setComputeNormalFromOpacity
Set the normal computation to be dependent on the transfer function. By default, the mapper relies on the scalar gradient for computing normals at sample locations for lighting calculations. This is an approximation and can lead to inaccurate results. When enabled, this property makes the mapper compute normals based on the accumulated opacity at sample locations. This can generate a more accurate representation of edge structures in the data but adds an overhead and drops frame rate.
Argument
Type
Required
Description
computeNormalFromOpacity
Yes
setGlobalIlluminationReach
Set the global illumination reach of volume shadow. This function is only effective when volumeScatterBlendCoef is greater than 0. Default value of 0.0 means only the neighboring voxel is considered when creating global shadow. Value of 1.0 means the shadow ray traverses through the entire volume.
Argument
Type
Required
Description
globalIlluminationReach
Yes
setImageSampleDistance
Argument
Type
Required
Description
imageSampleDistance
Yes
setInitialInteractionScale
Argument
Type
Required
Description
initialInteractionScale
Yes
setInteractionSampleDistanceFactor
Argument
Type
Required
Description
interactionSampleDistanceFactor
Yes
setLAOKernelRadius
Set kernel radius for local ambient occlusion. It specifies the number of samples that are considered on each random ray. Value must be greater than or equal to 1.
Argument
Type
Required
Description
LAOKernelRadius
Yes
setLAOKernelSize
Set kernel size for local ambient occlusion. It specifies the number of rays that are randomly sampled in the hemisphere. Value is clipped between 1 and 32.
Argument
Type
Required
Description
LAOKernelSize
Yes
setLocalAmbientOcclusion
Set whether to turn on local ambient occlusion (LAO). LAO is only effective if shading is on and volumeScatterBlendCoef is set to 0. LAO effect is added to ambient lighting, so the ambient component of the actor needs to be great than 0.
Argument
Type
Required
Description
localAmbientOcclusion
Yes
setMaximumSamplesPerRay
Argument
Type
Required
Description
maximumSamplesPerRay
Yes
setSampleDistance
Get the distance between samples used for rendering
Argument
Type
Required
Description
sampleDistance
Yes
setVolumeShadowSamplingDistFactor
Set the multipler for volume shadow sampling distance. This function is only effective when volumeScatterBlendCoef is greater than 0. For VSSampleDistanceFactor >= 1.0, volume shadow sampling distance = VSSampleDistanceFactor * SampleDistance.
Argument
Type
Required
Description
VSSampleDistanceFactor
Yes
setVolumetricScatteringBlending
Set the blending coefficient that determines the interpolation between surface and volume rendering. Default value of 0.0 means shadow effect is computed with phong model. Value of 1.0 means shadow is created by volume occlusion.
export interface vtkVolumeMapper extends vtkAbstractMapper3D { /** * Get the bounds for this mapper as [xmin, xmax, ymin, ymax,zmin, zmax]. * @return {Bounds} The bounds for the mapper. */ getBounds(): Bounds;
/** * */ getBlendMode(): BlendMode;
/** * */ getBlendModeAsString(): string;
/** * Get the distance between samples used for rendering * @default 1.0 */ getSampleDistance(): number;
/** * Sampling distance in the XY image dimensions. * Default value of 1 meaning 1 ray cast per pixel. If set to 0.5, 4 rays will be cast per pixel. * If set to 2.0, 1 ray will be cast for every 4 (2 by 2) pixels. T * @default 1.0 */ getImageSampleDistance(): number;
/** * Get at what scale the quality is reduced when interacting for the first time with the volume * It should should be set before any call to render for this volume * The higher the scale is, the lower the quality of rendering is during interaction * @default 1 */ getInitialInteractionScale(): number;
/** * Get by how much the sample distance should be increased when interacting * This feature is only implemented in the OpenGL volume mapper * @default 1 */ getInteractionSampleDistanceFactor(): number;
/** * * @paraminteractionSampleDistanceFactor */ setInteractionSampleDistanceFactor( interactionSampleDistanceFactor: number ): boolean;
/** * Set the normal computation to be dependent on the transfer function. * By default, the mapper relies on the scalar gradient for computing normals at sample locations * for lighting calculations. This is an approximation and can lead to inaccurate results. * When enabled, this property makes the mapper compute normals based on the accumulated opacity * at sample locations. This can generate a more accurate representation of edge structures in the * data but adds an overhead and drops frame rate. * @paramcomputeNormalFromOpacity */ setComputeNormalFromOpacity(computeNormalFromOpacity: boolean): boolean;
/** * Set the blending coefficient that determines the interpolation between surface and volume rendering. * Default value of 0.0 means shadow effect is computed with phong model. * Value of 1.0 means shadow is created by volume occlusion. * @paramvolumeScatterBlendCoef */ setVolumetricScatteringBlending(volumeScatterBlendCoef: number): void;
/** * Set the global illumination reach of volume shadow. This function is only effective when volumeScatterBlendCoef is greater than 0. * Default value of 0.0 means only the neighboring voxel is considered when creating global shadow. * Value of 1.0 means the shadow ray traverses through the entire volume. * @paramglobalIlluminationReach */ setGlobalIlluminationReach(globalIlluminationReach: number): void;
/** * Set the multipler for volume shadow sampling distance. This function is only effective when volumeScatterBlendCoef is greater than 0. * For VSSampleDistanceFactor >= 1.0, volume shadow sampling distance = VSSampleDistanceFactor * SampleDistance. * @paramVSSampleDistanceFactor */ setVolumeShadowSamplingDistFactor(VSSampleDistanceFactor: number): void;
/** * Set anisotropy of volume shadow scatter. This function is only effective when volumeScatterBlendCoef is greater than 0. * Default value of 0.0 means light scatters uniformly in all directions. * Value of -1.0 means light scatters backward, value of 1.0 means light scatters forward. * @paramanisotropy */ setAnisotropy(anisotropy: number): void;
/** * Set whether to turn on local ambient occlusion (LAO). LAO is only effective if shading is on and volumeScatterBlendCoef is set to 0. * LAO effect is added to ambient lighting, so the ambient component of the actor needs to be great than 0. * @paramlocalAmbientOcclusion */ setLocalAmbientOcclusion(localAmbientOcclusion: boolean): void;
/** * Set kernel size for local ambient occlusion. It specifies the number of rays that are randomly sampled in the hemisphere. * Value is clipped between 1 and 32. * @paramLAOKernelSize */ setLAOKernelSize(LAOKernelSize: number): void;
/** * Set kernel radius for local ambient occlusion. It specifies the number of samples that are considered on each random ray. * Value must be greater than or equal to 1. * @paramLAOKernelRadius */ setLAOKernelRadius(LAOKernelRadius: number): void;
/** * */ update(): void; }
/** * Create an absorption transfer function to set to the mapper when blend mode is RADON. * The transfer function is a linear ramp between the lowest material with absorption and * the material with maximum absorption. Voxel values lower than the lowest material with * absorption will have no absorption associated. Voxel values higher than the maximum * absorbent material will have the same absorption than the max absorbent material. * The associated color transfer function is typically black to white between 0 and 1. * An alternative is to create your own transfer function with HU/absorption pairs. e.g. * const ofun = vtkPiecewiseFunction.newInstance(); * ofun.addPointLong(-1000,0, 1, 1); // air, "1, 1)" to flatten the function * ofun.addPoint(-10, 0.01); // fat * ofun.addPoint(-10, 0.015); // water * ofun.addPointLong(1000, 0.03, 1, 1); // bone * ofun.addPoint(3000, 1); // silver * @static * @param {number} firstAbsorbentMaterialHounsfieldValue: Define minimum voxel value (in hounsfield unit) with non zero absorption (e.g. water (0), fat(-10)...). * Any voxel value lower than this parameter will have no absorption (absorption === 0) * @param {number} firstAbsorbentMaterialAbsorption: Absorption attributed to voxels with firstAbsorbentMaterialHounsfieldValue (e.g. 0 or 0.01) * @param {number} maxAbsorbentMaterialHounsfieldValue: Define maximum voxel value (in hounsfield unit) with increasing absorption (e.g. bone (1000)) * @param {number} maxAbsorbentMaterialAbsorption: Absorption attributed to voxels >= maxAbsorbentMaterialHounsfieldValue (e.g. 0.03) * @param {vtkPiecewiseFunction} outputTransferFunction: To provide optionally to avoid instantiating a new transfer function each time. * @return {vtkPiecewiseFunction} the created absorption transfer function to set on VolumeMapper scalarOpacity. */ exportfunctioncreateRadonTransferFunction( firstAbsorbentMaterialHounsfieldValue: number, firstAbsorbentMaterialAbsorption: number, maxAbsorbentMaterialHounsfieldValue: number, maxAbsorbentMaterialAbsorption: number, outputTransferFunction?: vtkPiecewiseFunction ): vtkPiecewiseFunction;
/** * Method use to decorate a given object (publicAPI+model) with vtkVolumeMapper characteristics. * * @param publicAPI object on which methods will be bounds (public) * @param model object on which data structure will be bounds (protected) * @param {IVolumeMapperInitialValues} [initialValues] (default: {}) */ exportfunctionextend( publicAPI: object, model: object, initialValues?: IVolumeMapperInitialValues ): void;
/** * Method use to create a new instance of vtkVolumeMapper */ exportfunctionnewInstance( initialValues?: IVolumeMapperInitialValues ): vtkVolumeMapper;
/** * vtkVolumeMapper inherits from vtkMapper. * A volume mapper that performs ray casting on the GPU using fragment programs. */ export declare constvtkVolumeMapper: { newInstance: typeof newInstance; extend: typeof extend; BlendMode: typeofBlendMode; FilterMode: typeofFilterMode; }; exportdefault vtkVolumeMapper;
// TODO: what values to use for averageIPScalarRange to get GLSL to use max / min values like [-Math.inf, Math.inf]? constDEFAULT_VALUES = { bounds: [1, -1, 1, -1, 1, -1], sampleDistance: 1.0, imageSampleDistance: 1.0, maximumSamplesPerRay: 1000, autoAdjustSampleDistances: true, initialInteractionScale: 1.0, interactionSampleDistanceFactor: 1.0, blendMode: BlendMode.COMPOSITE_BLEND, ipScalarRange: [-1000000.0, 1000000.0], filterMode: FilterMode.OFF, // ignored by WebGL so no behavior change preferSizeOverAccuracy: false, // Whether to use halfFloat representation of float, when it is inaccurate computeNormalFromOpacity: false, // volume shadow parameters volumetricScatteringBlending: 0.0, globalIlluminationReach: 0.0, volumeShadowSamplingDistFactor: 5.0, anisotropy: 0.0, // local ambient occlusion localAmbientOcclusion: false, LAOKernelSize: 15, LAOKernelRadius: 7, };