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

BoShi chinaren.vtk at gmail.com
Tue Jun 6 02:08:39 EDT 2006


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



More information about the vtkusers mailing list