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