<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Hello<br> 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 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> the dataset goes blank). <br>
please help.<br>thank you<br>frency varghese<br>#include <iostream><br>#include <fstream><br>#include <string><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> const int x_max=54;<br> const int y_max=47;<br> 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>
vtkRenderer *aRenderer = vtkRenderer::New();<br> vtkRenderWindow *renWin = vtkRenderWindow::New();<br>vtkContourFilter *skinExtractor = vtkContourFilter::New();<br>vtkPolyDataNormals *skinNormals = vtkPolyDataNormals::New();<br>
vtkPolyDataMapper *skinMapper = vtkPolyDataMapper::New();<br> vtkActor *skin = vtkActor::New();<br>vtkCamera *aCamera = vtkCamera::New();<br><br>class vtkMyCallback : public vtkCommand<br>{<br>public:<br> static vtkMyCallback *New()<br>
{ return new vtkMyCallback;}<br> void Delete()<br> { delete this; }<br> virtual void Execute(vtkObject *caller, unsigned long, void*)<br> {<br> int x,y,z;<br> int index;<br> vtkRenderWindowInteractor *iren= reinterpret_cast<<div>
vtkRenderWindowInteractor*>(<wbr>caller);<br>
<br> char key = *(iren->GetKeySym());<br> if (key=='y')<br> {<br> for(z=0; z<z_max; z++)<br> {<br> for(y=0; y<y_max; y++)<br> {<br> for(x=0; x<x_max; x++)<br>
{<br> index=(z*x_max*y_max+y*x_max+<wbr>x);<br> if (z<z_max)<br> p[index]=0;<br> }<br> }<br> }<br>cout << "Deleted the array" << endl;<br>
Importer->Update();<br><br>renWin->Render();<br> }<br> if (key=='n') cout << "you chose no" << endl;<br>}<br>};<br><br>int main()<br> {<br> int x;<br> int y;<br> int z;<br>
<br>
unsigned char* p1= new unsigned char[x_max*y_max*z_max];<br> ifstream inputFile;<br> inputFile.open("/home/owner/<wbr>Desktop/iteration/15s.raw",<wbr>ios::binary);<br><br> for(z=0; z<z_max; z++)<br> {<br>
for(y=0; y<y_max; y++)<br> {<br> for(x=0; x<x_max; x++)<br> {<br> <br><br> inputFile.read((char*) &(p[z*x_max*y_max+y*x_max+x]),<wbr>1);<br> inputFile.read((char*) &(p1[z*x_max*y_max+y*x_max+x])<wbr>,1);<br>
<br> }<br><br> }<br> }<br><br><br> renWin->AddRenderer(aRenderer)<wbr>;<br> vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::<wbr>New();<br> iren->SetRenderWindow(renWin);<br><br>Importer->SetDataExtent(0, 53, 0, 46, 0, 62);<br>
Importer->SetWholeExtent(0, 53, 0, 46, 0, 62);<br> Importer->SetDataSpacing(1.0,<wbr>1.0,1.0);<br>Importer-><wbr>SetNumberOfScalarComponents(1)<wbr>;<br> Importer-><wbr>SetDataScalarTypeToUnsignedCha<wbr>r();<br>Importer-><wbr>SetImportVoidPointer(p);<br>
<br> skinExtractor-><wbr>SetInputConnection(Importer-><wbr>GetOutputPort());<br> skinExtractor->SetValue(0,100)<wbr>;<br><br> skinNormals-><wbr>SetInputConnection(<wbr>skinExtractor->GetOutputPort()<wbr>);<br> skinNormals->SetFeatureAngle(<wbr>60);<br>
<br> skinMapper-><wbr>SetInputConnection(<wbr>skinNormals->GetOutputPort());<br> skinMapper-><wbr>ScalarVisibilityOff();<br><br> skin->SetMapper(skinMapper);<br> aCamera->SetViewUp (0, 0, -1);<br>
aCamera->SetPosition (0, 1, 0);<br> aCamera->SetFocalPoint (0, 0, 0);<br> aCamera-><wbr>ComputeViewPlaneNormal();<br><br> aRenderer->AddActor(skin);<br> aRenderer->SetActiveCamera(<wbr>aCamera);<br> aRenderer->ResetCamera ();<br>
aCamera->Dolly(1.5);<br> <br> iren =vtkRenderWindowInteractor::<wbr>New();<br> iren->SetRenderWindow(renWin)<wbr>;<br> renWin->Render();<br> renWin->SetSize( 500, 500 );<br><br>vtkMyCallback *callback = vtkMyCallback::New();<br> iren->AddObserver(vtkCommand::<wbr>KeyPressEvent, callback);<br><br>
iren->start();<br> iren->Initialize();<br><br> inputFile.close();<br> Importer->Delete();<br> skinExtractor->Delete();<br> skinMapper->Delete();<br> skin->Delete();<br> aCamera->Delete();<br> iren->Delete();<br>
renWin->Delete();<br> aRenderer->Delete();<br> <br> return 0;<br> }</div></td></tr></table><br>