#include <vtkMitkVolumeTextureMapper3D.h>

Definition at line 89 of file vtkMitkVolumeTextureMapper3D.h.
| vtkMitkVolumeTextureMapper3D::vtkMitkVolumeTextureMapper3D | ( | ) | [protected] |
Definition at line 45 of file vtkMitkVolumeTextureMapper3D.cpp.
References ActualSampleDistance, BufferSize, IntersectionBuffer, NumberOfPolygons, PolygonBuffer, SampleDistance, SavedColorChannels, SavedGradientOpacityFunction, SavedGrayFunction, SavedParametersInput, SavedRGBFunction, SavedSampleDistance, SavedScalarOpacityDistance, SavedScalarOpacityFunction, SavedTextureInput, SupportsNonPowerOfTwoTextures, UseCompressedTexture, VolumeDimensions, and VolumeSpacing.
{
//GPU_INFO << "vtkMitkVolumeTextureMapper3D";
this->PolygonBuffer = NULL;
this->IntersectionBuffer = NULL;
this->NumberOfPolygons = 0;
this->BufferSize = 0;
// The input used when creating the textures
this->SavedTextureInput = NULL;
// The input used when creating the color tables
this->SavedParametersInput = NULL;
this->SavedRGBFunction = NULL;
this->SavedGrayFunction = NULL;
this->SavedScalarOpacityFunction = NULL;
this->SavedGradientOpacityFunction = NULL;
this->SavedColorChannels = 0;
this->SavedSampleDistance = 0;
this->SavedScalarOpacityDistance = 0;
/*
this->Volume1 = NULL;
this->Volume2 = NULL;
this->Volume3 = NULL;
*/
/*
this->VolumeSize = 0;
this->VolumeComponents = 0;
*/
this->VolumeSpacing[0] = this->VolumeSpacing[1] = this->VolumeSpacing[2] = 0;
this->VolumeDimensions[0]=0;
this->VolumeDimensions[1]=0;
this->VolumeDimensions[2]=0;
this->SampleDistance = 1.0;
this->ActualSampleDistance = 1.0;
this->UseCompressedTexture = false;
this->SupportsNonPowerOfTwoTextures = false;
//GPU_INFO << "np2: " << (this->SupportsNonPowerOfTwoTextures?1:0);
}
| vtkMitkVolumeTextureMapper3D::~vtkMitkVolumeTextureMapper3D | ( | ) | [protected] |
Definition at line 93 of file vtkMitkVolumeTextureMapper3D.cpp.
References IntersectionBuffer, and PolygonBuffer.
{
//GPU_INFO << "~vtkMitkVolumeTextureMapper3D";
delete [] this->PolygonBuffer;
delete [] this->IntersectionBuffer;
/*
delete [] this->Volume1;
delete [] this->Volume2;
delete [] this->Volume3;
*/
}
| void vtkMitkVolumeTextureMapper3D::ComputePolygons | ( | vtkRenderer * | ren, |
| vtkVolume * | vol, | ||
| double | bounds[6] | ||
| ) | [protected] |
Definition at line 119 of file vtkMitkVolumeTextureMapper3D.cpp.
References ActualSampleDistance, BufferSize, IntersectionBuffer, matrix(), New(), NumberOfPolygons, PolygonBuffer, and QuadProgPP::t().
Referenced by vtkMitkOpenGLVolumeTextureMapper3D::RenderPolygons().
{
//GPU_INFO << "ComputePolygons";
// Get the camera position and focal point
double focalPoint[4], position[4];
double plane[4];
vtkCamera *camera = ren->GetActiveCamera();
camera->GetPosition( position );
camera->GetFocalPoint( focalPoint );
position[3] = 1.0;
focalPoint[3] = 1.0;
// Pass the focal point and position through the inverse of the
// volume's matrix to map back into the data coordinates. We
// are going to compute these polygons in the coordinate system
// of the input data - this is easiest since this data must be
// axis aligned. Then we'll use OpenGL to transform these polygons
// into the world coordinate system through the use of the
// volume's matrix.
vtkMatrix4x4 *matrix = vtkMatrix4x4::New();
vol->GetMatrix( matrix );
matrix->Invert();
matrix->MultiplyPoint( position, position );
matrix->MultiplyPoint( focalPoint, focalPoint );
matrix->Delete();
if ( position[3] )
{
position[0] /= position[3];
position[1] /= position[3];
position[2] /= position[3];
}
if ( focalPoint[3] )
{
focalPoint[0] /= focalPoint[3];
focalPoint[1] /= focalPoint[3];
focalPoint[2] /= focalPoint[3];
}
// Create a plane equation using the direction and position of the camera
plane[0] = focalPoint[0] - position[0];
plane[1] = focalPoint[1] - position[1];
plane[2] = focalPoint[2] - position[2];
vtkMath::Normalize( plane );
plane[3] = -(plane[0] * position[0] + plane[1] * position[1] +
plane[2] * position[2]);
// Find the min and max distances of the boundary points of the volume
double minDistance = VTK_DOUBLE_MAX;
double maxDistance = VTK_DOUBLE_MIN;
// The inBounds parameter is the bounds we are using for clipping the
// texture planes against. First we need to clip these against the bounds
// of the volume to make sure they don't exceed it.
double volBounds[6];
this->GetInput()->GetBounds( volBounds );
double bounds[6];
bounds[0] = (inBounds[0]>volBounds[0])?(inBounds[0]):(volBounds[0]);
bounds[1] = (inBounds[1]<volBounds[1])?(inBounds[1]):(volBounds[1]);
bounds[2] = (inBounds[2]>volBounds[2])?(inBounds[2]):(volBounds[2]);
bounds[3] = (inBounds[3]<volBounds[3])?(inBounds[3]):(volBounds[3]);
bounds[4] = (inBounds[4]>volBounds[4])?(inBounds[4]):(volBounds[4]);
bounds[5] = (inBounds[5]<volBounds[5])?(inBounds[5]):(volBounds[5]);
// Create 8 vertices for the bounding box we are rendering
int i, j, k;
double vertices[8][3];
int idx = 0;
for ( k = 0; k < 2; k++ )
{
for ( j = 0; j < 2; j++ )
{
for ( i = 0; i < 2; i++ )
{
vertices[idx][2] = bounds[4+k];
vertices[idx][1] = bounds[2+j];
vertices[idx][0] = bounds[i];
double d =
plane[0] * vertices[idx][0] +
plane[1] * vertices[idx][1] +
plane[2] * vertices[idx][2] +
plane[3];
idx++;
// Keep track of closest and farthest point
minDistance = (d<minDistance)?(d):(minDistance);
maxDistance = (d>maxDistance)?(d):(maxDistance);
}
}
}
int dim[6];
this->GetVolumeDimensions(dim);
float tCoordOffset[3], tCoordScale[3];
tCoordOffset[0] = 0.5 / dim[0];
tCoordOffset[1] = 0.5 / dim[1];
tCoordOffset[2] = 0.5 / dim[2];
tCoordScale[0] = (dim[0]-1) / static_cast<float>(dim[0]);
tCoordScale[1] = (dim[1]-1) / static_cast<float>(dim[1]);
tCoordScale[2] = (dim[2]-1) / static_cast<float>(dim[2]);
float spacing[3];
this->GetVolumeSpacing( spacing );
double offset =
0.333 * 0.5 * (spacing[0] + spacing[1] + spacing[2]);
minDistance += 0.1*offset;
maxDistance -= 0.1*offset;
minDistance = (minDistance < offset)?(offset):(minDistance);
double stepSize = this->ActualSampleDistance;
// Determine the number of polygons
int numPolys = static_cast<int>(
(maxDistance - minDistance)/static_cast<double>(stepSize));
// Check if we have space, free old space only if it is too small
if ( this->BufferSize < numPolys )
{
delete [] this->PolygonBuffer;
delete [] this->IntersectionBuffer;
this->BufferSize = numPolys;
this->PolygonBuffer = new float [36*this->BufferSize];
this->IntersectionBuffer = new float [12*this->BufferSize];
}
this->NumberOfPolygons = numPolys;
// Compute the intersection points for each edge of the volume
int lines[12][2] = { {0,1}, {1,3}, {2,3}, {0,2},
{4,5}, {5,7}, {6,7}, {4,6},
{0,4}, {1,5}, {3,7}, {2,6} };
float *iptr, *pptr;
for ( i = 0; i < 12; i++ )
{
double line[3];
line[0] = vertices[lines[i][1]][0] - vertices[lines[i][0]][0];
line[1] = vertices[lines[i][1]][1] - vertices[lines[i][0]][1];
line[2] = vertices[lines[i][1]][2] - vertices[lines[i][0]][2];
double d = maxDistance;
iptr = this->IntersectionBuffer + i;
double planeDotLineOrigin = vtkMath::Dot( plane, vertices[lines[i][0]] );
double planeDotLine = vtkMath::Dot( plane, line );
double t, increment;
if ( planeDotLine != 0.0 )
{
t = (d - planeDotLineOrigin - plane[3] ) / planeDotLine;
increment = -stepSize / planeDotLine;
}
else
{
t = -1.0;
increment = 0.0;
}
for ( j = 0; j < numPolys; j++ )
{
*iptr = (t > 0.0 && t < 1.0)?(t):(-1.0);
t += increment;
iptr += 12;
}
}
// Compute the polygons by determining which edges were intersected
int neighborLines[12][6] =
{ { 1, 2, 3, 4, 8, 9}, { 0, 2, 3, 5, 9, 10},
{ 0, 1, 3, 6, 10, 11}, { 0, 1, 2, 7, 8, 11},
{ 0, 5, 6, 7, 8, 9}, { 1, 4, 6, 7, 9, 10},
{ 2, 4, 5, 7, 10, 11}, { 3, 4, 5, 6, 8, 11},
{ 0, 3, 4, 7, 9, 11}, { 0, 1, 4, 5, 8, 10},
{ 1, 2, 5, 6, 9, 11}, { 2, 3, 6, 7, 8, 10} };
float tCoord[12][4] =
{{0,0,0,0}, {1,0,0,1}, {0,1,0,0}, {0,0,0,1},
{0,0,1,0}, {1,0,1,1}, {0,1,1,0}, {0,0,1,1},
{0,0,0,2}, {1,0,0,2}, {1,1,0,2}, {0,1,0,2}};
double low[3];
double high[3];
low[0] = (bounds[0] - volBounds[0]) / (volBounds[1] - volBounds[0]);
high[0] = (bounds[1] - volBounds[0]) / (volBounds[1] - volBounds[0]);
low[1] = (bounds[2] - volBounds[2]) / (volBounds[3] - volBounds[2]);
high[1] = (bounds[3] - volBounds[2]) / (volBounds[3] - volBounds[2]);
low[2] = (bounds[4] - volBounds[4]) / (volBounds[5] - volBounds[4]);
high[2] = (bounds[5] - volBounds[4]) / (volBounds[5] - volBounds[4]);
for ( i = 0; i < 12; i++ )
{
tCoord[i][0] = (tCoord[i][0])?(high[0]):(low[0]);
tCoord[i][1] = (tCoord[i][1])?(high[1]):(low[1]);
tCoord[i][2] = (tCoord[i][2])?(high[2]):(low[2]);
}
iptr = this->IntersectionBuffer;
pptr = this->PolygonBuffer;
for ( i = 0; i < numPolys; i++ )
{
// Look for a starting point
int start = 0;
while ( start < 12 && iptr[start] == -1.0 )
{
start++;
}
if ( start == 12 )
{
pptr[0] = -1.0;
}
else
{
int current = start;
int previous = -1;
int errFlag = 0;
idx = 0;
while ( idx < 6 && !errFlag && ( idx == 0 || current != start) )
{
double t = iptr[current];
*(pptr + idx*6) =
tCoord[current][0] * tCoordScale[0] + tCoordOffset[0];
*(pptr + idx*6 + 1) =
tCoord[current][1] * tCoordScale[1] + tCoordOffset[1];
*(pptr + idx*6 + 2) =
tCoord[current][2] * tCoordScale[2] + tCoordOffset[2];
int coord = static_cast<int>(tCoord[current][3]);
*(pptr + idx*6 + coord) =
(low[coord] + t*(high[coord]-low[coord]))*tCoordScale[coord] + tCoordOffset[coord];
*(pptr + idx*6 + 3) = static_cast<float>(
vertices[lines[current][0]][0] +
t*(vertices[lines[current][1]][0] - vertices[lines[current][0]][0]));
*(pptr + idx*6 + 4) = static_cast<float>(
vertices[lines[current][0]][1] +
t*(vertices[lines[current][1]][1] - vertices[lines[current][0]][1]));
*(pptr + idx*6 + 5) = static_cast<float>(
vertices[lines[current][0]][2] +
t*(vertices[lines[current][1]][2] - vertices[lines[current][0]][2]));
idx++;
j = 0;
while ( j < 6 &&
(*(this->IntersectionBuffer + i*12 +
neighborLines[current][j]) < 0 ||
neighborLines[current][j] == previous) )
{
j++;
}
if ( j >= 6 )
{
errFlag = 1;
}
else
{
previous = current;
current = neighborLines[current][j];
}
}
if ( idx < 6 )
{
*(pptr + idx*6) = -1;
}
}
iptr += 12;
pptr += 36;
}
}
| virtual int vtkMitkVolumeTextureMapper3D::IsRenderSupported | ( | vtkRenderer * | , |
| vtkVolumeProperty * | |||
| ) | [pure virtual] |
Implemented in vtkMitkOpenGLVolumeTextureMapper3D.
Referenced by mitk::GPUVolumeMapper3D::InitGPU().
| virtual int vtkMitkVolumeTextureMapper3D::IsTextureSizeSupported | ( | int | vtkNotUsed(size)[3], |
| int | vtkNotUsedcomponents | ||
| ) | [inline, protected, virtual] |
Definition at line 217 of file vtkMitkVolumeTextureMapper3D.h.
{
return 0;
}
| vtkMitkVolumeTextureMapper3D * vtkMitkVolumeTextureMapper3D::New | ( | void | ) | [static] |
Reimplemented in vtkMitkOpenGLVolumeTextureMapper3D.
Definition at line 108 of file vtkMitkVolumeTextureMapper3D.cpp.
Referenced by ComputePolygons().
{
//GPU_INFO << "New";
// First try to create the object from the vtkObjectFactory
vtkObject* ret =
vtkVolumeRenderingFactory::CreateInstance("vtkMitkVolumeTextureMapper3D");
return static_cast<vtkMitkVolumeTextureMapper3D *>(ret);
}
| void vtkMitkVolumeTextureMapper3D::PrintSelf | ( | ostream & | os, |
| vtkIndent | indent | ||
| ) |
Reimplemented in vtkMitkOpenGLVolumeTextureMapper3D.
Definition at line 724 of file vtkMitkVolumeTextureMapper3D.cpp.
References ActualSampleDistance, NumberOfPolygons, SampleDistance, UseCompressedTexture, VolumeDimensions, and VolumeSpacing.
{
this->Superclass::PrintSelf(os,indent);
os << indent << "Sample Distance: " << this->SampleDistance << endl;
os << indent << "NumberOfPolygons: " << this->NumberOfPolygons << endl;
os << indent << "ActualSampleDistance: "
<< this->ActualSampleDistance << endl;
os << indent << "VolumeDimensions: " << this->VolumeDimensions[0] << " "
<< this->VolumeDimensions[1] << " " << this->VolumeDimensions[2] << endl;
os << indent << "VolumeSpacing: " << this->VolumeSpacing[0] << " "
<< this->VolumeSpacing[1] << " " << this->VolumeSpacing[2] << endl;
os << indent << "UseCompressedTexture: " << this->UseCompressedTexture
<< endl;
}
| virtual void vtkMitkVolumeTextureMapper3D::Render | ( | vtkRenderer * | , |
| vtkVolume * | |||
| ) | [inline, virtual] |
Reimplemented in vtkMitkOpenGLVolumeTextureMapper3D.
Definition at line 136 of file vtkMitkVolumeTextureMapper3D.h.
{};
| int vtkMitkVolumeTextureMapper3D::UpdateColorLookup | ( | vtkVolume * | vol ) | [protected] |
Definition at line 438 of file vtkMitkVolumeTextureMapper3D.cpp.
References ActualSampleDistance, AlphaLookup, ColorLookup, ColorTableSize, QuadProgPP::pow(), SampleDistance, SavedColorChannels, SavedGradientOpacityFunction, SavedGrayFunction, SavedParametersInput, SavedParametersMTime, SavedRGBFunction, SavedSampleDistance, SavedScalarOpacityDistance, SavedScalarOpacityFunction, TempArray1, and TempArray2.
{
//GPU_INFO << "UpdateColorLookup";
int needToUpdate = 0;
// Get the image data
vtkImageData *input = this->GetInput();
input->Update();
// Has the volume changed in some way?
if ( this->SavedParametersInput != input ||
this->SavedParametersMTime.GetMTime() < input->GetMTime() )
{
needToUpdate = 1;
}
// What sample distance are we going to use for rendering? If we
// have to render quickly according to our allocated render time,
// don't necessary obey the sample distance requested by the user.
// Instead set the sample distance to the average spacing.
this->ActualSampleDistance = this->SampleDistance;
if ( vol->GetAllocatedRenderTime() < 1.0 )
{
float spacing[3];
this->GetVolumeSpacing(spacing);
this->ActualSampleDistance =
0.333 * (static_cast<double>(spacing[0]) + static_cast<double>(spacing[1]) + static_cast<double>(spacing[2]));
}
// How many components?
int components = input->GetNumberOfScalarComponents();
// Has the sample distance changed?
if ( this->SavedSampleDistance != this->ActualSampleDistance )
{
needToUpdate = 1;
}
vtkColorTransferFunction *rgbFunc = NULL;
vtkPiecewiseFunction *grayFunc = NULL;
// How many color channels for this component?
int colorChannels = vol->GetProperty()->GetColorChannels(0);
if ( components < 3 )
{
// Has the number of color channels changed?
if ( this->SavedColorChannels != colorChannels )
{
needToUpdate = 1;
}
// Has the color transfer function changed in some way,
// and we are using it?
if ( colorChannels == 3 )
{
rgbFunc = vol->GetProperty()->GetRGBTransferFunction(0);
if ( this->SavedRGBFunction != rgbFunc ||
this->SavedParametersMTime.GetMTime() < rgbFunc->GetMTime() )
{
needToUpdate = 1;
}
}
// Has the gray transfer function changed in some way,
// and we are using it?
if ( colorChannels == 1 )
{
grayFunc = vol->GetProperty()->GetGrayTransferFunction(0);
if ( this->SavedGrayFunction != grayFunc ||
this->SavedParametersMTime.GetMTime() < grayFunc->GetMTime() )
{
needToUpdate = 1;
}
}
}
// Has the scalar opacity transfer function changed in some way?
vtkPiecewiseFunction *scalarOpacityFunc =
vol->GetProperty()->GetScalarOpacity(0);
if ( this->SavedScalarOpacityFunction != scalarOpacityFunc ||
this->SavedParametersMTime.GetMTime() <
scalarOpacityFunc->GetMTime() )
{
needToUpdate = 1;
}
// Has the gradient opacity transfer function changed in some way?
vtkPiecewiseFunction *gradientOpacityFunc =
vol->GetProperty()->GetGradientOpacity(0);
if ( this->SavedGradientOpacityFunction != gradientOpacityFunc ||
this->SavedParametersMTime.GetMTime() <
gradientOpacityFunc->GetMTime() )
{
needToUpdate = 1;
}
double scalarOpacityDistance =
vol->GetProperty()->GetScalarOpacityUnitDistance(0);
if ( this->SavedScalarOpacityDistance != scalarOpacityDistance )
{
needToUpdate = 1;
}
// If we have not found any need to update, return now
if ( !needToUpdate )
{
return 0;
}
this->SavedRGBFunction = rgbFunc;
this->SavedGrayFunction = grayFunc;
this->SavedScalarOpacityFunction = scalarOpacityFunc;
this->SavedGradientOpacityFunction = gradientOpacityFunc;
this->SavedColorChannels = colorChannels;
this->SavedSampleDistance = this->ActualSampleDistance;
this->SavedScalarOpacityDistance = scalarOpacityDistance;
this->SavedParametersInput = input;
this->SavedParametersMTime.Modified();
// Find the scalar range
double scalarRange[2];
input->GetPointData()->GetScalars()->GetRange(scalarRange, components-1);
int arraySizeNeeded = this->ColorTableSize;
if ( components < 3 )
{
// Sample the transfer functions between the min and max.
if ( colorChannels == 1 )
{
grayFunc->GetTable( scalarRange[0], scalarRange[1],
arraySizeNeeded, this->TempArray1 );
}
else
{
rgbFunc->GetTable( scalarRange[0], scalarRange[1],
arraySizeNeeded, this->TempArray1 );
}
}
scalarOpacityFunc->GetTable( scalarRange[0], scalarRange[1],
arraySizeNeeded, this->TempArray2 );
float goArray[256];
gradientOpacityFunc->GetTable( 0, (scalarRange[1] - scalarRange[0])*0.25,
256, goArray );
// Correct the opacity array for the spacing between the planes.
int i;
float *fptr2 = this->TempArray2;
double factor = this->ActualSampleDistance / scalarOpacityDistance;
for ( i = 0; i < arraySizeNeeded; i++ )
{
if ( *fptr2 > 0.0001 )
{
*fptr2 = 1.0-pow(static_cast<double>(1.0-(*fptr2)),factor);
}
fptr2++;
}
int goLoop;
unsigned char *ptr, *rgbptr, *aptr;
float *fptr1;
switch (components)
{
case 1:
// Move the two temp float arrays into one RGBA unsigned char array
ptr = this->ColorLookup;
for ( goLoop = 0; goLoop < 256; goLoop++ )
{
fptr1 = this->TempArray1;
fptr2 = this->TempArray2;
if ( colorChannels == 1 )
{
for ( i = 0; i < arraySizeNeeded; i++ )
{
*(ptr++) = static_cast<unsigned char>(*(fptr1)*255.0 + 0.5);
*(ptr++) = static_cast<unsigned char>(*(fptr1)*255.0 + 0.5);
*(ptr++) = static_cast<unsigned char>(*(fptr1++)*255.0 + 0.5);
*(ptr++) = static_cast<unsigned char>(*(fptr2++)*goArray[goLoop]*255.0 + 0.5);
}
}
else
{
for ( i = 0; i < arraySizeNeeded; i++ )
{
*(ptr++) = static_cast<unsigned char>(*(fptr1++)*255.0 + 0.5);
*(ptr++) = static_cast<unsigned char>(*(fptr1++)*255.0 + 0.5);
*(ptr++) = static_cast<unsigned char>(*(fptr1++)*255.0 + 0.5);
*(ptr++) = static_cast<unsigned char>(*(fptr2++)*goArray[goLoop]*255.0 + 0.5);
}
}
for ( ; i < 256; i++ )
{
*(ptr++) = 0;
*(ptr++) = 0;
*(ptr++) = 0;
*(ptr++) = 0;
}
}
break;
case 2:
// Move the two temp float arrays into one RGB unsigned char array and
// one alpha array.
rgbptr = this->ColorLookup;
aptr = this->AlphaLookup;
if ( colorChannels == 1 )
{
for ( i = 0; i < arraySizeNeeded; i++ )
{
fptr1 = this->TempArray1;
fptr2 = this->TempArray2;
for ( goLoop = 0; goLoop < 256; goLoop++ )
{
*(rgbptr++) = static_cast<unsigned char>(*(fptr1)*255.0 + 0.5);
*(rgbptr++) = static_cast<unsigned char>(*(fptr1)*255.0 + 0.5);
*(rgbptr++) = static_cast<unsigned char>(*(fptr1++)*255.0 + 0.5);
*(aptr++) = static_cast<unsigned char>(*(fptr2++)*goArray[goLoop]*255.0 + 0.5);
}
}
}
else
{
fptr1 = this->TempArray1;
fptr2 = this->TempArray2;
for ( i = 0; i < arraySizeNeeded; i++ )
{
for ( goLoop = 0; goLoop < 256; goLoop++ )
{
*(rgbptr++) = static_cast<unsigned char>(*(fptr1)*255.0 + 0.5);
*(rgbptr++) = static_cast<unsigned char>(*(fptr1+1)*255.0 + 0.5);
*(rgbptr++) = static_cast<unsigned char>(*(fptr1+2)*255.0 + 0.5);
*(aptr++) = static_cast<unsigned char>(*(fptr2)*goArray[goLoop]*255.0 + 0.5);
}
fptr1+=3;
fptr2++;
}
}
for ( ; i < 256; i++ )
{
for ( goLoop = 0; goLoop < 256; goLoop++ )
{
*(rgbptr++) = 0;
*(rgbptr++) = 0;
*(rgbptr++) = 0;
*(aptr++) = 0;
}
}
break;
case 3:
case 4:
// Move the two temp float arrays into one alpha array
aptr = this->AlphaLookup;
for ( goLoop = 0; goLoop < 256; goLoop++ )
{
fptr2 = this->TempArray2;
for ( i = 0; i < arraySizeNeeded; i++ )
{
*(aptr++) = static_cast<unsigned char>(*(fptr2++)*goArray[goLoop]*255.0 + 0.5);
}
for ( ; i < 256; i++ )
{
*(aptr++) = 0;
}
}
break;
}
return 1;
}
| void vtkMitkVolumeTextureMapper3D::UpdateMTime | ( | ) |
Definition at line 429 of file vtkMitkVolumeTextureMapper3D.cpp.
References SavedTextureMTime.
Referenced by mitk::GPUVolumeMapper3D::MitkRenderVolumetricGeometry().
{
this->SavedTextureMTime.Modified();
}
| vtkMitkVolumeTextureMapper3D::vtkGetMacro | ( | NumberOfPolygons | , |
| int | |||
| ) |
| vtkMitkVolumeTextureMapper3D::vtkGetMacro | ( | SampleDistance | , |
| float | |||
| ) |
| vtkMitkVolumeTextureMapper3D::vtkGetMacro | ( | ActualSampleDistance | , |
| float | |||
| ) |
| vtkMitkVolumeTextureMapper3D::vtkGetMacro | ( | UseCompressedTexture | , |
| bool | |||
| ) |
| vtkMitkVolumeTextureMapper3D::vtkGetVectorMacro | ( | VolumeDimensions | , |
| int | , | ||
| 3 | |||
| ) |
| vtkMitkVolumeTextureMapper3D::vtkGetVectorMacro | ( | VolumeSpacing | , |
| float | , | ||
| 3 | |||
| ) |
| vtkMitkVolumeTextureMapper3D::vtkSetMacro | ( | UseCompressedTexture | , |
| bool | |||
| ) |
| vtkMitkVolumeTextureMapper3D::vtkSetMacro | ( | SampleDistance | , |
| float | |||
| ) |
| vtkMitkVolumeTextureMapper3D::vtkTypeRevisionMacro | ( | vtkMitkVolumeTextureMapper3D | , |
| vtkVolumeMapper | |||
| ) |
float vtkMitkVolumeTextureMapper3D::ActualSampleDistance [protected] |
Definition at line 174 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by ComputePolygons(), PrintSelf(), UpdateColorLookup(), and vtkMitkVolumeTextureMapper3D().
unsigned char vtkMitkVolumeTextureMapper3D::AlphaLookup[65536] [protected] |
Definition at line 188 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateColorLookup().
int vtkMitkVolumeTextureMapper3D::BufferSize [protected] |
Definition at line 158 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by ComputePolygons(), and vtkMitkVolumeTextureMapper3D().
unsigned char vtkMitkVolumeTextureMapper3D::ColorLookup[65536 *4] [protected] |
Definition at line 187 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateColorLookup().
float vtkMitkVolumeTextureMapper3D::ColorTableOffset [protected] |
Definition at line 193 of file vtkMitkVolumeTextureMapper3D.h.
float vtkMitkVolumeTextureMapper3D::ColorTableScale [protected] |
Definition at line 192 of file vtkMitkVolumeTextureMapper3D.h.
int vtkMitkVolumeTextureMapper3D::ColorTableSize [protected] |
Definition at line 191 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateColorLookup().
unsigned char vtkMitkVolumeTextureMapper3D::DiffuseLookup[65536 *4] [protected] |
Definition at line 195 of file vtkMitkVolumeTextureMapper3D.h.
float* vtkMitkVolumeTextureMapper3D::IntersectionBuffer [protected] |
Definition at line 156 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by ComputePolygons(), vtkMitkVolumeTextureMapper3D(), and ~vtkMitkVolumeTextureMapper3D().
int vtkMitkVolumeTextureMapper3D::NumberOfPolygons [protected] |
Definition at line 157 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by ComputePolygons(), PrintSelf(), vtkMitkOpenGLVolumeTextureMapper3D::RenderPolygons(), and vtkMitkVolumeTextureMapper3D().
float* vtkMitkVolumeTextureMapper3D::PolygonBuffer [protected] |
Definition at line 155 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by ComputePolygons(), vtkMitkOpenGLVolumeTextureMapper3D::RenderPolygons(), vtkMitkVolumeTextureMapper3D(), and ~vtkMitkVolumeTextureMapper3D().
float vtkMitkVolumeTextureMapper3D::SampleDistance [protected] |
Definition at line 173 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by PrintSelf(), UpdateColorLookup(), and vtkMitkVolumeTextureMapper3D().
int vtkMitkVolumeTextureMapper3D::SavedColorChannels [protected] |
Definition at line 183 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateColorLookup(), and vtkMitkVolumeTextureMapper3D().
vtkPiecewiseFunction* vtkMitkVolumeTextureMapper3D::SavedGradientOpacityFunction [protected] |
Definition at line 182 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateColorLookup(), and vtkMitkVolumeTextureMapper3D().
vtkPiecewiseFunction* vtkMitkVolumeTextureMapper3D::SavedGrayFunction [protected] |
Definition at line 180 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateColorLookup(), and vtkMitkVolumeTextureMapper3D().
vtkImageData* vtkMitkVolumeTextureMapper3D::SavedParametersInput [protected] |
Definition at line 177 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateColorLookup(), and vtkMitkVolumeTextureMapper3D().
vtkTimeStamp vtkMitkVolumeTextureMapper3D::SavedParametersMTime [protected] |
Definition at line 199 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateColorLookup().
vtkColorTransferFunction* vtkMitkVolumeTextureMapper3D::SavedRGBFunction [protected] |
Definition at line 179 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateColorLookup(), and vtkMitkVolumeTextureMapper3D().
float vtkMitkVolumeTextureMapper3D::SavedSampleDistance [protected] |
Definition at line 184 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateColorLookup(), and vtkMitkVolumeTextureMapper3D().
float vtkMitkVolumeTextureMapper3D::SavedScalarOpacityDistance [protected] |
Definition at line 185 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateColorLookup(), and vtkMitkVolumeTextureMapper3D().
vtkPiecewiseFunction* vtkMitkVolumeTextureMapper3D::SavedScalarOpacityFunction [protected] |
Definition at line 181 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateColorLookup(), and vtkMitkVolumeTextureMapper3D().
vtkImageData* vtkMitkVolumeTextureMapper3D::SavedTextureInput [protected] |
Definition at line 176 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by vtkMitkVolumeTextureMapper3D().
vtkTimeStamp vtkMitkVolumeTextureMapper3D::SavedTextureMTime [protected] |
Definition at line 198 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateMTime().
unsigned char vtkMitkVolumeTextureMapper3D::SpecularLookup[65536 *4] [protected] |
Definition at line 196 of file vtkMitkVolumeTextureMapper3D.h.
bool vtkMitkVolumeTextureMapper3D::SupportsNonPowerOfTwoTextures [protected] |
float vtkMitkVolumeTextureMapper3D::TempArray1[3 *4096] [protected] |
Definition at line 189 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateColorLookup().
float vtkMitkVolumeTextureMapper3D::TempArray2[4096] [protected] |
Definition at line 190 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by UpdateColorLookup().
bool vtkMitkVolumeTextureMapper3D::UseCompressedTexture [protected] |
Definition at line 201 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by PrintSelf(), and vtkMitkVolumeTextureMapper3D().
int vtkMitkVolumeTextureMapper3D::VolumeDimensions[3] [protected] |
Definition at line 170 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by vtkMitkOpenGLVolumeTextureMapper3D::ComputeVolumeDimensions(), PrintSelf(), and vtkMitkVolumeTextureMapper3D().
float vtkMitkVolumeTextureMapper3D::VolumeSpacing[3] [protected] |
Definition at line 171 of file vtkMitkVolumeTextureMapper3D.h.
Referenced by vtkMitkOpenGLVolumeTextureMapper3D::ComputeVolumeDimensions(), PrintSelf(), and vtkMitkVolumeTextureMapper3D().
1.7.2