<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">I try to abort a lengthy rendering before it finishs. <br>I first measured the time it takes to finish rendering everything. <br><br>start = time(NULL);<br>renWindow->Render();<br>end = time(NULL);<br>cout <<"time spent for rendering: " <<difftime(end, start)<<endl;<br><br>it was 19 seconds.<br><br>then I tried to kill the rendering process before it finish by doing this: <br>Once render window showed up, I clicked it. renWindow->Render() came back,<br> and rendering took 3 seconds. <br><br>but after that, render window was still not responsive. Only after about <br>16 seconds, the complete images show up in window and window became <br>responsive after that. <br><br>It looks to me that although vtk already kill the rendering process, <br>Windows still try to finish rendering everything. That might explain why<br> the window remained not
responsive until everything finished rendering.<br><br>Does anybody knows the true reason? and how could I kill the rendering <br>process and immediately get back the interaction with the window?<br><br>Thank you very much<br><br>Tracy<br><br>the code is as following:<br>======================================<br>#include "vtkRenderer.h"<br>#include "vtkRenderWindow.h"<br>#include "vtkRenderWindowInteractor.h"<br>#include "vtkStructuredPointsReader.h"<br>#include "vtkPiecewiseFunction.h"<br>#include "vtkVolumeProperty.h"<br>#include "vtkVolumeRayCastCompositeFunction.h"<br>#include "vtkVolumeRayCastMapper.h"<br>#include "vtkVolume.h"<br>#include "vtkColorTransferFunction.h"<br>#include "vtkCamera.h"<br>#include "vtkStructuredPoints.h"<br>#include "vtkInteractorStyleTrackballCamera.h"<br>#include "vtkCommand.h"<br>#include "time.h"<br><br>class InteractionCallBack : public vtkCommand {<br><br>public:<br><br> static InteractionCallBack* New()
{<br> return new InteractionCallBack;<br> }<br><br> virtual void Execute(vtkObject* caller, unsigned long, void* data) {<br> vtkRenderWindow* renWin = vtkRenderWindow::SafeDownCast(caller);<br> if (renWin->GetEventPending()) {<br> renWin->SetAbortRender(1);<br> }<br> }<br><br>};<br><br>int main( int argc, char *argv[] )<br>{<br> vtkStructuredPointsReader *reader = vtkStructuredPointsReader::New();<br> reader->SetFileName("D:\\Simulations\\ironProt.vtk");<br> reader->Update();<br><br> vtkPiecewiseFunction *opacity = vtkPiecewiseFunction::New();<br> opacity->AddSegment(0, 0.0, 255, 0.5);<br> <br> vtkVolumeProperty *volumeProperty =
vtkVolumeProperty::New();<br> volumeProperty->SetScalarOpacity(opacity);<br> volumeProperty->SetInterpolationTypeToLinear();<br> volumeProperty->ShadeOn();<br><br> vtkVolumeRayCastCompositeFunction *compositeFunction = vtkVolumeRayCastCompositeFunction::New();<br> vtkVolumeRayCastMapper *volumeMapper = vtkVolumeRayCastMapper::New();<br> volumeMapper->SetInput(reader->GetOutput());<br> volumeMapper->SetVolumeRayCastFunction(compositeFunction);<br> volumeMapper->SetSampleDistance(0.01);<br><br> vtkVolume *volume = vtkVolume::New();<br> volume->SetMapper(volumeMapper);<br>
volume->SetProperty(volumeProperty);<br> <br> vtkRenderer *renderer = vtkRenderer::New();<br> renderer->SetBackground(1.0, 1.0, 1.0);<br> renderer->AddVolume(volume);<br> renderer->ResetCamera();<br> vtkRenderWindow *renWindow = vtkRenderWindow::New();<br> renWindow->SetSize(400,400);<br> renWindow->SetPosition(600, 400);<br> renWindow->AddRenderer(renderer);<br> vtkRenderWindowInteractor *interactor = vtkRenderWindowInteractor::New();<br> interactor->SetRenderWindow(renWindow);<br> vtkInteractorStyleTrackballCamera *style = vtkInteractorStyleTrackballCamera::New();<br>
interactor->SetInteractorStyle(style);<br><br> InteractionCallBack* icb = InteractionCallBack::New();<br> renWindow->AddObserver(vtkCommand::AbortCheckEvent, icb);<br> <br> time_t start, end;<br> start = time(NULL);<br><br> renWindow->Render();<br><br> end = time(NULL);<br> cout <<"time spent for rendering: " <<difftime(end, start)<<endl;<br><br> interactor->Start();<br><br> renderer->Delete();<br> renWindow->Delete();<br> interactor->Delete();<br> reader->Delete();<br> opacity->Delete();<br> volumeProperty->Delete();<br> compositeFunction->Delete();<br>
volumeMapper->Delete();<br> volume->Delete();<br><br> return 0;<br><br>}<br><br></td></tr></table><br>