[vtkusers] vtkGPUVolumeRayCastMapper Fails

Sergio Aguirre sergio.aguirre at gmail.com
Mon Jan 23 23:25:40 EST 2012


Hi everyone

I am trying to render some DICOM volumes using vtkGPUolumeRayCastMapper
however it fails and I get the following message:

" render clipped 1 ERROR (x501) Invalid value
Assertion failed: "pre: valid_current_reduction_range" &&
this->ReductionFactor>
0.0 && this->ReductionFactor<=1.0, file
..\..\vtk-5.8.0\VolumeRendering\vtkOpenG
LGPUVolumeRayCastMapper.cxx, line 3906 "

I believe this is a problem caused by my pipeline set up. I have a
requirement to have the following camera configuration:

vtkSmartPointer<vtkCamera> cam = vtkSmartPointer<vtkCamera>::New();
cam->SetPosition(0.0, 0.345, 0.222); // set position to display offset
cam->SetFocalPoint(0.0, 0.0, 0.0); // set cam LookAt
cam->SetViewUp(0.0, 1.0, 0.0); // set View up

Since the camera is looking at a fixed area in space, I need to scale my
DICOM images to fit in this space - I do this in ITK using a filter called
itkChangeInformationImageFilter. The result is that each voxel has "real"
size and spacing (e.g. if the dicom tags say that X,Y spacing is 0.625mm
and Z spacing is 1mm then this filter allows me to import voxels of
0.000625, 0.000625, 0.001 size or smaller.

My configuration of the vtkGPUolumeRayCastMapper is as follows:
dcmMapper->SetMaxMemoryInBytes(536870912);
dcmMapper->SetMaxMemoryFraction(0.80); // trigger GPU
dcmMapper->SetAutoAdjustSampleDistances(0); // no adjust sample distance
dcmMapper->SetImageSampleDistance(0.5);
dcmMapper->SetInput(dcmVImage);
dcmMapper->SetBlendModeToComposite();

The above configuration fails.

I tested other configurations with the following results:

1 - With SetAutoAdjustSampleDistances(0), SetImageSampleDistances(1.0) the
image is "ghostly-flat" = "spacing-camera-noauto-1x.jpg"
2 - With SetAutoAdjustSampleDistances(1), only higher density values are
rendered = "Spacing-camera-auto.jpg"

What I would like to have as a rendered image is the attached image
"normal.jpg" which I rendered with SetAutoAdjustSampleDistances(1) and no
settings on my camera or re-sizing of the images in ITK.

I can achieve the desired output with vtkFixedPointVolumeRayCastMapper (see
"fixed-additive.jpg") using "additive" blending - but I would rather use
the video card for volume rendering.

Is this something I can fix or maybe repair modifying some code of
vtkOpenGLGPUVolumeRayCastMapper? or do I need a larger video card? I am
using a Quadro FX 3700

Any suggestions are appreciated.

Thank you,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120123/bef0d2b5/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: spacing-camera-noauto-1x.jpg
Type: image/jpeg
Size: 14744 bytes
Desc: not available
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120123/bef0d2b5/attachment.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: spacing-camera-auto.jpg
Type: image/jpeg
Size: 6029 bytes
Desc: not available
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120123/bef0d2b5/attachment-0001.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: normal.jpg
Type: image/jpeg
Size: 15813 bytes
Desc: not available
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120123/bef0d2b5/attachment-0002.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fixed-additive.jpg
Type: image/jpeg
Size: 12959 bytes
Desc: not available
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120123/bef0d2b5/attachment-0003.jpg>


More information about the vtkusers mailing list