 |
VTK
9.0.1
|
Go to the documentation of this file.
65 #ifndef vtkFixedPointVolumeRayCastMapper_h
66 #define vtkFixedPointVolumeRayCastMapper_h
68 #include "vtkRenderingVolumeModule.h"
71 #define VTKKW_FP_SHIFT 15
72 #define VTKKW_FPMM_SHIFT 17
73 #define VTKKW_FP_MASK 0x7fff
74 #define VTKKW_FP_SCALE 32767.0
116 vtkSetMacro(SampleDistance,
float);
117 vtkGetMacro(SampleDistance,
float);
128 vtkSetMacro(InteractiveSampleDistance,
float);
129 vtkGetMacro(InteractiveSampleDistance,
float);
140 vtkSetClampMacro(ImageSampleDistance,
float, 0.1f, 100.0f);
141 vtkGetMacro(ImageSampleDistance,
float);
149 vtkSetClampMacro(MinimumImageSampleDistance,
float, 0.1f, 100.0f);
150 vtkGetMacro(MinimumImageSampleDistance,
float);
158 vtkSetClampMacro(MaximumImageSampleDistance,
float, 0.1f, 100.0f);
159 vtkGetMacro(MaximumImageSampleDistance,
float);
172 vtkSetClampMacro(AutoAdjustSampleDistances,
vtkTypeBool, 0, 1);
173 vtkGetMacro(AutoAdjustSampleDistances,
vtkTypeBool);
174 vtkBooleanMacro(AutoAdjustSampleDistances,
vtkTypeBool);
186 vtkSetClampMacro(LockSampleDistanceToInputSpacing,
vtkTypeBool, 0, 1);
187 vtkGetMacro(LockSampleDistanceToInputSpacing,
vtkTypeBool);
188 vtkBooleanMacro(LockSampleDistanceToInputSpacing,
vtkTypeBool);
197 void SetNumberOfThreads(
int num);
198 int GetNumberOfThreads();
206 vtkSetClampMacro(IntermixIntersectingGeometry,
vtkTypeBool, 0, 1);
207 vtkGetMacro(IntermixIntersectingGeometry,
vtkTypeBool);
208 vtkBooleanMacro(IntermixIntersectingGeometry,
vtkTypeBool);
219 float ComputeRequiredImageSampleDistance(
float desiredTime,
vtkRenderer* ren);
229 unsigned int ToFixedPointPosition(
float val);
230 void ToFixedPointPosition(
float in[3],
unsigned int out[3]);
231 unsigned int ToFixedPointDirection(
float dir);
232 void ToFixedPointDirection(
float in[3],
unsigned int out[3]);
233 void FixedPointIncrement(
unsigned int position[3],
unsigned int increment[3]);
234 void GetFloatTripleFromPointer(
float v[3],
float* ptr);
235 void GetUIntTripleFromPointer(
unsigned int v[3],
unsigned int* ptr);
236 void ShiftVectorDown(
unsigned int in[3],
unsigned int out[3]);
237 int CheckMinMaxVolumeFlag(
unsigned int pos[3],
int c);
238 int CheckMIPMinMaxVolumeFlag(
unsigned int pos[3],
int c,
unsigned short maxIdx,
int flip);
240 void LookupColorUC(
unsigned short* colorTable,
unsigned short* scalarOpacityTable,
241 unsigned short index,
unsigned char color[4]);
242 void LookupDependentColorUC(
unsigned short* colorTable,
unsigned short* scalarOpacityTable,
243 unsigned short index[4],
int components,
unsigned char color[4]);
244 void LookupAndCombineIndependentColorsUC(
unsigned short* colorTable[4],
245 unsigned short* scalarOpacityTable[4],
unsigned short index[4],
float weights[4],
246 int components,
unsigned char color[4]);
247 int CheckIfCropped(
unsigned int pos[3]);
255 vtkGetVectorMacro(TableShift,
float, 4);
256 vtkGetVectorMacro(TableScale,
float, 4);
257 vtkGetMacro(ShadingRequired,
int);
258 vtkGetMacro(GradientOpacityRequired,
int);
274 int x,
int y,
unsigned int pos[3],
unsigned int dir[3],
unsigned int* numSteps);
278 int ShouldUseNearestNeighborInterpolation(
vtkVolume* vol);
293 void RenderSubVolume();
298 double viewDirection[3],
double viewUp[3]);
308 return this->RetrieveRenderTime(ren, vol);
326 vtkSetMacro(FinalColorWindow,
float);
327 vtkGetMacro(FinalColorWindow,
float);
328 vtkSetMacro(FinalColorLevel,
float);
329 vtkGetMacro(FinalColorLevel,
float);
335 vtkGetMacro(FlipMIPComparison,
int);
369 void ComputeMatrices(
double volumeOrigin[3],
double volumeSpacing[3],
int volumeExtent[6],
372 int ComputeRowBounds(
vtkRenderer* ren,
int imageFlag,
int rowBoundsFlag,
int volumeExtent[6]);
418 int SavedColorChannels[4];
419 float SavedScalarOpacityDistance[4];
429 unsigned short ColorTable[4][32768 * 3];
430 unsigned short ScalarOpacityTable[4][32768];
431 unsigned short GradientOpacityTable[4][256];
436 float GradientMagnitudeScale[4];
437 float GradientMagnitudeShift[4];
452 unsigned short DiffuseShadingTable[4][65536 * 3];
453 unsigned short SpecularShadingTable[4][65536 * 3];
464 int ClipRayAgainstVolume(
465 float rayStart[3],
float rayEnd[3],
float rayDirection[3],
double bounds[6]);
470 void UpdateCroppingRegions();
474 int ClipRayAgainstClippingPlanes(
475 float rayStart[3],
float rayEnd[3],
int numClippingPlanes,
float* clippingPlanes);
477 unsigned int FixedPointCroppingRegionPlanes[6];
478 unsigned int CroppingRegionMask[27];
483 float GetZBufferValue(
int x,
int y);
492 float ViewToVoxelsArray[16];
493 float WorldToVoxelsArray[16];
494 float VoxelsToWorldArray[16];
496 double CroppingBounds[6];
501 double SavedSpacing[3];
505 int MinMaxVolumeSize[4];
511 void FillInMaxGradientMagnitudes(
int fullDim[3],
int smallDim[3]);
518 void ApplyFinalColorWindowLevel();
546 float in[3],
unsigned int out[3])
548 out[0] = ((in[0] < 0.0) ? (
static_cast<unsigned int>(-in[0] *
VTKKW_FP_SCALE + 0.5))
549 : (0x80000000 +
static_cast<unsigned int>(in[0] *
VTKKW_FP_SCALE + 0.5)));
550 out[1] = ((in[1] < 0.0) ? (
static_cast<unsigned int>(-in[1] *
VTKKW_FP_SCALE + 0.5))
551 : (0x80000000 +
static_cast<unsigned int>(in[1] *
VTKKW_FP_SCALE + 0.5)));
552 out[2] = ((in[2] < 0.0) ? (
static_cast<unsigned int>(-in[2] *
VTKKW_FP_SCALE + 0.5))
553 : (0x80000000 +
static_cast<unsigned int>(in[2] *
VTKKW_FP_SCALE + 0.5)));
557 unsigned int position[3],
unsigned int increment[3])
559 if (increment[0] & 0x80000000)
561 position[0] += (increment[0] & 0x7fffffff);
567 if (increment[1] & 0x80000000)
569 position[1] += (increment[1] & 0x7fffffff);
575 if (increment[2] & 0x80000000)
577 position[2] += (increment[2] & 0x7fffffff);
593 unsigned int v[3],
unsigned int* ptr)
601 unsigned int in[3],
unsigned int out[3])
612 mmpos[1] *
static_cast<vtkIdType>(this->MinMaxVolumeSize[0]) + mmpos[0]) +
615 return ((*(this->
MinMaxVolume + 3 * offset + 2)) & 0x00ff);
619 unsigned int mmpos[3],
int c,
unsigned short maxIdx,
int flip)
623 mmpos[1] *
static_cast<vtkIdType>(this->MinMaxVolumeSize[0]) + mmpos[0]) +
634 return (*(this->
MinMaxVolume + 3 * offset + 1) > maxIdx);
644 unsigned short* scalarOpacityTable,
unsigned short index,
unsigned char color[4])
646 unsigned short alpha = scalarOpacityTable[
index];
647 color[0] =
static_cast<unsigned char>(
649 color[1] =
static_cast<unsigned char>(
651 color[2] =
static_cast<unsigned char>(
657 unsigned short* scalarOpacityTable,
unsigned short index[4],
int components,
658 unsigned char color[4])
660 unsigned short alpha;
665 color[0] =
static_cast<unsigned char>(
667 color[1] =
static_cast<unsigned char>(
669 color[2] =
static_cast<unsigned char>(
684 unsigned short* colorTable[4],
unsigned short* scalarOpacityTable[4],
unsigned short index[4],
685 float weights[4],
int components,
unsigned char color[4])
687 unsigned int tmp[4] = { 0, 0, 0, 0 };
689 for (
int i = 0; i < components; i++)
691 unsigned short alpha =
692 static_cast<unsigned short>(
static_cast<float>(scalarOpacityTable[i][
index[i]]) * weights[i]);
693 tmp[0] +=
static_cast<unsigned char>(
695 tmp[1] +=
static_cast<unsigned char>(
697 tmp[2] +=
static_cast<unsigned char>(
702 color[0] =
static_cast<unsigned char>((tmp[0] > 255) ? (255) : (tmp[0]));
703 color[1] =
static_cast<unsigned char>((tmp[1] > 255) ? (255) : (tmp[1]));
704 color[2] =
static_cast<unsigned char>((tmp[2] > 255) ? (255) : (tmp[2]));
705 color[3] =
static_cast<unsigned char>((tmp[3] > 255) ? (255) : (tmp[3]));
unsigned short * GetSpecularShadingTable(int c)
unsigned short * ContiguousGradientNormal
vtkRenderer ** RenderRendererTable
unsigned char ** GetGradientMagnitude()
Abstract class for a volume mapper.
unsigned short ** GetGradientNormal()
vtkMultiThreader * Threader
represents a volume (data & properties) in a rendered scene
vtkImageData * SavedMinMaxInput
helper class for a ray cast image
helper class that draws the image to the screen
vtkFixedPointVolumeRayCastMIPHelper * MIPHelper
vtkTypeBool AutoAdjustSampleDistances
A fixed point mapper for volumes.
unsigned short * GetGradientOpacityTable(int c)
VTK_THREAD_RETURN_TYPE FixedPointVolumeRayCastMapper_CastRays(void *arg)
record modification and/or execution time
int GradientOpacityRequired
vtkVolume ** RenderVolumeTable
vtkFixedPointRayCastImage * RayCastImage
unsigned short * GetDiffuseShadingTable(int c)
void ShiftVectorDown(unsigned int in[3], unsigned int out[3])
A helper that generates MIP images for the volume ray cast mapper.
void LookupAndCombineIndependentColorsUC(unsigned short *colorTable[4], unsigned short *scalarOpacityTable[4], unsigned short index[4], float weights[4], int components, unsigned char color[4])
unsigned int FixedPointCroppingRegionPlanes[6]
vtkFixedPointVolumeRayCastCompositeShadeHelper * CompositeShadeHelper
float MinimumImageSampleDistance
void FixedPointIncrement(unsigned int position[3], unsigned int increment[3])
Use finite differences to estimate gradient.
float ImageSampleDistance
abstract superclass for arrays of numeric data
vtkMatrix4x4 * ViewToWorldMatrix
float * TransformedClippingPlanes
Defines a transfer function for mapping a property to an RGB color value.
vtkImageData * SavedGradientsInput
A helper that generates composite images for the volume ray cast mapper.
float OldImageSampleDistance
vtkDirectionEncoder * DirectionEncoder
float MaximumImageSampleDistance
window superclass for vtkRenderWindow
int NumberOfGradientSlices
vtkMatrix4x4 * VoxelsToViewMatrix
vtkMatrix4x4 * PerspectiveMatrix
vtkImageData * SavedParametersInput
int NumTransformedClippingPlanes
void GetFloatTripleFromPointer(float v[3], float *ptr)
vtkMatrix4x4 * VoxelsToWorldMatrix
A class for performing multithreaded execution.
vtkMatrix4x4 * ViewToVoxelsMatrix
unsigned int CroppingRegionMask[27]
Compute shading tables for encoded normals.
float InteractiveSampleDistance
void Render(vtkRenderer *ren, vtkVolume *vol) override=0
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
unsigned int ToFixedPointDirection(float dir)
vtkImageData * MinMaxVolumeCache
vtkMatrix4x4 * WorldToVoxelsMatrix
int CheckMIPMinMaxVolumeFlag(unsigned int pos[3], int c, unsigned short maxIdx, int flip)
vtkTypeBool IntermixIntersectingGeometry
topologically and geometrically regular array of data
a simple class to control print indentation
represent and manipulate 4x4 transformation matrices
Builds the space leaping data structure.
int CheckMinMaxVolumeFlag(unsigned int pos[3], int c)
vtkTransform * VoxelsTransform
vtkTimeStamp SavedGradientsMTime
vtkEncodedGradientShader * GradientShader
vtkRenderWindow * RenderWindow
unsigned char * ContiguousGradientMagnitude
vtkTransform * VoxelsToViewTransform
vtkFixedPointVolumeRayCastCompositeGOHelper * CompositeGOHelper
unsigned short * GetScalarOpacityTable(int c)
void LookupColorUC(unsigned short *colorTable, unsigned short *scalarOpacityTable, unsigned short index, unsigned char color[4])
void LookupDependentColorUC(unsigned short *colorTable, unsigned short *scalarOpacityTable, unsigned short index[4], int components, unsigned char color[4])
VTK_THREAD_RETURN_TYPE vtkFPVRCMSwitchOnDataType(void *arg)
vtkTransform * PerspectiveTransform
#define VTK_THREAD_RETURN_TYPE
int CheckIfCropped(unsigned int pos[3])
Defines a 1D piecewise function.
vtkDataArray * CurrentScalars
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
void GetUIntTripleFromPointer(unsigned int v[3], unsigned int *ptr)
static vtkAlgorithm * New()
Timer support and logging.
float MinimumViewDistance
vtkRayCastImageDisplayHelper * ImageDisplayHelper
vtkVolumeRayCastSpaceLeapingImageFilter * SpaceLeapFilter
float GetEstimatedRenderTime(vtkRenderer *ren, vtkVolume *vol)
Get an estimate of the rendering time for a given volume / renderer.
unsigned short * GetColorTable(int c)
abstract specification for renderers
encode a direction into a one or two byte value
vtkDataArray * PreviousScalars
vtkFiniteDifferenceGradientEstimator * GradientEstimator
unsigned short ** GradientNormal
A helper that generates composite images for the volume ray cast mapper.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkTypeBool LockSampleDistanceToInputSpacing
maintain a list of planes
create a window for renderers to draw into
A helper that generates composite images for the volume ray cast mapper.
vtkMatrix4x4 * VolumeMatrix
unsigned int ToFixedPointPosition(float val)
A helper that generates composite images for the volume ray cast mapper.
vtkFixedPointVolumeRayCastCompositeGOShadeHelper * CompositeGOShadeHelper
vtkFixedPointVolumeRayCastCompositeHelper * CompositeHelper
float GetEstimatedRenderTime(vtkRenderer *ren)
unsigned short * MinMaxVolume
float SavedSampleDistance
unsigned char ** GradientMagnitude
vtkTimeStamp SavedParametersMTime