[vtkusers] vtkSmartVolumeMapper ignoring clipping
Richard Whitehead
richard.whitehead at vivosight.com
Fri Apr 11 11:21:54 EDT 2014
David,
Thanks very much for replying. The filter is actually doing exactly what I
want - I don't want the data to be altered or reallocated, I just want to
mark its extent as reduced. It sounds like it should be doing a bit
more ("physically
clipping the Extent"?) and then the upstream filters would understand, is
that correct?
Can you advise whether I should instead use another filter (such as
vtkImageReslice or vtkExtractVOI), or would it be better to continue with
what I have done which is to remember the clipping in my app? Performance
is an issue here, the extent may be updated several times a second, and the
memory volume is reasonably large.
Many thanks,
Richard
On 11 April 2014 13:49, David Gobbi <david.gobbi at gmail.com> wrote:
> Hi Richard,
>
> The vtkImageClip filter performs what I consider to be an undesirable
> optimization, by default it simply modifies the WholeExtent in the
> image information instead of actually clipping the data. See the
> doxygen page on this filter for more info.
>
> The volume mappers generally ignore the WholeExtent, instead what
> they do is ask the pipeline to update the whole image, and then they
> render whatever data is present. Since vtkImageClip only modifies the
> WholeExtent info, without physically clipping the Extent, the effects
> of vtkImageClip are ignored.
>
> I do not consider this to be a bug in the volume mappers. I consider
> it to be an unwise optimization in vtkImageClip that does something
> that is unexpected not only to users, but also to downstream filters
> and mappers.
>
> David
>
> On Fri, Apr 11, 2014 at 4:28 AM, Richard Whitehead
> <richard.whitehead at vivosight.com> wrote:
> >
> > This looks like a bug in VTK?
> >
> > I'm visualising a memory volume (vtkImageData) which is then connected
> to a
> > vtkImageClip so that only the valid parts of the volume are rendered.
> >
> > Connecting that clipper into a vtkImageViewer2 to view slices works fine;
> > the invalid part of a slice is clipped off.
> >
> > But connecting that same clipper into a vtkSmartVolumeMapper, which is
> set
> > as the mapper of a vtkVolume, the display always shows the whole extent
> of
> > my memory volume, ignoring the clipping.
> > I have set CroppingOn on the mapper, no effect.
> >
> > If I set the mapper's clipping region with SetCroppingRegionPlanes then
> it
> > clips as expected, but I would have expected the mapper to take notice of
> > the "whole region" given by the clipper without me having to pass the
> clip
> > information around my program myself.
> >
> > Please can someone tell me if this is wrong, or if not for now perhaps a
> > cheat so I can get the clipping region from the clipper and set it on the
> > mapper.
> >
> > Many thanks,
> >
> > Richard
>
--
Richard Whitehead *-* Senior Imaging Engineer
*Michelson Diagnostics Ltd*
*M:* +44 (0)7905 955276 *T:* +44 (0)20 8308 1695
*E: *richard.whitehead at vivosight.com *W:* www.vivosight.com
<http://www.vivosight.com/>
Michelson Diagnostics Ltd, 1 Grays Farm Production Village, Grays Farm
Road, Orpington, Kent BR5 3BD, UK
Registered Office: 3 Shearwater, Maidstone, ME16 0DW. Registered in
England No. 5732681
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20140411/5d1c9442/attachment.html>
More information about the vtkusers
mailing list