Go to the documentation of this file.
35 #ifndef vtkUnstructuredGridVolumeZSweepMapper_h
36 #define vtkUnstructuredGridVolumeZSweepMapper_h
38 #include "vtkRenderingVolumeModule.h"
60 class vtkPixelListFrame;
63 class vtkSimpleScreenEdge;
64 class vtkDoubleScreenEdge;
66 class vtkPixelListEntryMemory;
86 vtkSetClampMacro( ImageSampleDistance,
float, 0.1f, 100.0f );
87 vtkGetMacro( ImageSampleDistance,
float );
95 vtkSetClampMacro( MinimumImageSampleDistance,
float, 0.1f, 100.0f );
96 vtkGetMacro( MinimumImageSampleDistance,
float );
104 vtkSetClampMacro( MaximumImageSampleDistance,
float, 0.1f, 100.0f );
105 vtkGetMacro( MaximumImageSampleDistance,
float );
125 vtkSetClampMacro( IntermixIntersectingGeometry,
vtkTypeBool, 0, 1 );
162 vtkGetVectorMacro( ImageInUseSize,
int, 2 );
163 vtkGetVectorMacro( ImageOrigin,
int, 2 );
164 vtkGetVectorMacro( ImageViewportSize,
int , 2 );
224 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve0,
225 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve1,
226 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve2,
236 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkScreenEdge *left,
237 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkScreenEdge *right,
247 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *v0,
248 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *v1,
294 int ImageViewportSize[2];
300 int ImageMemorySize[2];
306 int ImageInUseSize[2];
328 int ZBufferOrigin[2];
336 double FaceScalars[2];
339 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSpan *
Span;
340 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkPixelListFrame *
PixelListFrame;
345 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkUseSet *
UseSet;
348 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertices *
Vertices;
358 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSimpleScreenEdge *
SimpleEdge;
359 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkDoubleScreenEdge *
DoubleEdge;
375 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkPixelListEntryMemory *
MemoryManager;
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkPixelListFrame * PixelListFrame
static vtkUnstructuredGridVolumeZSweepMapper * New()
Set MaxPixelListSize to 32.
void ProjectAndSortVertices(vtkRenderer *ren, vtkVolume *vol)
Project and sort the vertices by z-coordinates in view space in the "event list" (an heap).
a superclass for volume ray integration functions
vtkUnstructuredGridVolumeRayIntegrator * RealRayIntegrator
vtkIdType MaxRecordedPixelListSize
represents a volume (data & properties) in a rendered scene
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkDoubleScreenEdge * DoubleEdge
helper class that draws the image to the screen
float ImageSampleDistance
vtkVolume ** RenderVolumeTable
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertices * Vertices
float MaximumImageSampleDistance
vtkTimeStamp SavedTriangleListMTime
record modification and/or execution time
vtkDoubleArray * FarIntersections
void MainLoop(vtkRenderWindow *renWin)
MainLoop of the Zsweep algorithm.
a list of ids arranged in priority order
vtkPriorityQueue * EventList
void RasterizeTriangle(vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve0, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve1, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve2, bool exitFace)
Perform scan conversion of a triangle defined by its vertices.
void CreateAndCleanPixelList()
Create an empty "pixel list" for each pixel of the screen.
int ReorderTriangle(vtkIdType v[3], vtkIdType w[3])
Reorder vertices ‘v’ in increasing order in ‘w’.
abstract superclass for arrays of numeric data
void AllocateVertices(vtkIdType size)
Allocate a vertex array of size ‘size’ only if the current one is not large enough.
vtkUnstructuredGridVolumeZSweepMapper()
vtkDoubleArray * IntersectionLengths
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSpan * Span
double GetMinimumBoundsDepth(vtkRenderer *ren, vtkVolume *vol)
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkPixelListEntryMemory * MemoryManager
Unstructured grid volume mapper based the ZSweep Algorithm.
double GetZBufferValue(int x, int y)
Return the value of the z-buffer at screen coordinates (x,y).
void Render(vtkRenderer *ren, vtkVolume *vol) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
vtkMatrix4x4 * PerspectiveMatrix
vtkUnstructuredGridVolumeRayIntegrator * RayIntegrator
abstract class to specify cell behavior
vtkTypeBool IntermixIntersectingGeometry
vtkRayCastImageDisplayHelper * ImageDisplayHelper
void RasterizeFace(vtkIdType faceIds[3], int externalSide)
Perform scan conversion of a triangle face.
a simple class to control print indentation
represent and manipulate 4x4 transformation matrices
void AllocateUseSet(vtkIdType size)
Allocate an array of usesets of size ‘size’ only if the current one is not large enough.
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkUseSet * UseSet
list of point or cell ids
void SavePixelListFrame()
For debugging purpose, save the pixel list frame as a dataset.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void CompositeFunction(double zTarget)
Do delayed compositing from back to front, stopping at zTarget for each pixel inside the bounding box...
int MaxPixelListSizeReached
Abstract class for an unstructured grid volume mapper.
virtual void SetRayIntegrator(vtkUnstructuredGridVolumeRayIntegrator *ri)
Set/Get the helper class for integrating rays.
void RasterizeLine(vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *v0, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *v1, bool exitFace)
Scan conversion of a straight line defined by endpoints v0 and v1.
abstract specification for renderers
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSimpleScreenEdge * SimpleEdge
void SetMaxPixelListSize(int size)
Change the maximum size allowed for a pixel list.
vtkDoubleArray * NearIntersections
provides thread-safe access to cells
~vtkUnstructuredGridVolumeZSweepMapper() override
void StoreRenderTime(vtkRenderer *ren, vtkVolume *vol, float t)
dynamic, self-adjusting array of double
float RetrieveRenderTime(vtkRenderer *ren, vtkVolume *vol)
create a window for renderers to draw into
vtkTransform * PerspectiveTransform
void BuildUseSets()
For each vertex, find the list of incident faces.
void RasterizeSpan(int y, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkScreenEdge *left, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkScreenEdge *right, bool exitFace)
Perform scan conversion of an horizontal span from left ro right at line y.
unsigned char ColorComponentRealToByte(float color)
Convert and clamp a float color component into a unsigned char.
float MinimumImageSampleDistance
vtkTypeBool AutoAdjustSampleDistances
represents the common properties for rendering a volume.
vtkRenderer ** RenderRendererTable
int GetMaxPixelListSize()
Maximum size allowed for a pixel list.