GPWiki.org
GPWiki.org
It is currently Wed Jun 19, 2013 5:56 am

All times are UTC




Post new topic Reply to topic  [ 8 posts ] 
Author Message
PostPosted: Thu Jun 16, 2011 7:11 am 
P2k
User avatar

Joined: Tue Aug 23, 2005 5:11 am
Posts: 2145
I need to efficiently detect collisions between two objects made up of voxels. I don't know a lot about pixel perfect collision detection but I would think you could extrapolate some of the techniques into another dimension. The only other major difference being that the objects can rotate arbitrarily relative to each other. The only thing I can think of is doing some binary space partitioning or octree on each object, but the problem is that the objects are dynamic so that is a lot of data to recalculate when things change, and that will get pretty complicated with the objects rotating relative to each other.

Any tips? tricks? I found a couple research articles about it but they don't seem to be publicly viewable without paying.


Top
 Profile  
 
PostPosted: Thu Jun 16, 2011 2:06 pm 
Dexterous Droid
User avatar

Joined: Wed Aug 18, 2004 7:40 pm
Posts: 3746
Location: South Africa
If they're ACM or IEEE I could get the articles for you.

What you're describing sounds damn complex. How many voxel objects would be colliding at any one time? Any simplifying assumptions you can make about your voxel objects?

Maybe you could use an R*-tree to store chunks of voxels, and then you'd only have to do the comparison between the voxels closest to each other.

_________________
Whatever the mind can conceive and believe, it can achieve


Top
 Profile  
 
PostPosted: Thu Jun 16, 2011 3:22 pm 
P2k
User avatar

Joined: Tue Aug 23, 2005 5:11 am
Posts: 2145
Probably 8 objects tops. But they can be multi-segmented and can collide internally. So I am gonna say probably in the ballpark of 64 objects, and around 150,000 * 8 voxels total.

I don't think the articles were ACM or IEEE but thanks for the offer.


Top
 Profile  
 
PostPosted: Thu Jun 16, 2011 5:46 pm 
Dexterous Droid
User avatar

Joined: Wed Aug 18, 2004 7:40 pm
Posts: 3746
Location: South Africa
This is the kind of problem that CUDA would be great for. Should be very amenable to parallelisation.

I don't understand how the voxel objects can collide internally? Does that mean they're not static? I'm imagining a kind of Lego construct. Or is it that the various objects are created from static voxel objects that are hinged together at various joints?

Maybe you could use an existing physics engine to create a bunch of bounding boxes around your voxels. At the simplest level, you could just create a 3D grid pattern around each one. Then when the boxes from different objects collide, do an n³ collision check at the voxel level, where n is hopefully small.

I tried to draw something in Paint but it didn't look like anything :P

_________________
Whatever the mind can conceive and believe, it can achieve


Top
 Profile  
 
PostPosted: Thu Jun 16, 2011 6:06 pm 
P2k
User avatar

Joined: Tue Aug 23, 2005 5:11 am
Posts: 2145
Yeah, the objects have moving parts (joints/hinges etc.) The objects themselves are also destructible.

Unfortunately, CUDA isn't really an option. I want it to run on the Xbox360.


Top
 Profile  
 
PostPosted: Mon Aug 08, 2011 6:22 am 
I am looking at a similar problem and have found an ACM article which may be relevant.
I would much appreciate some help in accessing it, and Struan may find it useful too.
Here is the link: http://portal.acm.org/citation.cfm?id=514231


Top
  
 
PostPosted: Mon Aug 08, 2011 8:50 am 
Dexterous Droid
User avatar

Joined: Wed Aug 18, 2004 7:40 pm
Posts: 3746
Location: South Africa
Create an account and send me a PM Scog.

_________________
Whatever the mind can conceive and believe, it can achieve


Top
 Profile  
 
PostPosted: Tue Aug 09, 2011 11:14 pm 
Game Programming Guru

Joined: Sun Aug 15, 2004 6:20 pm
Posts: 1090
The only thing that comes to mind for me is the naive n*m check. The next best thing I can think of is to approximate its shape with a set of bounding shapes at the cost of some accuracy.

In case your voxel objects are 'filled', to cut down on the n*m complexity you could only check the voxels that make up the outer shell of your object. This would fail to detect when one object is completely inside another object though.

_________________
Heard in #gpwiki: <wzl> is there some serious grammar fail in your line or am i just too intelligent for your logic


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 8 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group