38#ifndef vtkUnstructuredGridVolumeZSweepMapper_h
39#define vtkUnstructuredGridVolumeZSweepMapper_h
41#include "vtkRenderingVolumeModule.h"
63 class vtkPixelListFrame;
66 class vtkSimpleScreenEdge;
67 class vtkDoubleScreenEdge;
69 class vtkPixelListEntryMemory;
89 vtkSetClampMacro( ImageSampleDistance,
float, 0.1f, 100.0f );
90 vtkGetMacro( ImageSampleDistance,
float );
98 vtkSetClampMacro( MinimumImageSampleDistance,
float, 0.1f, 100.0f );
99 vtkGetMacro( MinimumImageSampleDistance,
float );
107 vtkSetClampMacro( MaximumImageSampleDistance,
float, 0.1f, 100.0f );
108 vtkGetMacro( MaximumImageSampleDistance,
float );
118 vtkSetClampMacro( AutoAdjustSampleDistances,
int, 0, 1 );
119 vtkGetMacro( AutoAdjustSampleDistances,
int );
128 vtkSetClampMacro( IntermixIntersectingGeometry,
int, 0, 1 );
129 vtkGetMacro( IntermixIntersectingGeometry,
int );
165 vtkGetVectorMacro( ImageInUseSize,
int, 2 );
166 vtkGetVectorMacro( ImageOrigin,
int, 2 );
167 vtkGetVectorMacro( ImageViewportSize,
int , 2 );
227 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve0,
228 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve1,
229 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve2,
239 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkScreenEdge *left,
240 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkScreenEdge *right,
250 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *v0,
251 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *v1,
297 int ImageViewportSize[2];
303 int ImageMemorySize[2];
309 int ImageInUseSize[2];
331 int ZBufferOrigin[2];
339 double FaceScalars[2];
342 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSpan *
Span;
343 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkPixelListFrame *
PixelListFrame;
348 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkUseSet *
UseSet;
351 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertices *
Vertices;
361 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSimpleScreenEdge *
SimpleEdge;
362 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkDoubleScreenEdge *
DoubleEdge;
378 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 a 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 exitFace)
Perform scan conversion of a triangle defined by its vertices.
vtkRenderer ** RenderRendererTable
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSimpleScreenEdge * SimpleEdge
vtkIdType MaxRecordedPixelListSize
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.
int AutoAdjustSampleDistances
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.
void Render(vtkRenderer *ren, vtkVolume *vol)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
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 PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
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
int 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
~vtkUnstructuredGridVolumeZSweepMapper()
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkDoubleScreenEdge * DoubleEdge
represents the common properties for rendering a volume.
represents a volume (data & properties) in a rendered scene
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.