<div dir="ltr">HI David,<div><br><div>thanks for the feedback. I am following your solution as below:</div><div><br></div><div>vtkImageSliceMapper* myMapper = myActor->GetMapper();<br></div><div>myMapper->SetSliceNumber(sliceNum);<br>
</div><div><br></div><div>However I am getting the following error:</div><div><br></div><div>error: invalid conversion from 'vtkImageMapper3D*' to 'vtkImageSliceMapper*' [-fpermissive]<br></div><div><br></div>
<div>I was not sure how to address this. Am I missing something here?</div><div><br></div><div>-S<br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Mar 4, 2014 at 12:44 PM, David Gobbi <span dir="ltr"><<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Sam,<br>
<br>
There are a couple issues here. First, the mapper for vtkImageActor<br>
is vtkImageSliceMapper, not vtkImageMapper. The vtkImageMapper is not<br>
compatible with vtkImageActor. Second, the mapper is created is<br>
created by the vtkImageActor, so to get the mapper, you should do<br>
this:<br>
<br>
vtkImageSliceMapper *mapper = actor->GetMapper();<br>
<br>
Then, you should be able to use mapper->SetSliceNumber(n) to set the<br>
slice. See the documentation for vtkImageSliceMapper for more<br>
information.<br>
<br>
Also, at least on my computer, the fonts in your emails are tiny and<br>
almost impossible to read... please either fix the fonts, or just send<br>
your emails as plain text.<br>
<span class="HOEnZb"><font color="#888888"><br>
David<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
<br>
<br>
On Tue, Mar 4, 2014 at 11:29 AM, Sam Raby <<a href="mailto:rabysam28@gmail.com">rabysam28@gmail.com</a>> wrote:<br>
> I learnt that this seems to be a bug as reported here:<br>
><br>
> <a href="http://www.paraview.org/Bug/bug_relationship_graph.php?bug_id=3661&graph=dependency" target="_blank">http://www.paraview.org/Bug/bug_relationship_graph.php?bug_id=3661&graph=dependency</a><br>
><br>
> From the link, I figured we can get around this issue by using<br>
> GetDisplayExtent. So the following code works:<br>
><br>
><br>
> // DICOM Reader<br>
><br>
> vtkSmartPointer<vtkDICOMImageReader> reader =<br>
> vtkSmartPointer<vtkDICOMImageReader>::New();<br>
><br>
> reader->SetDirectoryName("/home/Images/DICOM");<br>
><br>
> reader->Update();<br>
><br>
><br>
> // Mapper<br>
><br>
> vtkSmartPointer<vtkImageMapper> imageMapper =<br>
> vtkSmartPointer<vtkImageMapper>::New();<br>
><br>
> imageMapper->SetInputData(reader->GetOutput());<br>
><br>
> imageMapper->SetZSlice(12); // does not work.<br>
><br>
><br>
> // Actor<br>
><br>
> vtkSmartPointer<vtkImageActor> mapActor =<br>
> vtkSmartPointer<vtkImageActor>::New();<br>
><br>
> mapActor->SetInputData(imageMapper->GetInput());<br>
><br>
> mapActor->SetZSlice(12); // this also does not work.<br>
><br>
><br>
><br>
> On Tue, Mar 4, 2014 at 11:10 AM, Sam Raby <<a href="mailto:rabysam28@gmail.com">rabysam28@gmail.com</a>> wrote:<br>
>><br>
>> Hi,<br>
>><br>
>> I am trying to read DICOM series using vtkImageActor. (Note: I know I can<br>
>> read them easily by vtkImageViewer2, however it is not suitable for my<br>
>> application).<br>
>><br>
>> The problem is when I use SetZSlice, it does not update the slice and it<br>
>> always shows the first slice of DICOM. I call SetZSlice in both<br>
>> vtkImageActor and vtkImageMapper but it does not change the slice.<br>
>><br>
>> Thanks for any tips, and here is my simple code:<br>
>><br>
>> // DICOM Reader<br>
>><br>
>> vtkSmartPointer<vtkDICOMImageReader> reader =<br>
>> vtkSmartPointer<vtkDICOMImageReader>::New();<br>
>><br>
>> reader->SetDirectoryName("/home/Images/DICOM");<br>
>><br>
>> reader->Update();<br>
>><br>
>><br>
>> // Mapper<br>
>><br>
>> vtkSmartPointer<vtkImageMapper> imageMapper =<br>
>> vtkSmartPointer<vtkImageMapper>::New();<br>
>><br>
>> imageMapper->SetInputData(reader->GetOutput());<br>
>><br>
>> imageMapper->SetZSlice(12); // does not work.<br>
>><br>
>><br>
>> // Actor<br>
>><br>
>> vtkSmartPointer<vtkImageActor> mapActor =<br>
>> vtkSmartPointer<vtkImageActor>::New();<br>
>><br>
>> mapActor->SetInputData(imageMapper->GetInput());<br>
>><br>
>> mapActor->SetZSlice(12); // this also does not work.<br>
>><br>
>><br>
>> // Visualization<br>
>><br>
>> vtkRenderer *ren=vtkRenderer::New();<br>
>><br>
>> ren->AddActor(mapActor);<br>
>><br>
>> ren->ResetCamera();<br>
>><br>
>><br>
>> vtkSmartPointer<vtkRenderWindow> renderWindow =<br>
>> vtkSmartPointer<vtkRenderWindow>::New();<br>
>><br>
>> renderWindow->AddRenderer(ren);<br>
>><br>
>><br>
>> vtkSmartPointer<vtkRenderWindowInteractor> iren =<br>
>> vtkSmartPointer<vtkRenderWindowInteractor>::New();<br>
>><br>
>> iren->SetRenderWindow(renderWindow);<br>
>><br>
>> iren->Start();<br>
</div></div></blockquote></div><br></div></div>