<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Hello<br>&nbsp;i am a newcomer to vtk.<br>I have
few questions about vtk data manipulation.i have a 3D dataset (.raw). i am using imageimport to
import the dataset. i am able to visualize the dataset in the
renderwindow. everything works fine till here. Then, I have defined key "y " in the call back function (renderwindowinteractor) to make
the dataset blank. ie when i press "y" the image in the renderwindow
should go blank. This is not happening. <br>
I need help&nbsp;&nbsp;&nbsp; with customizing the key press events. so that when i press
one of the keyboard keys a particular event should happen (like half or full of<br>&nbsp;the dataset goes blank). <br>
please help.<br>thank you<br>frency varghese<br>#include &lt;iostream&gt;<br>#include &lt;fstream&gt;<br>#include &lt;string&gt;<br>#include "vtkImageImport.h"<br>#include "vtkRenderWindowInteractor.h"<br>

#include "vtkRenderer.h"<br>#include "vtkRenderWindow.h"<br>#include "vtkContourFilter.h"<br>#include "vtkPolyDataNormals.h"<br>#include "vtkPolyDataMapper.h"<br>#include "vtkActor.h"<br>

#include "vtkOutlineFilter.h"<br>#include "vtkCamera.h"<br>#include "vtkImageFlip.h"<br>//#include "vtkInteractorStyle.h"<br>#include "vtkCommand.h"<br>#include "vtkInteractorStyleUser.h"<br>

<br>using namespace std;<br>&nbsp;&nbsp; const int x_max=54;<br>&nbsp;&nbsp; const int y_max=47;<br>&nbsp;&nbsp; const int z_max=63;<br><br>unsigned char* p= new unsigned char[x_max*y_max*z_max];<br>vtkImageImport *Importer = vtkImageImport::New();<br>

&nbsp;&nbsp;&nbsp;&nbsp; vtkRenderer *aRenderer = vtkRenderer::New();<br>&nbsp; vtkRenderWindow *renWin = vtkRenderWindow::New();<br>vtkContourFilter *skinExtractor = vtkContourFilter::New();<br>vtkPolyDataNormals *skinNormals = vtkPolyDataNormals::New();<br>

&nbsp;vtkPolyDataMapper *skinMapper = vtkPolyDataMapper::New();<br>&nbsp;vtkActor *skin = vtkActor::New();<br>vtkCamera *aCamera = vtkCamera::New();<br><br>class vtkMyCallback : public vtkCommand<br>{<br>public:<br>&nbsp; static vtkMyCallback *New()<br>

&nbsp;&nbsp;&nbsp; { return new vtkMyCallback;}<br>&nbsp; void Delete()<br>&nbsp;&nbsp;&nbsp; { delete this; }<br>&nbsp; virtual void Execute(vtkObject *caller, unsigned long, void*)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x,y,z;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int index;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkRenderWindowInteractor *iren= reinterpret_cast&lt;<div>
vtkRenderWindowInteractor*&gt;(<wbr>caller);<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char key = *(iren-&gt;GetKeySym());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (key=='y')<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(z=0; z&lt;z_max; z++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(y=0; y&lt;y_max; y++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(x=0; x&lt;x_max; x++)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index=(z*x_max*y_max+y*x_max+<wbr>x);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (z&lt;z_max)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p[index]=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>cout &lt;&lt; "Deleted the array" &lt;&lt; endl;<br>

Importer-&gt;Update();<br><br>renWin-&gt;Render();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp; if (key=='n') cout &lt;&lt; "you chose no" &lt;&lt; endl;<br>}<br>};<br><br>int main()<br>&nbsp;{<br>&nbsp;&nbsp; int x;<br>&nbsp;&nbsp; int y;<br>&nbsp;&nbsp; int z;<br>
<br>
&nbsp; unsigned char* p1= new unsigned char[x_max*y_max*z_max];<br>&nbsp;&nbsp; ifstream inputFile;<br>&nbsp;&nbsp; inputFile.open("/home/owner/<wbr>Desktop/iteration/15s.raw",<wbr>ios::binary);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(z=0; z&lt;z_max; z++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(y=0; y&lt;y_max; y++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(x=0; x&lt;x_max; x++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inputFile.read((char*) &amp;(p[z*x_max*y_max+y*x_max+x]),<wbr>1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inputFile.read((char*) &amp;(p1[z*x_max*y_max+y*x_max+x])<wbr>,1);<br>

&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br><br><br>&nbsp;&nbsp;&nbsp; renWin-&gt;AddRenderer(aRenderer)<wbr>;<br>&nbsp;&nbsp;&nbsp; vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::<wbr>New();<br>&nbsp;&nbsp;&nbsp; iren-&gt;SetRenderWindow(renWin);<br><br>Importer-&gt;SetDataExtent(0, 53, 0, 46, 0,&nbsp; 62);<br>

&nbsp;Importer-&gt;SetWholeExtent(0, 53, 0, 46, 0, 62);<br>&nbsp;Importer-&gt;SetDataSpacing(1.0,<wbr>1.0,1.0);<br>Importer-&gt;<wbr>SetNumberOfScalarComponents(1)<wbr>;<br>&nbsp;Importer-&gt;<wbr>SetDataScalarTypeToUnsignedCha<wbr>r();<br>Importer-&gt;<wbr>SetImportVoidPointer(p);<br>

<br>&nbsp;skinExtractor-&gt;<wbr>SetInputConnection(Importer-&gt;<wbr>GetOutputPort());<br>&nbsp;&nbsp; skinExtractor-&gt;SetValue(0,100)<wbr>;<br><br>&nbsp;&nbsp; skinNormals-&gt;<wbr>SetInputConnection(<wbr>skinExtractor-&gt;GetOutputPort()<wbr>);<br>&nbsp;&nbsp; skinNormals-&gt;SetFeatureAngle(<wbr>60);<br>

<br>&nbsp;&nbsp;&nbsp; skinMapper-&gt;<wbr>SetInputConnection(<wbr>skinNormals-&gt;GetOutputPort());<br>&nbsp;&nbsp;&nbsp; skinMapper-&gt;<wbr>ScalarVisibilityOff();<br><br>&nbsp;&nbsp; skin-&gt;SetMapper(skinMapper);<br>&nbsp;aCamera-&gt;SetViewUp (0, 0, -1);<br>
&nbsp;&nbsp;&nbsp; aCamera-&gt;SetPosition (0, 1, 0);<br>&nbsp;&nbsp;&nbsp; aCamera-&gt;SetFocalPoint (0, 0, 0);<br>&nbsp;&nbsp;&nbsp; aCamera-&gt;<wbr>ComputeViewPlaneNormal();<br><br>&nbsp; aRenderer-&gt;AddActor(skin);<br>&nbsp; aRenderer-&gt;SetActiveCamera(<wbr>aCamera);<br>&nbsp; aRenderer-&gt;ResetCamera ();<br>

&nbsp; aCamera-&gt;Dolly(1.5);<br>&nbsp;<br>&nbsp;iren =vtkRenderWindowInteractor::<wbr>New();<br>&nbsp;iren-&gt;SetRenderWindow(renWin)<wbr>;<br>&nbsp;renWin-&gt;Render();<br>&nbsp;renWin-&gt;SetSize( 500, 500 );<br><br>vtkMyCallback *callback = vtkMyCallback::New();<br>&nbsp; iren-&gt;AddObserver(vtkCommand::<wbr>KeyPressEvent, callback);<br><br>
iren-&gt;start();<br>&nbsp; iren-&gt;Initialize();<br><br>&nbsp;inputFile.close();<br>&nbsp; Importer-&gt;Delete();<br>&nbsp; skinExtractor-&gt;Delete();<br>&nbsp; skinMapper-&gt;Delete();<br>&nbsp; skin-&gt;Delete();<br>&nbsp; aCamera-&gt;Delete();<br>&nbsp; iren-&gt;Delete();<br>

&nbsp; renWin-&gt;Delete();<br>&nbsp; aRenderer-&gt;Delete();<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; return 0;<br>&nbsp;}</div></td></tr></table><br>