Closed GoogleCodeExporter closed 9 years ago
Original comment by erwin.coumans
on 15 Dec 2008 at 6:18
See also discussion here:
http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=2976
Original comment by erwin.coumans
on 15 Dec 2008 at 10:54
Original comment by erwin.coumans
on 3 Jun 2009 at 6:23
See preliminary BasicDemo for pre-fractured objects here (attached
BasicDemo.zip)
http://bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=4175
Original comment by erwin.coumans
on 9 Oct 2009 at 11:10
See http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?f=17&t=4498
And attached files.
Original comment by erwin.coumans
on 24 Dec 2009 at 5:28
Attachments:
We need some way of calculating connectivity, so you don't have floating or
disconnectd
compounds. A method that precalculates contact points between all child shapes
can do
this automatically.
Original comment by erwin.coumans
on 24 Dec 2009 at 5:30
Some voronoi based fracture links:
Maya (David Greenwood, see attached): http://bit.ly/9MYcS6 and
http://bit.ly/dggZ28
Houdini: http://bit.ly/dy7wRi
Blender: http://bit.ly/aOpYIT
Original comment by erwin.coumans
on 18 May 2010 at 8:59
Attachments:
If you use a procedural voronoi fracture then calculating the connectivity is
trivial since the connectivity is simply the dual of the voronoi diagram, i.e.,
the delaunay triangulation. While this might be quite cool for performing
runtime fractures one should just keep in mind to allow for artists to create
prefractured geometry which may, or may not, have been created by a voronoi
fracture.
The trick would be to somehow automatically calculate neighbours. I have worked
on a project to do exactly this from within Houdini. We naively constructed a
'connectivity graph' by performing a 3D deluanay triangulation on the centroids
of all the "chunks". We would then perform shock / impact propagation along
those edges and break them when they exceeded certain 'strength' thresholds and
so forth.
Maybe this helps a bit?
Original comment by nanoc...@gmail.com
on 28 Jul 2010 at 7:39
I started a discussion thread specifically for this issue:
http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?f=4&t=5456
Original comment by nanoc...@gmail.com
on 28 Jul 2010 at 3:35
Original comment by erwin.coumans
on 26 Aug 2010 at 3:10
[deleted comment]
Attached is an updated demo that can glue and fracture. Press 'f' to toggle
between glue and fracture.
The demo introduces a new class btFractureBody : public btRigidBody that
maintains connections between child shapes in the compound, as well as
individual masses.
In glue mode, when a rigid body collides with a btFractureBody, they will merge
together.
In fracture mode, if a rigid body collides with a btFractureBody and it exceeds
some threshold, it will try to break connections. Then it will recompute
connectivity, and if there are 2 or more parts it will spawn new btFractureBody
for each, and remove the original.
It needs a bit more work before it can go in the SDK as a demo, but it can
serve as a starting point.
The demo requires Bullet 2.77 SDK or later.
Original comment by erwin.coumans
on 10 Sep 2010 at 12:10
Attachments:
in your demo is a small bug: when large object is breaking, then speed of all
small cracked pieces is zero (stopping), even if on previous step compound
object has a big speed.
Original comment by almatea2...@gmail.com
on 30 Oct 2010 at 7:33
Indeed, the velocity is not copied/transfered after breaking. This should be
fixed.
I copied the demo in the latest trunk:
http://code.google.com/p/bullet/source/detail?r=2311
Original comment by erwin.coumans
on 27 Feb 2011 at 9:47
"This should be fixed." - sorry my language, but you mean this trouble already
fixed or will be fixed in future? In lastest svn trouble is exist, velosities
is zero at moment of break.
Original comment by almatea2...@gmail.com
on 9 Mar 2011 at 1:09
It will be fixed before the next Bullet release.
Thanks,
Erwin
Original comment by erwin.coumans
on 9 Mar 2011 at 1:36
You may use this tweak of btManifoldResult.cpp at line 132:
if( (*gContactAddedCallback)(m_manifoldPtr->getContactPoint(insertIndex),obj0,newPt.m_partId0,newPt.m_index0,obj1,newPt.m_partId1,newPt.m_index1) )
{
m_manifoldPtr->removeContactPoint(insertIndex);
}
So if your gContactAddedCallback return 0 (in case for example compound body)
then contact point is remove.
Also it would be WONDERFUL to have evaluate applied impulse at
gContactAddedCallback stage.
Original comment by almatea2...@gmail.com
on 12 Mar 2011 at 1:48
We could modify the contact callback, but I'm concerned about backwards
compatibility, so better to keep it for Bullet 3.x. gContactAddedCallback is at
the collision stage, no constraint solver has run yet.
The FractureDemo is now ready for first release, it keeps the velocity now. A
better method for initializing the velocity after fracture could be developed
later.
See http://code.google.com/p/bullet/source/detail?r=2349
It will be part of Bullet 2.78 release, soon now.
Original comment by erwin.coumans
on 18 Mar 2011 at 12:23
It will be possible to blend a softbody dynamic and this solution (you use a
new separate btFracture solver)?
Original comment by almatea2...@gmail.com
on 20 Mar 2011 at 4:45
Also you do recompute connections for each new compound - it take long time for
large simulation. I do just erase unused connections of unbreaked compound
(check that children of each connection is part of this compound) - so
connection reducing for breaked compound.
Original comment by almatea2...@gmail.com
on 20 Mar 2011 at 5:02
The current demo is a basic starting point. It hasn't been optimized yet.
Extending it with softbody is possible.
If you have improvements, can you share it?
Thanks!
Original comment by erwin.coumans
on 20 Mar 2011 at 6:12
I can not share whole code, it is property of my company but I think I can some
places of my code
Original comment by almatea2...@gmail.com
on 24 Mar 2011 at 10:44
Original issue reported on code.google.com by
erwin.coumans
on 9 Sep 2008 at 7:22