[vtkusers] Outline of a result from a vtkimagereslicemapper

David Gobbi david.gobbi at gmail.com
Thu Sep 25 10:45:16 EDT 2014


Hi Chris,

Cut the box, not the slice.

 - David

On Thu, Sep 25, 2014 at 8:40 AM, Doug Hoppes <dhoppes at mbfbioscience.com> wrote:
> Thanks for the reply, David.  I still think that I'm missing something
> obvious (once I get the outline working, I'll add the tube filter).
>
>
>
> Here's the pipeline that I'm trying to implement but the outlines seems to
> be a small box in the upper corner of my volume rather than outlining the
> slice.
>
>
>
> ------------
>
> // Create the plane to cut into the volume
>
> m_pSlicePlane = vtkSmartPointer<vtkPlane>::New();
>
>
>
> // the slice mapper extracts a slice from the volume
>
> m_pSliceMapper = vtkSmartPointer<vtkImageResliceMapper>::New();
>
> m_pSliceMapper->SetInputData(GetImageDefinition()->GetImage()->GetImageData());
>
> m_pSliceMapper->SetSlicePlane(m_pSlicePlane);
>
>
>
> // Set it up so that the slice is not affected by the current lighting
> situation
>
> vtkSmartPointer<vtkImageProperty> m_sliceProperty =
> vtkSmartPointer<vtkImageProperty>::New();
>
> m_sliceProperty->SetAmbient(1.0);
>
> m_sliceProperty->SetDiffuse(0.0);
>
> m_sliceProperty->SetOpacity(1.0);
>
> m_sliceProperty->SetInterpolationTypeToLinear();
>
>
>
> // Create the mapper to display the slice
>
> m_pSliceActor = vtkSmartPointer<vtkImageSlice>::New();
>
> m_pSliceActor->SetMapper(m_pSliceMapper);
>
> m_pSliceActor->SetProperty(m_sliceProperty);
>
>
>
> // Add the slice to the scene
>
> m_pSceneManager->AddActor(m_pSliceActor);
>
>
>
> // Cut the slice plane so that we can put an outline around it
>
> vtkSmartPointer<vtkCutter> pCutter = vtkSmartPointer<vtkCutter>::New();
>
> pCutter->SetCutFunction(m_pSliceMapper->GetSlicePlane());
>
> pCutter->SetInputConnection(m_pSliceMapper->GetOutputPort());
>
>
>
> // setup the outline actor
>
> vtkSmartPointer<vtkOutlineFilter> pOutlineFilter =
> vtkSmartPointer<vtkOutlineFilter>::New();
>
> pOutlineFilter->GenerateFacesOn();
>
> pOutlineFilter->SetInputConnection(pCutter->GetOutputPort());
>
>
>
> // Create the mapper to display the outline
>
> vtkSmartPointer<vtkPolyDataMapper> pOutlineMapper =
> vtkSmartPointer<vtkPolyDataMapper>::New();
>
> pOutlineMapper->SetInputConnection(pOutlineFilter->GetOutputPort());
>
>
>
> // Create the actor to display the outline
>
> m_pOutlineActor = vtkSmartPointer<vtkActor>::New();
>
> m_pOutlineActor->GetProperty()->SetColor(1.0,1,0);
>
> m_pOutlineActor->GetProperty()->SetLineWidth(10);
>
> m_pOutlineActor->SetMapper(pOutlineMapper);
>
>
>
> // Add the actor to the scene
>
> m_pSceneManager->AddActor(m_pOutlineActor);
>
> ------------
>
>
>
> From: David Gobbi [mailto:david.gobbi at gmail.com]
> Sent: Thursday, September 18, 2014 4:22 PM
> To: Doug Hoppes
> Cc: vtkusers at vtk.org
> Subject: Re: [vtkusers] Outline of a result from a vtkimagereslicemapper
>
>
>
> Hi Doug,
>
>
>
> In order to create a polydata that outlines the slice, you'll need
>
> to use the vtkCutter:
>
>
>
> 1) use GenerateFacesOn() on the vtkOutlineFilter to make it create
>
> a closed box
>
>
>
> 2) use vtkCutter to cut the box with the slice plane from the mapper
>
> (mapper->GetSlicePlane() or mapper->GetSlicePlaneInDataCoords())
>
> in order to create a polyline that outlines the slice
>
>
>
> 3) I also recommend passing the polyline through vtkTubeFilter in
>
> order to give the outline a finite thickness
>
>
>
>  - David
>
>
>
>
>
>
>
> On Thu, Sep 18, 2014 at 1:00 PM, Doug Hoppes <dhoppes at mbfbioscience.com>
> wrote:
>
> Hi all,
>
>
>
>                 I've gotten the image reslice mapper working beautifully for
> my image volume.  However, I'm trying to get the outline filter to work so
> that I can show a bound region around my image slice.  All I'm showing is a
> small square in the upper left corner:


More information about the vtkusers mailing list