[vtkusers] vtkCollisionDetectionFilter

Larcher Aurélie aurelie.larcher at imag.fr
Thu Jan 22 10:46:54 EST 2009


Hello !

I try to use vtkCollisionDetectionFilter. I download the package vtkBioeng
with the example TestCollisionDetection.cxx

My future goal is to manipulate an object and detect when it collide an
other.

But I don’t succeed to consider the Position(x,y,z) of my object.

 

For example,  

If I don’t inform the position of my object, it’s OK : the collision
detection work.

But if I inform the position of an object far away of the other, it doesn’t
work : collisions are detected whereas there is not.

 

Here, piece of code

*************

   vtkSphereSource *sphere = vtkSphereSource::New();

         sphere->SetRadius(30);

         sphere->SetPhiResolution(100);

         sphere->SetThetaResolution(100);

         sphere->SetCenter(0, 0, 0);

   vtkPolyDataReader *outilsReader = vtkPolyDataReader::New();

            outilsReader->SetFileName( "C:/Images/vtk/outils.vtk" );   

   vtkMatrix4x4 *matrix0 = vtkMatrix4x4::New();

   vtkMatrix4x4 *matrix1 = vtkMatrix4x4::New();

   vtkCollisionDetectionFilter *collide =
vtkCollisionDetectionFilter::New();

         collide->SetInputConnection(0, outilsReader->GetOutputPort());

         collide->SetMatrix(0, matrix0);

         collide->SetInputConnection(1, sphere->GetOutputPort());

         collide->SetMatrix(1, matrix1);

vtkPolyDataMapper *sphereMapper = vtkPolyDataMapper::New();

 
sphereMapper->SetInputConnection(outilsReader->GetOutputPort(0));      

      vtkActor *sphereActor = vtkActor::New();

         sphereActor->SetMapper(sphereMapper);


         (sphereActor->GetProperty())->BackfaceCullingOn();

         sphereActor->SetPosition(0,0,0);                              

         sphereActor->SetUserMatrix(matrix0);

         sphereActor->GetProperty()->SetColor(1,0,0);

   vtkPolyDataMapper *toolMapper= vtkPolyDataMapper::New();

   toolMapper->SetInputConnection(sphere->GetOutputPort(1));     

   vtkActor *toolActor = vtkActor::New();

         toolActor->SetMapper(toolMapper);           

         toolActor->SetUserMatrix(matrix1);

         toolActor->SetPosition(100,0,0);            // OK if this line is
in comment

         toolActor->GetProperty()->SetColor(0,0,1);

   vtkTextActor *txt = vtkTextActor::New();

 

   vtkRenderer *ren = vtkRenderer::New();

         ren->AddActor(sphereActor);

         ren->AddActor(toolActor);

         ren->AddActor(txt);

         ren->SetBackground(0.5,0.5,0.5);

   vtkRenderWindow *renWin = vtkRenderWindow::New();

         renWin->AddRenderer(ren);

   vtkInteractorStyleJoystickActor *istyle =
vtkInteractorStyleJoystickActor::New();

   vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();

         iren->SetRenderWindow(renWin);

         iren->SetInteractorStyle(istyle);

      vtkMyCallback *callback = vtkMyCallback::New();

      vtkBoxWidget *boxWidget = vtkBoxWidget::New();

            boxWidget->SetInteractor(iren);    

            boxWidget->SetPlaceFactor(1.25);

            boxWidget->SetDefaultRenderer(ren);

            boxWidget->SetProp3D(sphereActor); 

            boxWidget->PlaceWidget();

            boxWidget->AddObserver(vtkCommand::InteractionEvent, callback);

            boxWidget->On();  

   vtkCollisionCallback *cbCollide = vtkCollisionCallback::New();

         cbCollide->SetTextActor(txt);

         cbCollide->SetRenderWindow(renWin);

         collide->AddObserver(vtkCommand::EndEvent, cbCollide);

(
)

*************

 

I hope that you can help me.

Thanks,

Aurélie

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20090122/02019026/attachment.htm>


More information about the vtkusers mailing list