Grasshopper

algorithmic modeling for Rhino

I wanted to see if anyone has seen any discussions or links to topics concerning collision detection. I am building a pice of mechanical equipment with pipes and my goal is to set a series of objects within the bounds of the machine and have the pipes move around the objects in different configurations (based on sliders) so long that they do not intersect the object(s).

 

A similar 2d example of this would be google maps where you can pull control points to adjust the rout, the rout always snaps to a 'street' and would never intersect a building or park. The great thing about this is that it adds kinks or (control points) when needed.  

 

Here is a rough outline 'without' collision detection. I am trying to find the best way design a logical system that will bend the pipe around the object(s)

 

Any help would be greatly appreciated 

Views: 6617

Attachments:

Replies to This Discussion

The hardest thing about Collision detection is the speed. It's easy enough to test a bunch of objects for intersections, but that tends to be quite slow (say you're testing 20 object, that equals: 19+18+17+16+...+2+1 intersections which amounts to 190).

 

The most obvious performance improvement is to build a 3D tree of all the objects so you can ignore a lot of intersection tests from the get-go (won't help if the objects are wound around each other though). Then there's sometimes tricks you can use to simplify the geometry. Intersecting two Pipes as Breps is FAR more expensive than finding the the closest points between two center curves.

 

The main problem with these optimizations is that it's very hard to generalise them so that they can be implemented as a Grasshopper component.

 

However I suspect that even a slow algorithm would be a welcome addition, I'll mull it over and see if I can find some time to add some collision test components.

 

--

David Rutten

david@mcneel.com

Poprad, Slovakia

David,

Thanks for the reply, collision test components would be really cool and useful. I see what you are saying about the expense of Breps vs points and curves. In the meantime if you or anyone has any example builds testing this logic or something similar I would greatly appreciate the opportunity to take a look.    

-Charles

Hi David, I tried to improve a clash (brep) detection, I think I was able to do it using physical intersection (brep|brep or mesh|mesh) but the problem is it recognizes the lap joint as an intersection. How can I achieve to ignore those lap joint? 

thanks in advance. 

Attachments:

RSS

About

Translate

Search

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service