<div dir="ltr"><div>Hi Cory, </div><div><br></div>No, I don't receive an error message. <div>But when I move actors, they are overlapping. It doesn't prevent overlapping actors .</div><div><br></div><div>I don't know, maybe I made a mistake in the code.</div>
<div><br></div><div>Could You look at this part of code ? </div><div><br></div><div>Here, my code :</div><div><br></div><div><div>int main(int, char *[])</div><div>{</div><div> // Lower - first model</div><div> vtkSmartPointer<vtkSTLReader> readerLower = vtkSmartPointer<vtkSTLReader>::New();</div>
<div> readerLower->SetFileName("lower.stl");</div><div> readerLower->Update();</div><div><br></div><div> // Upper - second model</div><div> vtkSmartPointer<vtkSTLReader> readerUpper = vtkSmartPointer<vtkSTLReader>::New();</div>
<div> readerUpper->SetFileName("upper.stl");</div><div> readerUpper->Update();</div><div><br></div><div> // Create polydata</div><div> vtkSmartPointer<vtkPolyData> lowerPolyData = readerLower->GetOutput();</div>
<div> vtkSmartPointer<vtkPolyData> upperPolyData = readerUpper->GetOutput();</div><div><br></div><div> // Set input transform to avoid overlap actors (models)</div><div> vtkSmartPointer<vtkTransform> transform = vtkSmartPointer<vtkTransform>::New();</div>
<div> transform->PostMultiply();</div><div> transform->RotateZ(180.0);</div><div> transform->RotateX(180.0);</div><div> transform->Translate(0,0,35);</div><div> </div><div> // Set polydata filter </div><div>
vtkSmartPointer<vtkTransformPolyDataFilter> transformFilter = vtkSmartPointer<vtkTransformPolyDataFilter>::New();</div><div> transformFilter->SetInput(upperPolyData); </div><div> transformFilter->SetTransform(transform);</div>
<div> transformFilter->Update();</div><div> </div><div> vtkSmartPointer<vtkPolyDataMapper> lowerMapper = vtkSmartPointer<vtkPolyDataMapper>::New();</div><div> lowerMapper->SetInput(lowerPolyData);</div>
<div> vtkSmartPointer<vtkPolyDataMapper> upperMapper = vtkSmartPointer<vtkPolyDataMapper>::New();</div><div> upperMapper->SetInput(upperPolyData);</div><div><br></div><div> vtkSmartPointer<vtkActor> upperActor = vtkSmartPointer<vtkActor>::New();</div>
<div> upperActor->SetMapper(upperMapper);</div><div> vtkSmartPointer<vtkActor> lowerActor = vtkSmartPointer<vtkActor>::New();</div><div> lowerActor->SetMapper(lowerMapper);</div><div> lowerActor->SetUserTransform(transform);</div>
<div><br></div><div><b> vtkSmartPointer<vtkIntersectionPolyDataFilter> intersectionPolyDataFilter = vtkSmartPointer<vtkIntersectionPolyDataFilter>::New();</b></div><div><b> intersectionPolyDataFilter->SetInput( 0, lowerPolyData );</b></div>
<div><b> intersectionPolyDataFilter->SetInput( 1, upperPolyData );</b></div><div><b> intersectionPolyDataFilter->Update();</b></div><div><b> </b></div><div><b> vtkSmartPointer<vtkPolyDataMapper> intersectionMapper = vtkSmartPointer<vtkPolyDataMapper>::New();</b></div>
<div><b> intersectionMapper->SetInputConnection( intersectionPolyDataFilter->GetOutputPort() );</b></div><div><b> intersectionMapper->ScalarVisibilityOff();</b></div><div><b> </b></div><div><b> vtkSmartPointer<vtkActor> intersectionActor = vtkSmartPointer<vtkActor>::New();</b></div>
<div><b> intersectionActor->SetMapper( intersectionMapper );</b></div><div><b> intersectionActor->VisibilityOff();</b></div><div> </div><div><br></div><div> // Visualization</div><div> // Create a renderer, render window, and interactor</div>
<div><b> vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();</b></div><div><b> renderer->AddActor(lowerActor);</b></div><div><b> renderer->AddActor(upperActor);</b></div><div>
<b> renderer->AddActor(intersectionActor);</b><br></div><div> </div><div> // Render Window</div><div> vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();</div><div> renderWindow->AddRenderer(renderer);</div>
<div><br></div><div> // Interactor</div><div> vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();</div><div> renderWindowInteractor->SetRenderWindow(renderWindow);</div>
<div><br></div><div> // Move actors</div><div> vtkSmartPointer<vtkInteractorStyleTrackballActor> styleActor = vtkSmartPointer<vtkInteractorStyleTrackballActor>::New(); </div><div> renderWindowInteractor->SetInteractorStyle( styleActor );</div>
<div> renderWindowInteractor->SetRenderWindow(renderWindow);</div><div><br></div><div> // Render and interact</div><div> renderer->SetBackground(.2, .3, .4);</div><div> renderWindow->Render();</div><div> renderWindowInteractor->Start();</div>
<div><br></div><div> return EXIT_SUCCESS;</div><div>}</div></div><div><br></div><div><br></div><div>I would appreciate for any help please.</div><div><br></div><div>agatte</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
2014/1/23 Cory Quammen-2 [via VTK] <span dir="ltr"><<a href="/user/SendEmail.jtp?type=node&node=5725554&i=0" target="_top" rel="nofollow" link="external">[hidden email]</a>></span><br><blockquote style='border-left:2px solid #CCCCCC;padding:0 1em' class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">
How do you know vtkIntersectionPolyDataFilter doesn't work?
<br><br>Is the intersection empty? Do you get an error message?
<br><br>Thanks,
<br>Cory
<br><br></div><div><div class="h5">On Wed, Jan 22, 2014 at 4:57 PM, agatte <<a href="http://user/SendEmail.jtp?type=node&node=5725553&i=0" rel="nofollow" link="external" target="_blank">[hidden email]</a>> wrote:
<div><div class='shrinkable-quote'><br>> Hi,
<br>>
<br>> I want to prevent overlapping/collision of two actors in the render scene.
<br>> I have already tried vtkIntersectionFilter, bu tit doesn't work in my case.
<br>>
<br>> Could You advice me something different ?
<br>>
<br>> int main(int, char *[])
<br>> {
<br>> // Lower - first model
<br>> vtkSmartPointer<vtkSTLReader> readerLower =
<br>> vtkSmartPointer<vtkSTLReader>::New();
<br>> readerLower->SetFileName("lower.stl");
<br>> readerLower->Update();
<br>>
<br>> // Upper - second model
<br>> vtkSmartPointer<vtkSTLReader> readerUpper =
<br>> vtkSmartPointer<vtkSTLReader>::New();
<br>> readerUpper->SetFileName("upper.stl");
<br>> readerUpper->Update();
<br>>
<br>> // Create polydata
<br>> vtkSmartPointer<vtkPolyData> lowerPolyData = readerLower->GetOutput();
<br>> vtkSmartPointer<vtkPolyData> pointsUpperPolyData =
<br>> readerUpper->GetOutput();
<br>> pointsUpperPolyData->GetPoints();
<br>>
<br>>
<br>> // Set input transform to avoid overlap actors (models)
<br>> vtkSmartPointer<vtkTransform> transform =
<br>> vtkSmartPointer<vtkTransform>::New();
<br>> transform->PostMultiply();
<br>> transform->RotateZ(180.0);
<br>> transform->RotateX(180.0);
<br>> transform->Translate(0,0,35);
<br>>
<br>> // Set polydata filter
<br>> vtkSmartPointer<vtkTransformPolyDataFilter> transformFilter =
<br>> vtkSmartPointer<vtkTransformPolyDataFilter>::New();
<br>> transformFilter->SetInput(pointsUpperPolyData); // upperPolyData
<br>> transformFilter->SetTransform(transform);
<br>> transformFilter->Update();
<br>>
<br>> vtkSmartPointer<vtkPolyDataMapper> lowerMapper =
<br>> vtkSmartPointer<vtkPolyDataMapper>::New();
<br>> lowerMapper->SetInput(lowerPolyData);
<br>> vtkSmartPointer<vtkPolyDataMapper> upperMapper =
<br>> vtkSmartPointer<vtkPolyDataMapper>::New();
<br>> upperMapper->SetInput(pointsUpperPolyData);
<br>>
<br>> vtkSmartPointer<vtkActor> upperActor = vtkSmartPointer<vtkActor>::New();
<br>> upperActor->SetMapper(upperMapper);
<br>> vtkSmartPointer<vtkActor> lowerActor = vtkSmartPointer<vtkActor>::New();
<br>> lowerActor->SetMapper(lowerMapper);
<br>> lowerActor->SetUserTransform(transform);
<br>>
<br>>
<br>> vtkSmartPointer<vtkIntersectionPolyDataFilter> intersectionPolyDataFilter
<br>> =
<br>> vtkSmartPointer<vtkIntersectionPolyDataFilter>::New();
<br>> intersectionPolyDataFilter->SetInput( 0, lowerPolyData );
<br>> intersectionPolyDataFilter->SetInput( 1, pointsUpperPolyData );
<br>> intersectionPolyDataFilter->Update();
<br>>
<br>> vtkSmartPointer<vtkPolyDataMapper> intersectionMapper =
<br>> vtkSmartPointer<vtkPolyDataMapper>::New();
<br>> intersectionMapper->SetInputConnection(
<br>> intersectionPolyDataFilter->GetOutputPort() );
<br>> intersectionMapper->ScalarVisibilityOff();
<br>>
<br>> vtkSmartPointer<vtkActor> intersectionActor =
<br>> vtkSmartPointer<vtkActor>::New();
<br>> intersectionActor->SetMapper( intersectionMapper );
<br>>
<br>> //vtkSmartPointer<vtkRenderer> renderer =
<br>> vtkSmartPointer<vtkRenderer>::New();
<br>> //renderer->AddViewProp(sphere1Actor);
<br>> //renderer->AddViewProp(sphere2Actor);
<br>> //renderer->AddViewProp(intersectionActor);
<br>>
<br>>
<br>> // Visualization
<br>>
<br>> // Create a renderer, render window, and interactor
<br>> vtkSmartPointer<vtkRenderer> renderer =
<br>> vtkSmartPointer<vtkRenderer>::New();
<br>> renderer->AddActor(lowerActor);
<br>> renderer->AddActor(upperActor);
<br>> //renderer->AddActor(booleanOperationActor);
<br>> renderer->AddActor(intersectionActor);
<br>>
<br>> // Render Window
<br>> vtkSmartPointer<vtkRenderWindow> renderWindow =
<br>> vtkSmartPointer<vtkRenderWindow>::New();
<br>> renderWindow->AddRenderer(renderer);
<br>>
<br>> // Interactor
<br>> vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
<br>> vtkSmartPointer<vtkRenderWindowInteractor>::New();
<br>> renderWindowInteractor->SetRenderWindow(renderWindow);
<br>>
<br>> // Move actors
<br>> vtkSmartPointer<vtkInteractorStyleTrackballActor> styleActor =
<br>> vtkSmartPointer<vtkInteractorStyleTrackballActor>::New();
<br>> renderWindowInteractor->SetInteractorStyle( styleActor );
<br>> renderWindowInteractor->SetRenderWindow(renderWindow);
<br>>
<br>> // Render and interact
<br>> renderer->SetBackground(.2, .3, .4);
<br>> renderWindow->Render();
<br>> renderWindowInteractor->Start();
<br>>
<br>> return EXIT_SUCCESS;
<br>> }
<br>>
<br>>
<br>> I would appreciate for any help please.
<br>>
<br>>
<br>>
<br>>
<br>>
<br>> --
<br>> View this message in context: <a href="http://vtk.1045678.n5.nabble.com/Collision-detection-How-to-prevent-overlapping-actors-tp5725551.html" rel="nofollow" link="external" target="_blank">http://vtk.1045678.n5.nabble.com/Collision-detection-How-to-prevent-overlapping-actors-tp5725551.html</a></div>
> Sent from the VTK - Users mailing list archive at Nabble.com.
<br>> _______________________________________________
<br>> Powered by <a href="http://www.kitware.com" target="_blank" rel="nofollow" link="external">www.kitware.com</a>
<br>>
<br>> Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="nofollow" link="external" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>>
<br>> Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" rel="nofollow" link="external" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>>
<br>> Follow this link to subscribe/unsubscribe:
<br>> <a href="http://www.vtk.org/mailman/listinfo/vtkusers" rel="nofollow" link="external" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a></div>_______________________________________________
<br>Powered by <a href="http://www.kitware.com" target="_blank" rel="nofollow" link="external">www.kitware.com</a>
<br><br>Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="nofollow" link="external" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br><br>
Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" rel="nofollow" link="external" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br><br>Follow this link to subscribe/unsubscribe:
<br><a href="http://www.vtk.org/mailman/listinfo/vtkusers" rel="nofollow" link="external" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
<br>
<br>
</div></div><hr noshade size="1" color="#cccccc">
<div style="color:#444;font:12px tahoma,geneva,helvetica,arial,sans-serif">
<div style="font-weight:bold">If you reply to this email, your message will be added to the discussion below:</div>
<a href="http://vtk.1045678.n5.nabble.com/Collision-detection-How-to-prevent-overlapping-actors-tp5725551p5725553.html" target="_blank" rel="nofollow" link="external">http://vtk.1045678.n5.nabble.com/Collision-detection-How-to-prevent-overlapping-actors-tp5725551p5725553.html</a>
</div>
<div style="color:#666;font:11px tahoma,geneva,helvetica,arial,sans-serif;margin-top:.4em;line-height:1.5em">
To unsubscribe from [Collision detection ] How to prevent overlapping actors ?, <a href="" target="_blank" rel="nofollow" link="external">click here</a>.<br>
<a href="http://vtk.1045678.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml" rel="nofollow" style="font:9px serif" target="_blank" link="external">NAML</a>
</div></blockquote></div><br></div>
<!--start-attachments--><div class="small"><br/><img src="http://vtk.1045678.n5.nabble.com/images/icon_attachment.gif" > <strong>screenOverlapping.png</strong> (214K) <a href="http://vtk.1045678.n5.nabble.com/attachment/5725554/0/screenOverlapping.png" target="_top" rel="nofollow" link="external">Download Attachment</a></div><!--end-attachments-->
<br/><hr align="left" width="300" />
View this message in context: <a href="http://vtk.1045678.n5.nabble.com/Collision-detection-How-to-prevent-overlapping-actors-tp5725551p5725554.html">Re: [Collision detection ] How to prevent overlapping actors ?</a><br/>
Sent from the <a href="http://vtk.1045678.n5.nabble.com/VTK-Users-f1224199.html">VTK - Users mailing list archive</a> at Nabble.com.<br/>