VTK  9.1.0
vtkFixedPointVolumeRayCastMapper.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkFixedPointVolumeRayCastMapper.h
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14=========================================================================*/
105#ifndef vtkFixedPointVolumeRayCastMapper_h
106#define vtkFixedPointVolumeRayCastMapper_h
107
108#include "vtkRenderingVolumeModule.h" // For export macro
109#include "vtkThreads.h" // for VTK_THREAD_RETURN_TYPE
110#include "vtkVolumeMapper.h"
111
112#define VTKKW_FP_SHIFT 15
113#define VTKKW_FPMM_SHIFT 17
114#define VTKKW_FP_MASK 0x7fff
115#define VTKKW_FP_SCALE 32767.0
116
117class vtkMatrix4x4;
118class vtkMultiThreader;
120class vtkRenderer;
121class vtkTimerLog;
122class vtkVolume;
123class vtkTransform;
124class vtkRenderWindow;
138class vtkDataArray;
139
140// Forward declaration needed for use by friend declaration below.
141VTK_THREAD_RETURN_TYPE FixedPointVolumeRayCastMapper_CastRays(void* arg);
142VTK_THREAD_RETURN_TYPE vtkFPVRCMSwitchOnDataType(void* arg);
143
144class VTKRENDERINGVOLUME_EXPORT vtkFixedPointVolumeRayCastMapper : public vtkVolumeMapper
145{
146public:
149 void PrintSelf(ostream& os, vtkIndent indent) override;
150
152
157 vtkSetMacro(SampleDistance, float);
158 vtkGetMacro(SampleDistance, float);
160
162
169 vtkSetMacro(InteractiveSampleDistance, float);
170 vtkGetMacro(InteractiveSampleDistance, float);
172
174
181 vtkSetClampMacro(ImageSampleDistance, float, 0.1f, 100.0f);
182 vtkGetMacro(ImageSampleDistance, float);
184
186
190 vtkSetClampMacro(MinimumImageSampleDistance, float, 0.1f, 100.0f);
191 vtkGetMacro(MinimumImageSampleDistance, float);
193
195
199 vtkSetClampMacro(MaximumImageSampleDistance, float, 0.1f, 100.0f);
200 vtkGetMacro(MaximumImageSampleDistance, float);
202
204
213 vtkSetClampMacro(AutoAdjustSampleDistances, vtkTypeBool, 0, 1);
214 vtkGetMacro(AutoAdjustSampleDistances, vtkTypeBool);
215 vtkBooleanMacro(AutoAdjustSampleDistances, vtkTypeBool);
217
219
227 vtkSetClampMacro(LockSampleDistanceToInputSpacing, vtkTypeBool, 0, 1);
228 vtkGetMacro(LockSampleDistanceToInputSpacing, vtkTypeBool);
229 vtkBooleanMacro(LockSampleDistanceToInputSpacing, vtkTypeBool);
231
233
238 void SetNumberOfThreads(int num);
241
243
247 vtkSetClampMacro(IntermixIntersectingGeometry, vtkTypeBool, 0, 1);
248 vtkGetMacro(IntermixIntersectingGeometry, vtkTypeBool);
249 vtkBooleanMacro(IntermixIntersectingGeometry, vtkTypeBool);
251
253
260 float ComputeRequiredImageSampleDistance(float desiredTime, vtkRenderer* ren);
261 float ComputeRequiredImageSampleDistance(float desiredTime, vtkRenderer* ren, vtkVolume* vol);
263
268 void Render(vtkRenderer*, vtkVolume*) override;
269
270 unsigned int ToFixedPointPosition(float val);
271 void ToFixedPointPosition(float in[3], unsigned int out[3]);
272 unsigned int ToFixedPointDirection(float dir);
273 void ToFixedPointDirection(float in[3], unsigned int out[3]);
274 void FixedPointIncrement(unsigned int position[3], unsigned int increment[3]);
275 void GetFloatTripleFromPointer(float v[3], float* ptr);
276 void GetUIntTripleFromPointer(unsigned int v[3], unsigned int* ptr);
277 void ShiftVectorDown(unsigned int in[3], unsigned int out[3]);
278 int CheckMinMaxVolumeFlag(unsigned int pos[3], int c);
279 int CheckMIPMinMaxVolumeFlag(unsigned int pos[3], int c, unsigned short maxIdx, int flip);
280
281 void LookupColorUC(unsigned short* colorTable, unsigned short* scalarOpacityTable,
282 unsigned short index, unsigned char color[4]);
283 void LookupDependentColorUC(unsigned short* colorTable, unsigned short* scalarOpacityTable,
284 unsigned short index[4], int components, unsigned char color[4]);
285 void LookupAndCombineIndependentColorsUC(unsigned short* colorTable[4],
286 unsigned short* scalarOpacityTable[4], unsigned short index[4], float weights[4],
287 int components, unsigned char color[4]);
288 int CheckIfCropped(unsigned int pos[3]);
289
290 vtkGetObjectMacro(RenderWindow, vtkRenderWindow);
291 vtkGetObjectMacro(MIPHelper, vtkFixedPointVolumeRayCastMIPHelper);
292 vtkGetObjectMacro(CompositeHelper, vtkFixedPointVolumeRayCastCompositeHelper);
293 vtkGetObjectMacro(CompositeGOHelper, vtkFixedPointVolumeRayCastCompositeGOHelper);
294 vtkGetObjectMacro(CompositeGOShadeHelper, vtkFixedPointVolumeRayCastCompositeGOShadeHelper);
295 vtkGetObjectMacro(CompositeShadeHelper, vtkFixedPointVolumeRayCastCompositeShadeHelper);
296 vtkGetVectorMacro(TableShift, float, 4);
297 vtkGetVectorMacro(TableScale, float, 4);
298 vtkGetMacro(ShadingRequired, int);
299 vtkGetMacro(GradientOpacityRequired, int);
300
301 vtkGetObjectMacro(CurrentScalars, vtkDataArray);
302 vtkGetObjectMacro(PreviousScalars, vtkDataArray);
303
304 int* GetRowBounds() { return this->RowBounds; }
305 unsigned short* GetColorTable(int c) { return this->ColorTable[c]; }
306 unsigned short* GetScalarOpacityTable(int c) { return this->ScalarOpacityTable[c]; }
307 unsigned short* GetGradientOpacityTable(int c) { return this->GradientOpacityTable[c]; }
308 vtkVolume* GetVolume() { return this->Volume; }
309 unsigned short** GetGradientNormal() { return this->GradientNormal; }
310 unsigned char** GetGradientMagnitude() { return this->GradientMagnitude; }
311 unsigned short* GetDiffuseShadingTable(int c) { return this->DiffuseShadingTable[c]; }
312 unsigned short* GetSpecularShadingTable(int c) { return this->SpecularShadingTable[c]; }
313
315 int x, int y, unsigned int pos[3], unsigned int dir[3], unsigned int* numSteps);
316
318
320
322
328 vtkGetObjectMacro(RayCastImage, vtkFixedPointRayCastImage);
330
331 int PerImageInitialization(vtkRenderer*, vtkVolume*, int, double*, double*, int*);
337
338 void CreateCanonicalView(vtkVolume* volume, vtkImageData* image, int blend_mode,
339 double viewDirection[3], double viewUp[3]);
340
348 {
349 return this->RetrieveRenderTime(ren, vol);
350 }
351 float GetEstimatedRenderTime(vtkRenderer* ren) { return this->RetrieveRenderTime(ren); }
352
354
367 vtkSetMacro(FinalColorWindow, float);
368 vtkGetMacro(FinalColorWindow, float);
369 vtkSetMacro(FinalColorLevel, float);
370 vtkGetMacro(FinalColorLevel, float);
372
373 // Here to be used by the mapper to tell the helper
374 // to flip the MIP comparison in order to support
375 // minimum intensity blending
376 vtkGetMacro(FlipMIPComparison, int);
377
385
386protected:
389
390 // The helper class that displays the image
392
393 // The distance between sample points along the ray
396
397 // The distance between rays in the image
403
404 // Saved values used to restore
407
408 // Internal method for computing matrices needed during
409 // ray casting
410 void ComputeMatrices(double inputOrigin[3], double inputSpacing[3], int inputExtent[6],
411 vtkRenderer* ren, vtkVolume* vol);
412
413 int ComputeRowBounds(vtkRenderer* ren, int imageFlag, int rowBoundsFlag, int inputExtent[6]);
414
416
417 friend VTK_THREAD_RETURN_TYPE FixedPointVolumeRayCastMapper_CastRays(void* arg);
418 friend VTK_THREAD_RETURN_TYPE vtkFPVRCMSwitchOnDataType(void* arg);
419
421
428
430
434
435 // This object encapsulated the image and all related information
437
440
446
447 void StoreRenderTime(vtkRenderer* ren, vtkVolume* vol, float t);
450
452
454
455 vtkColorTransferFunction* SavedRGBFunction[4];
456 vtkPiecewiseFunction* SavedGrayFunction[4];
457 vtkPiecewiseFunction* SavedScalarOpacityFunction[4];
458 vtkPiecewiseFunction* SavedGradientOpacityFunction[4];
459 int SavedColorChannels[4];
460 float SavedScalarOpacityDistance[4];
464
467
469
470 unsigned short ColorTable[4][32768 * 3];
471 unsigned short ScalarOpacityTable[4][32768];
472 unsigned short GradientOpacityTable[4][256];
473 int TableSize[4];
474 float TableScale[4];
475 float TableShift[4];
476
477 float GradientMagnitudeScale[4];
478 float GradientMagnitudeShift[4];
479
480 unsigned short** GradientNormal;
481 unsigned char** GradientMagnitude;
484
486
488
490
492
493 unsigned short DiffuseShadingTable[4][65536 * 3];
494 unsigned short SpecularShadingTable[4][65536 * 3];
495
498
501
504
506 double rayStart[3], double rayEnd[3], float rayDirection[3], double bounds[6]);
507
512
514
516 double rayStart[3], double rayEnd[3], int numClippingPlanes, float* clippingPlanes);
517
518 unsigned int FixedPointCroppingRegionPlanes[6];
519 unsigned int CroppingRegionMask[27];
520
521 // Get the ZBuffer value corresponding to location (x,y) where (x,y)
522 // are indexing into the ImageInUse image. This must be converted to
523 // the zbuffer image coordinates. Nearest neighbor value is returned.
524 float GetZBufferValue(int x, int y);
525
531
532 // Some variables used for ray computation
533 float ViewToVoxelsArray[16];
534 float WorldToVoxelsArray[16];
535 float VoxelsToWorldArray[16];
536
537 double CroppingBounds[6];
538
541
542 double SavedSpacing[3];
543
544 // Min Max structure used to do space leaping
545 unsigned short* MinMaxVolume;
546 int MinMaxVolumeSize[4];
550
552 void FillInMaxGradientMagnitudes(int fullDim[3], int smallDim[3]);
553
556
558
560
561private:
563 void operator=(const vtkFixedPointVolumeRayCastMapper&) = delete;
564
565 bool ThreadWarning;
566};
567
569{
570 return static_cast<unsigned int>(val * VTKKW_FP_SCALE + 0.5);
571}
572
573inline void vtkFixedPointVolumeRayCastMapper::ToFixedPointPosition(float in[3], unsigned int out[3])
574{
575 out[0] = static_cast<unsigned int>(in[0] * VTKKW_FP_SCALE + 0.5);
576 out[1] = static_cast<unsigned int>(in[1] * VTKKW_FP_SCALE + 0.5);
577 out[2] = static_cast<unsigned int>(in[2] * VTKKW_FP_SCALE + 0.5);
578}
579
581{
582 return ((dir < 0.0) ? (static_cast<unsigned int>(-dir * VTKKW_FP_SCALE + 0.5))
583 : (0x80000000 + static_cast<unsigned int>(dir * VTKKW_FP_SCALE + 0.5)));
584}
585
587 float in[3], unsigned int out[3])
588{
589 out[0] = ((in[0] < 0.0) ? (static_cast<unsigned int>(-in[0] * VTKKW_FP_SCALE + 0.5))
590 : (0x80000000 + static_cast<unsigned int>(in[0] * VTKKW_FP_SCALE + 0.5)));
591 out[1] = ((in[1] < 0.0) ? (static_cast<unsigned int>(-in[1] * VTKKW_FP_SCALE + 0.5))
592 : (0x80000000 + static_cast<unsigned int>(in[1] * VTKKW_FP_SCALE + 0.5)));
593 out[2] = ((in[2] < 0.0) ? (static_cast<unsigned int>(-in[2] * VTKKW_FP_SCALE + 0.5))
594 : (0x80000000 + static_cast<unsigned int>(in[2] * VTKKW_FP_SCALE + 0.5)));
595}
596
598 unsigned int position[3], unsigned int increment[3])
599{
600 if (increment[0] & 0x80000000)
601 {
602 position[0] += (increment[0] & 0x7fffffff);
603 }
604 else
605 {
606 position[0] -= increment[0];
607 }
608 if (increment[1] & 0x80000000)
609 {
610 position[1] += (increment[1] & 0x7fffffff);
611 }
612 else
613 {
614 position[1] -= increment[1];
615 }
616 if (increment[2] & 0x80000000)
617 {
618 position[2] += (increment[2] & 0x7fffffff);
619 }
620 else
621 {
622 position[2] -= increment[2];
623 }
624}
625
627{
628 v[0] = *(ptr);
629 v[1] = *(ptr + 1);
630 v[2] = *(ptr + 2);
631}
632
634 unsigned int v[3], unsigned int* ptr)
635{
636 v[0] = *(ptr);
637 v[1] = *(ptr + 1);
638 v[2] = *(ptr + 2);
639}
640
642 unsigned int in[3], unsigned int out[3])
643{
644 out[0] = in[0] >> VTKKW_FP_SHIFT;
645 out[1] = in[1] >> VTKKW_FP_SHIFT;
646 out[2] = in[2] >> VTKKW_FP_SHIFT;
647}
648
649inline int vtkFixedPointVolumeRayCastMapper::CheckMinMaxVolumeFlag(unsigned int mmpos[3], int c)
650{
651 vtkIdType offset = static_cast<vtkIdType>(this->MinMaxVolumeSize[3]) *
652 (mmpos[2] * static_cast<vtkIdType>(this->MinMaxVolumeSize[0] * this->MinMaxVolumeSize[1]) +
653 mmpos[1] * static_cast<vtkIdType>(this->MinMaxVolumeSize[0]) + mmpos[0]) +
654 static_cast<vtkIdType>(c);
655
656 return ((*(this->MinMaxVolume + 3 * offset + 2)) & 0x00ff);
657}
658
660 unsigned int mmpos[3], int c, unsigned short maxIdx, int flip)
661{
662 vtkIdType offset = static_cast<vtkIdType>(this->MinMaxVolumeSize[3]) *
663 (mmpos[2] * static_cast<vtkIdType>(this->MinMaxVolumeSize[0] * this->MinMaxVolumeSize[1]) +
664 mmpos[1] * static_cast<vtkIdType>(this->MinMaxVolumeSize[0]) + mmpos[0]) +
665 static_cast<vtkIdType>(c);
666
667 if ((*(this->MinMaxVolume + 3 * offset + 2) & 0x00ff))
668 {
669 if (flip)
670 {
671 return (*(this->MinMaxVolume + 3 * offset) < maxIdx);
672 }
673 else
674 {
675 return (*(this->MinMaxVolume + 3 * offset + 1) > maxIdx);
676 }
677 }
678 else
679 {
680 return 0;
681 }
682}
683
684inline void vtkFixedPointVolumeRayCastMapper::LookupColorUC(unsigned short* colorTable,
685 unsigned short* scalarOpacityTable, unsigned short index, unsigned char color[4])
686{
687 unsigned short alpha = scalarOpacityTable[index];
688 color[0] = static_cast<unsigned char>(
689 (colorTable[3 * index] * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
690 color[1] = static_cast<unsigned char>(
691 (colorTable[3 * index + 1] * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
692 color[2] = static_cast<unsigned char>(
693 (colorTable[3 * index + 2] * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
694 color[3] = static_cast<unsigned char>(alpha >> (VTKKW_FP_SHIFT - 8));
695}
696
697inline void vtkFixedPointVolumeRayCastMapper::LookupDependentColorUC(unsigned short* colorTable,
698 unsigned short* scalarOpacityTable, unsigned short index[4], int components,
699 unsigned char color[4])
700{
701 unsigned short alpha;
702 switch (components)
703 {
704 case 2:
705 alpha = scalarOpacityTable[index[1]];
706 color[0] = static_cast<unsigned char>(
707 (colorTable[3 * index[0]] * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
708 color[1] = static_cast<unsigned char>(
709 (colorTable[3 * index[0] + 1] * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
710 color[2] = static_cast<unsigned char>(
711 (colorTable[3 * index[0] + 2] * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
712 color[3] = static_cast<unsigned char>(alpha >> (VTKKW_FP_SHIFT - 8));
713 break;
714 case 4:
715 alpha = scalarOpacityTable[index[3]];
716 color[0] = static_cast<unsigned char>((index[0] * alpha + 0x7fff) >> VTKKW_FP_SHIFT);
717 color[1] = static_cast<unsigned char>((index[1] * alpha + 0x7fff) >> VTKKW_FP_SHIFT);
718 color[2] = static_cast<unsigned char>((index[2] * alpha + 0x7fff) >> VTKKW_FP_SHIFT);
719 color[3] = static_cast<unsigned char>(alpha >> (VTKKW_FP_SHIFT - 8));
720 break;
721 }
722}
723
725 unsigned short* colorTable[4], unsigned short* scalarOpacityTable[4], unsigned short index[4],
726 float weights[4], int components, unsigned char color[4])
727{
728 unsigned int tmp[4] = { 0, 0, 0, 0 };
729
730 for (int i = 0; i < components; i++)
731 {
732 unsigned short alpha =
733 static_cast<unsigned short>(static_cast<float>(scalarOpacityTable[i][index[i]]) * weights[i]);
734 tmp[0] += static_cast<unsigned char>(
735 ((colorTable[i][3 * index[i]]) * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
736 tmp[1] += static_cast<unsigned char>(
737 ((colorTable[i][3 * index[i] + 1]) * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
738 tmp[2] += static_cast<unsigned char>(
739 ((colorTable[i][3 * index[i] + 2]) * alpha + 0x7fff) >> (2 * VTKKW_FP_SHIFT - 8));
740 tmp[3] += static_cast<unsigned char>(alpha >> (VTKKW_FP_SHIFT - 8));
741 }
742
743 color[0] = static_cast<unsigned char>((tmp[0] > 255) ? (255) : (tmp[0]));
744 color[1] = static_cast<unsigned char>((tmp[1] > 255) ? (255) : (tmp[1]));
745 color[2] = static_cast<unsigned char>((tmp[2] > 255) ? (255) : (tmp[2]));
746 color[3] = static_cast<unsigned char>((tmp[3] > 255) ? (255) : (tmp[3]));
747}
748
750{
751 int idx;
752
753 if (pos[2] < this->FixedPointCroppingRegionPlanes[4])
754 {
755 idx = 0;
756 }
757 else if (pos[2] > this->FixedPointCroppingRegionPlanes[5])
758 {
759 idx = 18;
760 }
761 else
762 {
763 idx = 9;
764 }
765
766 if (pos[1] >= this->FixedPointCroppingRegionPlanes[2])
767 {
768 if (pos[1] > this->FixedPointCroppingRegionPlanes[3])
769 {
770 idx += 6;
771 }
772 else
773 {
774 idx += 3;
775 }
776 }
777
778 if (pos[0] >= this->FixedPointCroppingRegionPlanes[0])
779 {
780 if (pos[0] > this->FixedPointCroppingRegionPlanes[1])
781 {
782 idx += 2;
783 }
784 else
785 {
786 idx += 1;
787 }
788 }
789
790 return !(static_cast<unsigned int>(this->CroppingRegionFlags) & this->CroppingRegionMask[idx]);
791}
792
793#endif
Defines a transfer function for mapping a property to an RGB color value.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:159
encode a direction into a one or two byte value
Compute shading tables for encoded normals.
Use finite differences to estimate gradient.
helper class for a ray cast image
A helper that generates composite images for the volume ray cast mapper.
A helper that generates composite images for the volume ray cast mapper.
A helper that generates composite images for the volume ray cast mapper.
A helper that generates composite images for the volume ray cast mapper.
A helper that generates MIP images for the volume ray cast mapper.
void SetRayCastImage(vtkFixedPointRayCastImage *)
Set / Get the underlying image object.
vtkRayCastImageDisplayHelper * ImageDisplayHelper
vtkFixedPointVolumeRayCastMIPHelper * MIPHelper
vtkFixedPointVolumeRayCastCompositeGOHelper * CompositeGOHelper
int ShouldUseNearestNeighborInterpolation(vtkVolume *vol)
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
float RetrieveRenderTime(vtkRenderer *ren)
void GetFloatTripleFromPointer(float v[3], float *ptr)
void CaptureZBuffer(vtkRenderer *ren)
float ComputeRequiredImageSampleDistance(float desiredTime, vtkRenderer *ren)
What is the image sample distance required to achieve the desired time? A version of this method is p...
void ComputeRayInfo(int x, int y, unsigned int pos[3], unsigned int dir[3], unsigned int *numSteps)
vtkFixedPointVolumeRayCastCompositeShadeHelper * CompositeShadeHelper
void StoreRenderTime(vtkRenderer *ren, vtkVolume *vol, float t)
vtkFiniteDifferenceGradientEstimator * GradientEstimator
vtkFixedPointVolumeRayCastCompositeGOShadeHelper * CompositeGOShadeHelper
int ComputeRowBounds(vtkRenderer *ren, int imageFlag, int rowBoundsFlag, int inputExtent[6])
float GetZBufferValue(int x, int y)
void DisplayRenderedImage(vtkRenderer *, vtkVolume *)
void FillInMaxGradientMagnitudes(int fullDim[3], int smallDim[3])
void InitializeRayInfo(vtkVolume *vol)
void SetNumberOfThreads(int num)
Set/Get the number of threads to use.
void Render(vtkRenderer *, vtkVolume *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Initialize rendering for this volume.
void ComputeGradients(vtkVolume *vol)
int UpdateShadingTable(vtkRenderer *ren, vtkVolume *vol)
void GetUIntTripleFromPointer(unsigned int v[3], unsigned int *ptr)
float ComputeRequiredImageSampleDistance(float desiredTime, vtkRenderer *ren, vtkVolume *vol)
What is the image sample distance required to achieve the desired time? A version of this method is p...
static vtkFixedPointVolumeRayCastMapper * New()
float GetEstimatedRenderTime(vtkRenderer *ren, vtkVolume *vol)
Get an estimate of the rendering time for a given volume / renderer.
float RetrieveRenderTime(vtkRenderer *ren, vtkVolume *vol)
int CheckMinMaxVolumeFlag(unsigned int pos[3], int c)
vtkFixedPointVolumeRayCastCompositeHelper * CompositeHelper
int CheckMIPMinMaxVolumeFlag(unsigned int pos[3], int c, unsigned short maxIdx, int flip)
friend VTK_THREAD_RETURN_TYPE vtkFPVRCMSwitchOnDataType(void *arg)
void PerSubVolumeInitialization(vtkRenderer *, vtkVolume *, int)
void ComputeMatrices(double inputOrigin[3], double inputSpacing[3], int inputExtent[6], vtkRenderer *ren, vtkVolume *vol)
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void LookupColorUC(unsigned short *colorTable, unsigned short *scalarOpacityTable, unsigned short index, unsigned char color[4])
void FixedPointIncrement(unsigned int position[3], unsigned int increment[3])
void LookupAndCombineIndependentColorsUC(unsigned short *colorTable[4], unsigned short *scalarOpacityTable[4], unsigned short index[4], float weights[4], int components, unsigned char color[4])
vtkVolumeRayCastSpaceLeapingImageFilter * SpaceLeapFilter
void PerVolumeInitialization(vtkRenderer *, vtkVolume *)
int ClipRayAgainstVolume(double rayStart[3], double rayEnd[3], float rayDirection[3], double bounds[6])
void CreateCanonicalView(vtkVolume *volume, vtkImageData *image, int blend_mode, double viewDirection[3], double viewUp[3])
int PerImageInitialization(vtkRenderer *, vtkVolume *, int, double *, double *, int *)
void UpdateMinMaxVolume(vtkVolume *vol)
friend VTK_THREAD_RETURN_TYPE FixedPointVolumeRayCastMapper_CastRays(void *arg)
void ShiftVectorDown(unsigned int in[3], unsigned int out[3])
int UpdateColorTable(vtkVolume *vol)
int ClipRayAgainstClippingPlanes(double rayStart[3], double rayEnd[3], int numClippingPlanes, float *clippingPlanes)
int GetNumberOfThreads()
Set/Get the number of threads to use.
int UpdateGradients(vtkVolume *vol)
void LookupDependentColorUC(unsigned short *colorTable, unsigned short *scalarOpacityTable, unsigned short index[4], int components, unsigned char color[4])
topologically and geometrically regular array of data
Definition: vtkImageData.h:157
a simple class to control print indentation
Definition: vtkIndent.h:113
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:145
A class for performing multithreaded execution.
Defines a 1D piecewise function.
maintain a list of planes
helper class that draws the image to the screen
create a window for renderers to draw into
abstract specification for renderers
Definition: vtkRenderer.h:173
record modification and/or execution time
Definition: vtkTimeStamp.h:52
Timer support and logging.
Definition: vtkTimerLog.h:199
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:164
Abstract class for a volume mapper.
int CroppingRegionFlags
Cropping variables, and a method for converting the world coordinate cropping region planes to voxel ...
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:134
window superclass for vtkRenderWindow
Definition: vtkWindow.h:36
@ dir
Definition: vtkX3D.h:330
@ alpha
Definition: vtkX3D.h:256
@ color
Definition: vtkX3D.h:227
@ image
Definition: vtkX3D.h:380
@ position
Definition: vtkX3D.h:267
@ index
Definition: vtkX3D.h:252
@ offset
Definition: vtkX3D.h:444
int vtkTypeBool
Definition: vtkABI.h:69
VTK_THREAD_RETURN_TYPE vtkFPVRCMSwitchOnDataType(void *arg)
VTK_THREAD_RETURN_TYPE FixedPointVolumeRayCastMapper_CastRays(void *arg)
int vtkIdType
Definition: vtkType.h:332