<font color="#008000" size="2"><font color="#008000" size="2">
<div>
<p style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"><font color="#000000">Dear all,</font></span></p>
<p style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 6pt" class="MsoNormal"><span style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"><font color="#000000">I am trying to display a volume and inserting a sphere once the left button of the mouse is clicked.</font></span></p>
<p style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 6pt" class="MsoNormal"><span style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"><font color="#000000">My code is as bellow which is just a modification of one code I’ve found in vtk mailing list.</font></span></p>
<p style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 6pt" class="MsoNormal"><span style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"><font color="#000000">The output of my code is not as I have expected: I got only the spheres on the click but the input volume in which I want to insert the sphere is not displayed. </font></span></p>
<p style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 6pt" class="MsoNormal"><span style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"><font color="#000000">Can someone point me on what is wrong in my code as I am newbie to vtk and I need really your help? </font></span></p>
<p style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 6pt" class="MsoNormal"><span style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"><font color="#000000">Thank you in advance for your time.</font></span></p>
<p style="LINE-HEIGHT: normal; MARGIN: 0cm 0cm 6pt" class="MsoNormal"><span style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"><font color="#000000">Anna</font></span></p>
</div>
<div> </div>
<div> </div>
<div>// displaying a sphere in a volume on a mouse click</div></font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">#include</font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkRenderWindow.h></font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">#include</font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkRenderWindowInteractor.h></font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">#include</font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkRenderer.h></font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">#include</font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkSphereSource.h></font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">#include</font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkPolyDataMapper.h></font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">#include</font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkActor.h></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkSmartPointer.h></font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">#include</font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkPointPicker.h></font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">#include</font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkCamera.h></font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">#include</font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkInteractorStyleTrackballCamera.h></font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">#include</font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkObjectFactory.h></font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">#include</font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkCoordinate.h></font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">#include</font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkProperty.h></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkImageDataGeometryFilter.h></font></font><font color="#008000" size="2"><font color="#008000" size="2">
<p>///</p></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><iostream></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><fstream></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"itkImage.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"itkImageFileReader.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"itkImageFileWriter.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"itkVTKImageExport.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"itkVTKImageImport.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"itkRescaleIntensityImageFilter.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"vtkImageImport.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"vtkImageExport.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"vtkVolumeRayCastCompositeFunction.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"vtkVolume.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"vtkVolumeProperty.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"vtkPiecewiseFunction.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"vtkFixedPointVolumeRayCastMapper.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"vtkColorTransferFunction.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"vtkRenderer.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"vtkRenderWindow.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"vtkRenderWindowInteractor.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"vtkInteractorStyleTrackballCamera.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"vtkVolumeRayCastMapper.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2">"vtkCamera.h"</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkVolumePicker.h></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkSmartPointer.h></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkRendererCollection.h></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkSphereSource.h></font></font><font color="#008000" size="2"><font color="#008000" size="2">
<p>// new</p></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkSphereSource.h></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkPolyDataMapper.h></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkActor.h></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkSmartPointer.h></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkPointPicker.h></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkInteractorStyleTrackballCamera.h></font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkObjectFactory.h></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkCoordinate.h></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>#include</p></font></font><font size="2"> </font><font color="#a31515" size="2"><font color="#a31515" size="2"><vtkProperty.h>
<p></p></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>typedef</p></font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">float</font></font><font size="2"> PixelType; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>const</p></font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">unsigned</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">int</font></font><font size="2"> Dimension = 3; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>typedef</p></font></font><font size="2"> itk::Image< PixelType, Dimension > ImageType;
<p>ImageType::SpacingType gVoxelSpacing;</p></font><font color="#008000" size="2"><font color="#008000" size="2">
<p>// This function will connect the given itk::VTKImageExport filter to the given vtkImageImport filter.</p></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>template</p></font></font><font size="2"> <</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">typename</font></font><font size="2"> ITK_Exporter, </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">typename</font></font><font size="2"> VTK_Importer></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>void</p></font></font><font size="2"> ConnectPipelines(ITK_Exporter exporter, VTK_Importer* importer)
<p>{</p>
<p>importer->SetUpdateInformationCallback(exporter->GetUpdateInformationCallback());</p>
<p>importer->SetPipelineModifiedCallback(exporter->GetPipelineModifiedCallback());</p>
<p>importer->SetWholeExtentCallback(exporter->GetWholeExtentCallback());</p>
<p>importer->SetSpacingCallback(exporter->GetSpacingCallback());</p>
<p>importer->SetOriginCallback(exporter->GetOriginCallback());</p>
<p>importer->SetScalarTypeCallback(exporter->GetScalarTypeCallback());</p>
<p>importer->SetNumberOfComponentsCallback(exporter->GetNumberOfComponentsCallback());</p>
<p>importer->SetPropagateUpdateExtentCallback(exporter->GetPropagateUpdateExtentCallback());</p>
<p>importer->SetUpdateDataCallback(exporter->GetUpdateDataCallback());</p>
<p>importer->SetDataExtentCallback(exporter->GetDataExtentCallback());</p>
<p>importer->SetBufferPointerCallback(exporter->GetBufferPointerCallback());</p>
<p>importer->SetCallbackUserData(exporter->GetCallbackUserData());</p>
<p>}</p>
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">// Define interaction style</font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">class</font></font><font size="2"> MouseInteractorStyle : </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">public</font></font><font size="2"> vtkInteractorStyleTrackballCamera
<p>{</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">public</font></font><font size="2">:
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">static</font></font><font size="2"> MouseInteractorStyle* New();
<p>vtkTypeRevisionMacro(MouseInteractorStyle, vtkInteractorStyleTrackballCamera);</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">virtual</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">void</font></font><font size="2"> OnLeftButtonDown()
<p>{</p>
<p>cout << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">"Pressed left mouse button."</font></font><font size="2"> << endl;
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">// forward events</font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">double</font></font><font size="2"> x = </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">this</font></font><font size="2">->Interactor->GetEventPosition()[0];
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">double</font></font><font size="2"> y = </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">this</font></font><font size="2">->Interactor->GetEventPosition()[1];
<p>cout << x << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">" "</font></font><font size="2"> << y << endl;
<p>vtkSmartPointer<vtkCoordinate> coordinate = vtkSmartPointer<vtkCoordinate>::New();</p>
<p>coordinate->SetCoordinateSystemToDisplay();</p>
<p>coordinate->SetValue(x,y);</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">double</font></font><font size="2"> *pt = </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">new</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">double</font></font><font size="2">[3];
<p>pt = coordinate->GetComputedWorldValue(render);</p>
<p>cout << pt[0] << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">" "</font></font><font size="2"> <<pt[1] << </font><font color="#a31515" size="2"><font color="#a31515" size="2">" "</font></font><font size="2"> << pt[2] << endl;
<p>vtkCamera *camera = render->GetActiveCamera();</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">double</font></font><font size="2"> *n = </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">new</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">double</font></font><font size="2">[2];
<p>n = camera->GetClippingRange();</p>
<p>cout << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">"Cuureent n[0] "</font></font><font size="2"> << n[0]<< endl;
<p>vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();</p>
<p>sphereSource->SetCenter(pt[0],pt[1],pt[2]*1*n[0]);</p>
<p>sphereSource->SetRadius(0.01);</p>
<p>sphereSource->Update();</p>
<p>vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();</p>
<p>mapper->SetInputConnection(sphereSource->GetOutputPort());</p>
<p>vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();</p>
<p>actor->SetMapper(mapper);</p>
<p></p>
<p>render->AddActor(actor);</p>
<p>actor->GetProperty()->SetColor(1,0,0);</p>
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">//render->ResetCamera();</font></font><font size="2">
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">//render->ResetCameraClippingRange();</font></font><font size="2">
<p>render->GetRenderWindow()->GetInteractor()->Render();</p>
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">// vtkInteractorStyleTrackballCamera::OnLeftButtonDown();</font></font><font size="2">
<p>}</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">virtual</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">void</font></font><font size="2"> OnMiddleButtonDown()
<p>{</p>
<p>cout << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">"Pressed middle mouse button."</font></font><font size="2"> << endl;
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">// forward events</font></font><font size="2">
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">//vtkInteractorStyleTrackballCamera::OnMiddleButtonDown();</font></font><font size="2">
<p>}</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">virtual</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">void</font></font><font size="2"> OnRightButtonDown()
<p>{</p>
<p>cout << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">"Pressed right mouse button."</font></font><font size="2"> << endl;
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">// forward events</font></font><font size="2">
<p>vtkInteractorStyleTrackballCamera::OnRightButtonDown();</p>
<p>}</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">virtual</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">void</font></font><font size="2"> OnRightButtonUp()
<p>{</p>
<p>vtkCamera *camera = render->GetActiveCamera();</p>
<p>camera->SetClippingRange(1,30);</p>
<p>vtkInteractorStyleTrackballCamera::OnRightButtonUp();</p>
<p>}</p>
<p>vtkSmartPointer<vtkRenderer> render;</p>
<p>};</p>
<p>vtkCxxRevisionMacro(MouseInteractorStyle, </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">"$Revision: 1.1 $"</font></font><font size="2">);
<p>vtkStandardNewMacro(MouseInteractorStyle);</p>
<p></p>
<p></p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">int</font></font><font size="2"> main ( </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">int</font></font><font size="2"> argc, </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">char</font></font><font size="2">* argv[] )
<p>{</p>
<p></p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">typedef</font></font><font size="2"> itk::ImageFileReader< ImageType > ReaderType;
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">typedef</font></font><font size="2"> itk::ImageFileWriter <ImageType> WriterType;
<p>ReaderType::Pointer reader = ReaderType::New(); </p>
<p>WriterType::Pointer writer = WriterType::New(); </p>
<p>reader->SetFileName(</p></font><font color="#a31515" size="2"><font color="#a31515" size="2">"MyVolume.hdr"</font></font><font size="2">);
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">try</font></font><font size="2">
<p>{</p>
<p>reader->Update(); </p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">const</font></font><font size="2"> ImageType::SizeType imageSize =reader->GetOutput()->GetLargestPossibleRegion().GetSize();
<p>std::cout << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">"ImageSize= "</font></font><font size="2">;
<p>std::cout << imageSize[0] << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">", "</font></font><font size="2"> << imageSize[1] << </font><font color="#a31515" size="2"><font color="#a31515" size="2">", "</font></font><font size="2"> << imageSize[2] << std::endl;
<p>gVoxelSpacing =reader->GetOutput()->GetSpacing();</p>
<p>std::cout << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">"Spacing= "</font></font><font size="2">;
<p>std::cout << gVoxelSpacing[0] << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">", "</font></font><font size="2"> << gVoxelSpacing[1] << </font><font color="#a31515" size="2"><font color="#a31515" size="2">", "</font></font><font size="2"> << gVoxelSpacing[2] << std::endl;
<p>}</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">catch</font></font><font size="2">( itk::ExceptionObject & err )
<p>{</p>
<p>std::cerr << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">"ExceptionObject caught !"</font></font><font size="2"> << std::endl;
<p>std::cerr << err << std::endl;</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">return</font></font><font size="2"> EXIT_FAILURE;
<p>} </p>
<p></p>
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">// convert from float to unsigned short since vtkVolumeRayCastMapper Cannot volume render data of type float, only unsigned char or unsigned short.</font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">typedef</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">unsigned</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">short</font></font><font size="2"> DisplayPixelType; </font><font color="#008000" size="2"><font color="#008000" size="2">// Display Pixel = 16bit</font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">typedef</font></font><font size="2"> itk::Image< DisplayPixelType, Dimension > DisplayImageType; </font><font color="#008000" size="2"><font color="#008000" size="2">// define DisplayImageType</font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">typedef</font></font><font size="2"> itk::RescaleIntensityImageFilter<ImageType, DisplayImageType > FilterType;
<p>FilterType::Pointer filter = FilterType::New();</p>
<p>filter->SetOutputMinimum( 0 );</p>
<p>filter->SetOutputMaximum( 20000 );</p>
<p>filter->SetInput( reader->GetOutput() );</p>
<p></p>
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">// Create the vtkImageImport and connect it to the itk::VTKImageExport instance.</font></font><font size="2">
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">typedef</font></font><font size="2"> itk::VTKImageExport< DisplayImageType > ExportFilterType;
<p>ExportFilterType::Pointer itkExporter = ExportFilterType::New(); </p>
<p>itkExporter->SetInput( filter->GetOutput() ); </p>
<p>vtkImageImport* vtkImporter = vtkImageImport::New(); </p>
<p>ConnectPipelines(itkExporter, vtkImporter);</p>
<p></p>
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">// Convert the vtkImageData to a vtkPolydata</font></font><font size="2">
<p>vtkSmartPointer<vtkImageDataGeometryFilter> imageDataGeometryFilter = vtkSmartPointer<vtkImageDataGeometryFilter>::New();</p>
<p>imageDataGeometryFilter->SetInputConnection(vtkImporter->GetOutputPort());</p>
<p>imageDataGeometryFilter->Update();</p>
<p></p>
<p></p>
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">//rendering --------------------------------------------------</font></font><font size="2">
<p>vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();</p>
<p>renderer->SetBackground(1,1,1); </p></font><font color="#008000" size="2"><font color="#008000" size="2">// Background color white</font></font><font size="2">
<p>vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();</p>
<p>renderWindow->AddRenderer(renderer);</p>
<p>renderWindow->SetSize(500,500);</p>
<p>vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();</p>
<p>renderWindowInteractor->SetRenderWindow ( renderWindow );</p>
<p>vtkSmartPointer<MouseInteractorStyle> style = vtkSmartPointer<MouseInteractorStyle>::New();</p>
<p>renderWindowInteractor->SetInteractorStyle( style );</p>
<p>style->render = renderer;</p>
<p>renderWindowInteractor->Initialize();</p>
<p>renderer->ResetCamera();</p>
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">//renderer->ResetCameraClippingRange();</font></font><font size="2">
<p>renderWindow->Render();</p>
<p>vtkCamera *camera = renderer->GetActiveCamera();</p>
<p>camera->SetClippingRange(1,30);</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">double</font></font><font size="2"> *n = </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">new</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">double</font></font><font size="2">[2];
<p>n = camera->GetClippingRange();</p>
<p>vtkSmartPointer<vtkCoordinate> coordinate = vtkSmartPointer<vtkCoordinate>::New();</p>
<p>coordinate->SetCoordinateSystemToDisplay();</p>
<p>coordinate->SetValue(250,147);</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">double</font></font><font size="2"> *pt = </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">new</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">double</font></font><font size="2">[3];
<p>pt = coordinate->GetComputedWorldValue(renderer);</p>
<p>cout << pt[0] << </p></font><font color="#a31515" size="2"><font color="#a31515" size="2">" "</font></font><font size="2"> <<pt[1] << </font><font color="#a31515" size="2"><font color="#a31515" size="2">" "</font></font><font size="2"> << pt[2] << endl;
<p></p>
<p>vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();</p>
<p></p>
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">/* vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();
<p>sphereSource->SetCenter(pt[0],pt[1],pt[2]*1*n[0]);</p>
<p>sphereSource->SetRadius(0.1);</p>
<p>sphereSource->Update();</p>
<p>mapper->SetInputConnection(sphereSource->GetOutputPort());*/</p></font></font><font size="2">
<p>mapper->SetInputConnection(imageDataGeometryFilter->GetOutputPort());</p>
<p>vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();</p>
<p>actor->SetMapper(mapper);</p>
<p>renderer->AddActor(actor);</p>
<p>renderWindowInteractor->Start();</p>
<p></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">return</font></font><font size="2"> EXIT_SUCCESS;
<p>}</p></font>