[vtkusers] Updating color transfer function for GPU volume
Jim Peterson
jimcp at cox.net
Tue Dec 21 07:02:46 EST 2010
Eric and Shashwath,
I believe you will find the vtk pipeline is optimized to only process
"new" data in the pipeline. Unfortunately there is no mechanism that
automatically sets the last change time with a call that changes the
content. What is required is a call to ->Modified() for any object with
changed content. this includes changes to points, cells, scalars,
transformations and maps.
I suggest you add a ->Modified() call to the affected pipeline objects
to cause the ->Update() to recognize the need to re-evaluate the pipeline.
Hope that helps,
Jim
Shashwath T.R. wrote:
> Hi Eric,
>
> Try removing all points and modifying the same color transfer
> function, instead of creating a new one... It seems to work for us.
>
> Shash
>
> On Tue, Dec 21, 2010 at 6:33 AM, Eric Foo <foo at iastate.edu
> <mailto:foo at iastate.edu>> wrote:
>
> Hi all,
>
> Does anyone know how I can update the color transfer function for
> a vtkOpenGLGPUVolumeRayCastMapper type volume?
>
> The volume is constructed like so:
>
> _volumeProperty = vtkVolumeProperty::New();
> _volumeProperty->SetColor(_color);
> _volumeProperty->SetScalarOpacity(_opacity);
> _volumeProperty->SetInterpolationTypeToLinear();
> _volumeProperty->ShadeOff();
>
> _gpuVolumeMapper = vtkOpenGLGPUVolumeRayCastMapper::New();
> _gpuVolumeMapper->SetImageSampleDistance(_imageSampleDistance);
> _gpuVolumeMapper->SetSampleDistance(_sampleDistance);
> _gpuVolumeMapper->AutoAdjustSampleDistancesOff();
> _gpuVolumeMapper->SetInput(_voxels);
>
> _volume = vtkVolume::New();
> _volume->SetProperty(_volumeProperty);
> _volume->SetMapper(_gpuVolumeMapper);
>
> To swap between different predefined color transfer functions, I call:
>
> _volumeProperty->SetColor(someNewColor);
>
> This is where the problem starts. The only way the volume will
> update to the new color is if I delete the current volume mapper
> and then recreate it with the new color transfer function, which
> is bad for performance. I've tried calling _volume->Update() and
> _gpuVolumeMapper->Update(), which doesn't seem to work.
>
> Any help or ideas would be appreciated. Thanks in advance!
>
> eric
> _______________________________________________
> Powered by www.kitware.com <http://www.kitware.com>
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
More information about the vtkusers
mailing list