Funnell and tubes...

Please don't post Bullet support questions here, use the above forums instead.
Post Reply
User avatar
tasora
Posts: 26
Joined: Mon Aug 15, 2005 8:57 am
Location: Italy
Contact:

Funnell and tubes...

Post by tasora »

Hallo,

I am embedding Bullet in my physics library (chrono::engine) and I am
satisfied with the results. One application of my multibody solver is the
simulation of granular flows inside reactors. The problem is.. how to
simulate spheres inside funnells or large cylinders?

Look to this animation as an example (excuse me for the low quality of the
stretched youtube video, it is a matter of codecs..) :

http://it.youtube.com/watch?v=20s44yEqVVc

My current solution is to use Bullet for sphere-sphere collisions, followed
by a post collision step which finds collisions between spheres-reactor using
my own code . All total contacts are then inserted in my physics solver, etc.etc.
This allows me to create precise contacts between the inner surfaces of
cylinders / cones and the spheres.
However this is a 'trick' which bypasses Bullet, hence I cannot use the contact
persistency, so I'd like to have such kind of contact as native in Bullet.

I have few ideas about this, each with shortcomings:

- I could create a custom bullet shape of type 'funnell' and a custom
algorithm for sphere-insidefunnel case (because I guess that the
original algorithm with support points works only for convex pairs...:-)
This sounds ok (although not very general in its use, since cubes and
other geometries would require ther own algos for funnell collision..)
but there's a problem with broadphase: when 100'000 spheres are into
the funnell, the bullet broadphase would create way too many pairs, even
for those sphere which do not collide at all becuse in the middle of the
reactor. A possible cause of bad performance.

- I could use the previous idea, but using 'slices of cylinders' and 'slices of
funnells' to build the entire reactor as different neighbouring collision
objects (I mean, "V" sliced like a cake) so that their AABB won't create too
many near pairs in broadphase.

- Last option, would be to use convex decomposition of the reactor,
to split into polygonal convex shapes. But I avoid this because of
the approximation of the cylindrical/conical surfaces, which I'd like to
keep as precise as possible...

Please note that I need to simulate 200'000 spheres in the reactor. Currently
I can simulate this amount, but with the tricky custom collision, without
contact persistence, which I described at the beginning. But now I'd really
need contact persistence.....

Any hint?

A.Tasora
Post Reply