[vtkusers] I convert a vtkImplicitSelectionLoop sample code from TCL to c++, it executes, but I can' see the display window?

Thomas Lambertz thomas at hexerei-software.de
Tue Jun 6 07:01:19 EDT 2006


Hi,

iren->Start(); afaik starts an eventloop.
When you close your programm the loop will be left and your following code will be executed. 
So 
renWin->Render();
does what you saw as a flash.

Code like
iren->AddObserver(vtkCommand::EndPickEvent,pcallcmd);
should be executed before iren->Start();

Dont´s know why your initial screen is black.Maybe someone else can tell you.

hth
Tom 




BoShi wrote:
> Hi,
>
> The phenomenon is that as the programme start I just can see a black
> window, when I close the programme I can see a flash of image. Who can
> tell me why? Thanks a lot!
> The source code is as follows:
>
> void pick(vtkObject *caller, unsigned long eid, void *clientdata, void
> *calldata)
> {
> }
> void main()
> {
> vtkSphereSource* sphere = vtkSphereSource::New();
>
> sphere->SetRadius(1.0);
> sphere->SetPhiResolution(100);
> sphere->SetThetaResolution(100);
>
>
> vtkPoints* selectionPoints = vtkPoints::New();
>
> selectionPoints->InsertPoint(0, 0.07325, 0.8417, 0.5612);
> selectionPoints->InsertPoint(1, 0.07244, 0.6568, 0.7450);
> selectionPoints->InsertPoint(2, 0.1727, 0.4597, 0.8850);
> selectionPoints->InsertPoint(3, 0.3265, 0.6054, 0.7309);
> selectionPoints->InsertPoint(4, 0.5722, 0.5848, 0.5927);
> selectionPoints->InsertPoint(5, 0.4305, 0.8138, 0.4189);
>
> vtkImplicitSelectionLoop* loop = vtkImplicitSelectionLoop::New();
> loop->SetLoop(selectionPoints);
>
> vtkExtractGeometry* extract = vtkExtractGeometry::New();
> extract->SetInputConnection(sphere->GetOutputPort());
> extract->SetImplicitFunction(loop);
>
> //vtkTubeFilter *pTulb
>
> vtkConnectivityFilter* connect = vtkConnectivityFilter::New();
> connect->SetInputConnection(extract->GetOutputPort());
> connect->SetExtractionModeToClosestPointRegion();
> connect->SetClosestPoint(selectionPoints->GetPoint(0));
>
> vtkDataSetMapper* clipMapper = vtkDataSetMapper::New();
> clipMapper->SetInputConnection(connect->GetOutputPort());
>
> vtkProperty* backProp = vtkProperty::New();
> backProp->SetDiffuseColor(1.0, 0.3, 0.5);
>
> vtkActor* clipActor = vtkActor::New();
> clipActor->SetMapper(clipMapper);
> clipActor->GetProperty()->SetColor(0.0, 0.5, 0.0);
> clipActor->SetBackfaceProperty(backProp);
>
> vtkRenderer* ren1 = vtkRenderer::New();
> vtkRenderWindow* renWin = vtkRenderWindow::New();
> renWin->AddRenderer(ren1);
>
> vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New();
> iren->SetRenderWindow(renWin);
> iren->Initialize();
> iren->Start();
>
> ren1->AddActor(clipActor);
> ren1->SetBackground(1.0, 1.0, 1.0);
> ren1->ResetCamera();
> ren1->GetActiveCamera()->Azimuth(30);
> ren1->GetActiveCamera()->Elevation(30);
> ren1->GetActiveCamera()->Dolly(1.2);
> ren1->ResetCameraClippingRange();
> renWin->SetSize(400, 400);
> renWin->Render();
>
>
> vtkCallbackCommand* pcallcmd = vtkCallbackCommand::New();
> pcallcmd->SetCallback(pick);
> iren->AddObserver(vtkCommand::EndPickEvent,pcallcmd);
>
> pcallcmd->Delete();
> sphere->Delete();
> selectionPoints->Delete();
> loop->Delete();
> extract->Delete();
> connect->Delete();
> clipMapper->Delete();
> backProp->Delete();
> clipActor->Delete();
> ren1->Delete();
> renWin->Delete();
> iren->Delete();
> }
>
>
> Best regards,
> BHS
> _______________________________________________
> This is the private VTK discussion list. 
> Please keep messages on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
>   




More information about the vtkusers mailing list