Collision detection libraries

Please don't post Bullet support questions here, use the above forums instead.
Jan Bender
Posts: 111
Joined: Fri Sep 08, 2006 1:26 pm
Location: Germany

Collision detection libraries

Post by Jan Bender »

Hi,

I am working on two things at the moment:

1. Implementing my impulse-based method on the GPU and
2. on deformable objects

The simulation of joints on the GPU works already (a demo will soon be available on my homepage) but before the collision response can be implemented I need a collision detection that works on the GPU as well.

Also I need a collision detection for deformable objects (not necessarily on the GPU).

Can anybody give me a hint where I can find the required collision detection libraries? I don't want to spend much time on implementing them by my own.

Thanks,

Jan
clanzotti
Posts: 15
Joined: Tue Jul 26, 2005 10:11 am

Re: Collision detection libraries

Post by clanzotti »

Hi,
Jan Bender wrote:Hi,

I am working on two things at the moment:

1. Implementing my impulse-based method on the GPU and
2. on deformable objects

The simulation of joints on the GPU works already (a demo will soon be available on my homepage) but before the collision response can be implemented I need a collision detection that works on the GPU as well.

Also I need a collision detection for deformable objects (not necessarily on the GPU).

Can anybody give me a hint where I can find the required collision detection libraries? I don't want to spend much time on implementing them by my own.

Thanks,

Jan
Never tried it but as i know Gino's Solid CD library can handle deformable objects:

http://www.dtecta.com/

Regards,

Carlo Lanzotti
Pierre
Posts: 67
Joined: Mon Jul 25, 2005 8:56 am

Post by Pierre »

Opcode handles deformable objects.
Jan Bender
Posts: 111
Joined: Fri Sep 08, 2006 1:26 pm
Location: Germany

Post by Jan Bender »

Never tried it but as i know Gino's Solid CD library can handle deformable objects:
I already use SOLID for rigid bodies but I wanted to change since I want to publish my project as open source and SOLID is not free for commercial applications.
Opcode handles deformable objects.
Do you know if Opcode returns the whole contact region (all contact points) between two bodies and a contact normal?

Thanks,

Jan
dog
Posts: 40
Joined: Fri Jul 22, 2005 8:00 pm
Location: Santa Monica

Post by dog »

Pierre, how does opcode handle deformable objects? And what does deformable mean for opcode?

Thanks.
User avatar
Erwin Coumans
Site Admin
Posts: 4221
Joined: Sun Jun 26, 2005 6:43 pm
Location: California, USA

Post by Erwin Coumans »

It would be great if we can collaborate a bit more, Jan.

Bullet can do deformable too, as soon as we add the 'refit' to the optimized BVH structure. It also has btTetrahedronShape support, which can be deformed too, by changing its vertices. So we can just add a new structure 'btDeformableTetrahedralMesh', customized to your needs, using the deformable (refit) AABB tree.

Can you describe the deformable shape properties? Is it a tetrahedral mesh, with mostly fixed topology (except when it breaks)?

Thanks,
Erwin
Jan Bender
Posts: 111
Joined: Fri Sep 08, 2006 1:26 pm
Location: Germany

Post by Jan Bender »

Bullet can do deformable too, as soon as we add the 'refit' to the optimized BVH structure. It also has btTetrahedronShape support, which can be deformed too, by changing its vertices. So we can just add a new structure 'btDeformableTetrahedralMesh', customized to your needs, using the deformable (refit) AABB tree.

Can you describe the deformable shape properties? Is it a tetrahedral mesh, with mostly fixed topology (except when it breaks)?
For deformable bodies I started with some simple cloth simulations as you can see on my homepage: http://www.impulse-based.de. For this I need a collision detection which can handle deformable triangle meshes. I also want to simulate tetrahedral mesh bodies. If your collision detection can handle this then it is exactly what I need.

Jan
Pierre
Posts: 67
Joined: Mon Jul 25, 2005 8:56 am

Post by Pierre »

Pierre, how does opcode handle deformable objects? And what does deformable mean for opcode?
With a refit operation, same as Solid. Only faster since the trees have less nodes to refit.

"Deformable" means you can update the vertices, but not the connectivity. Works for vanilla cloth. Doesn't work for tearable cloth.

- Pierre
Etherton
Posts: 34
Joined: Thu Aug 18, 2005 6:27 pm

Post by Etherton »

Pierre wrote:With a refit operation, same as Solid. Only faster since the trees have less nodes to refit.
...

Pierre
Umm I was under the impression that an AABB struture was bound to have equal or more nodes than an OBB. Maybe I was wrong on that.
Pierre
Posts: 67
Joined: Mon Jul 25, 2005 8:56 am

Post by Pierre »

Umm I was under the impression that an AABB struture was bound to have equal or more nodes than an OBB.
No, you're right. You're just confused about CD libs. I compared Opcode to Solid, not to Rapid:
- Rapid uses OBB trees, and doesn't support deformable meshes
- Solid uses AABB trees, and does support them.
- Opcode is like Solid, but with less nodes in the trees.


- Pierre
User avatar
Erwin Coumans
Site Admin
Posts: 4221
Joined: Sun Jun 26, 2005 6:43 pm
Location: California, USA

Post by Erwin Coumans »

And Bullet is like Solid, but with a liberal Zlib license that allows commercial use.
Just like Opcode and Solid, Bullet also includes AABB trees, with optional stackless tree traversals, which should help performance on new platforms (although public version Bullet hasn't been optimized much yet for either performance/memory usage, the PS3 version has some optimizations).

As far as I know, public Opcode doesn't support convex polyhedra, which I think is an important feature for rigid body dynamics. Also, since Pierre joined Ageia/Novodex there isn't active development to improve the public version I suppose.

Can you correct me if I'm wrong, Pierre?

If we collaborate, we can enhance Bullet to support refit, and other necessary enhancements for deformable cloth/tetrahedral meshes.
Pierre
Posts: 67
Joined: Mon Jul 25, 2005 8:56 am

Post by Pierre »

As far as I know, public Opcode doesn't support convex polyhedra, which I think is an important feature for rigid body dynamics.
Opcode only deals with arbitrary triangle meshes indeed. It doesn't contain convex-related algorithms, neither GJK nor SAT.
Also, since Pierre joined Ageia/Novodex there isn't active development to improve the public version I suppose.
Yep, I don't think I'm allowed to improve the public version. Releases stopped the day I joined Novodex.

- Pierre