<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Hello everyone<br>i am working on a dataset(.raw). i am importing the dataset using imageimport function. I am able to visualize the dataset on the renderwindow. after that i try to invoke some key press events. Like if i press "y" half the dataset should become blank and then when i press "m" one fourth of the dataset should become blank. All this should happend on the same window one after the other. In my program what happens is, If i press "y" then half the dataset goes blank, but when i try to press"m" after i press "y" nothing happens. What i want is on the same renderwindow when i press "y" half the dataset should go blank and then when i press"m" again on the same window the dataset should reduce by one fourth.<br>Please help me <br>Thanks <br>Frency Varghese<br><br>here is my code<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>#include "vtkDataObject.h"<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>vtkImageImport *Importer1 = vtkImageImport::New();<br> vtkRenderer *aRenderer1 = vtkRenderer::New();<br> vtkRenderWindow *renWin1 = vtkRenderWindow::New();<br>vtkContourFilter *skinExtractor1 = vtkContourFilter::New();<br>vtkPolyDataNormals *skinNormals1 = vtkPolyDataNormals::New();<br> vtkPolyDataMapper *skinMapper1 = vtkPolyDataMapper::New();<br> vtkActor *skin1 = vtkActor::New();<br>vtkCamera *aCamera1 = vtkCamera::New();<br>vtkRenderWindowInteractor *iren1 = vtkRenderWindowInteractor::New();<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 *iren1= reinterpret_cast<vtkRenderWindowInteractor*>(caller);<br><br> char key = *(iren1->GetKeySym());<br> {<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+x);<br> if (z<z_max/2)<br> p[index]=0;<br><br> }<br> }<br> }<br> }<br> // char key = *(iren1->GetKeySym());<br> if (key=='m')<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+x);<br> if (z<z_max/4)<br> p[index]=0;<br><br> }<br> }<br> }<br> }<br><br> if (key=='o')<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+x);<br> if (z<z_max/3)<br> p[index]=0;<br><br> }<br> }<br> }<br><br>}<br>cout << "Deleted the array" <<
endl;<br><br>Importer1->Update();<br>skinExtractor1->Update();<br>skinNormals1->Update();<br>skinMapper1->Update();<br>skinExtractor1->SetInputConnection(Importer->GetOutputPort());<br>skin1->SetMapper(skinMapper1);<br>renWin1->Render();<br> }<br> if (key=='n') {<br> cout << "you chose no" << endl;<br> cout << " test value of the array " << (int) p[68000] << endl;<br> }<br>}<br>};<br><br>int main()<br> {<br> int x;<br> int y;<br> int z;<br>unsigned char* p1= new unsigned char[x_max*y_max*z_max];<br> ifstream inputFile;<br> inputFile.open("/home/owner/Desktop/iteration/15s.raw",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> inputFile.read((char*) &(p[z*x_max*y_max+y*x_max+x]),1);<br> inputFile.read((char*) &(p1[z*x_max*y_max+y*x_max+x]),1);<br> }<br><br> }<br> }<br><br><br> renWin->AddRenderer(aRenderer);<br> vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::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,1.0,1.0);<br>Importer->SetNumberOfScalarComponents(1);<br>Importer->SetDataScalarTypeToUnsignedChar();<br>Importer->SetImportVoidPointer(p);<br><br> skinExtractor->SetInputConnection(Importer->GetOutputPort());<br> skinExtractor->SetValue(0,100);<br><br> skinNormals->SetInputConnection(skinExtractor->GetOutputPort());<br> skinNormals->SetFeatureAngle(60);<br><br> skinMapper->SetInputConnection(skinNormals->GetOutputPort());<br> skinMapper->ScalarVisibilityOff();<br><br> skin->SetMapper(skinMapper);<br><br> aCamera->SetViewUp (0, 0, -1);<br> aCamera->SetPosition (0, 1, 0);<br>
aCamera->SetFocalPoint (0, 0, 0);<br> aCamera->ComputeViewPlaneNormal();<br><br> aRenderer->AddActor(skin);<br> aRenderer->SetActiveCamera(aCamera);<br> aRenderer->ResetCamera ();<br> aCamera->Dolly(1.5);<br> iren =vtkRenderWindowInteractor::New();<br> iren->SetRenderWindow(renWin);<br> renWin->Render();<br> renWin->SetSize( 500, 500 );<br><br> iren->Initialize();<br><br> iren->Start();<br><br>vtkMyCallback *callback = vtkMyCallback::New();<br> iren1->AddObserver(vtkCommand::CharEvent, callback);<br><br>Importer1->SetDataExtent(0, 53, 0, 46, 0, 62);<br>Importer1->SetWholeExtent(0, 53, 0, 46, 0, 62);<br>Importer1->SetDataSpacing(1.0,1.0,1.0);<br>Importer1->SetNumberOfScalarComponents(1);<br>Importer1->SetDataScalarTypeToUnsignedChar();<br>Importer1->SetImportVoidPointer(p);<br><br>
renWin1->AddRenderer(aRenderer1);<br><br> iren1->SetRenderWindow(renWin1);<br> skinExtractor1->SetInputConnection(Importer1->GetOutputPort());<br> skinExtractor1->SetValue(0,100);<br><br> skinNormals1->SetInputConnection(skinExtractor1->GetOutputPort());<br> skinNormals1->SetFeatureAngle(60);<br><br> skinMapper1->SetInputConnection(skinNormals1->GetOutputPort());<br> skinMapper1->ScalarVisibilityOff();<br><br> skin1->SetMapper(skinMapper1);<br><br> aCamera1->SetViewUp (0, 0, -1);<br> aCamera1->SetPosition (0, 1, 0);<br> aCamera1->SetFocalPoint (0, 0, 0);<br> aCamera1->ComputeViewPlaneNormal();<br><br> aRenderer1->AddActor(skin1);<br> aRenderer1->SetActiveCamera(aCamera1);<br>
aRenderer1->ResetCamera ();<br> aCamera1->Dolly(1.5);<br> <br>iren =vtkRenderWindowInteractor::New();<br> iren->SetRenderWindow(renWin);<br> renWin1->Render();<br> renWin1->SetSize( 500, 500 );<br><br> iren1->Initialize();<br> iren1->Start();<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> skinExtractor1->Delete();<br> skinMapper1->Delete();<br> skin1->Delete();<br> aCamera1->Delete();<br> iren1->Delete();<br> renWin1->Delete();<br> aRenderer1->Delete();<br> Importer1->Delete();<br> return 0;<br>}<br><br></td></tr></table><br>