Simple and Efficient Approximate Convex Decomposition
Simple and Efficient Approximate Convex Decomposition
Has anyone tried to implement K. Mamou's "A Simple and Efficient Approach for 3D Mesh Approximate Convex Decomposition"?
Described in Game Programming Gems 8  Chapter 2.8, p.202
First published in ICIP 2009 proceedings: A Simple and Efficient Approach for 3D Mesh Approximate Convex Decomposition (PDF)
Thoughts?
Described in Game Programming Gems 8  Chapter 2.8, p.202
First published in ICIP 2009 proceedings: A Simple and Efficient Approach for 3D Mesh Approximate Convex Decomposition (PDF)
Thoughts?
 Erwin Coumans
 Site Admin
 Posts: 4073
 Joined: Sun Jun 26, 2005 6:43 pm
 Location: California, USA
 Contact:
Re: Simple and Efficient Approximate Convex Decomposition
That looks interesting. I contacted the author and asked for his source code.
There is a good chance that we can add it to a future Bullet SDK, as improved convex decomposition is valuable.
Thanks for the link!
Erwin
There is a good chance that we can add it to a future Bullet SDK, as improved convex decomposition is valuable.
Thanks for the link!
Erwin
Re: Simple and Efficient Approximate Convex Decomposition
Dear all,
You can find an implementation of the Hierarchical Approximate Convex Decomposition (HACD) here http://sourceforge.net/projects/hacd
The code is available under a BSD license.
It is a first version and I am still working on it. If you find any bugs/problems or if you are interested in improving the library do not hesitate to contact me
You can find below some results:
http://sourceforge.net/projects/hacd/fi ... /bunny.jpg
http://sourceforge.net/projects/hacd/fi ... s/foot.jpg
http://sourceforge.net/projects/hacd/fi ... /Homer.jpg
http://sourceforge.net/projects/hacd/fi ... ts/pig.jpg
http://sourceforge.net/projects/hacd/fi ... s/egea.jpg
http://sourceforge.net/projects/hacd/fi ... eature.jpg
http://sourceforge.net/projects/hacd/fi ... s/dilo.jpg
http://sourceforge.net/projects/hacd/fi ... s/dino.jpg
http://sourceforge.net/projects/hacd/fi ... ts/elk.jpg
http://sourceforge.net/projects/hacd/fi ... feline.jpg
http://sourceforge.net/projects/hacd/fi ... s/fish.jpg
http://sourceforge.net/projects/hacd/fi ... s/hand.jpg
http://sourceforge.net/projects/hacd/fi ... /horse.jpg
http://sourceforge.net/projects/hacd/fi ... ctopus.jpg
http://sourceforge.net/projects/hacd/fi ... rabbit.jpg
Comparative results HACD vs. John Ratcliff's ACD (http://codesuppository.blogspot.com/200 ... ynow.html):
http://sourceforge.net/projects/hacd/fi ... ctopus.jpg
http://sourceforge.net/projects/hacd/fi ... p_hand.jpg
http://sourceforge.net/projects/hacd/fi ... p_dino.jpg
http://sourceforge.net/projects/hacd/fi ... _bunny.jpg
Khaled
You can find an implementation of the Hierarchical Approximate Convex Decomposition (HACD) here http://sourceforge.net/projects/hacd
The code is available under a BSD license.
It is a first version and I am still working on it. If you find any bugs/problems or if you are interested in improving the library do not hesitate to contact me
You can find below some results:
http://sourceforge.net/projects/hacd/fi ... /bunny.jpg
http://sourceforge.net/projects/hacd/fi ... s/foot.jpg
http://sourceforge.net/projects/hacd/fi ... /Homer.jpg
http://sourceforge.net/projects/hacd/fi ... ts/pig.jpg
http://sourceforge.net/projects/hacd/fi ... s/egea.jpg
http://sourceforge.net/projects/hacd/fi ... eature.jpg
http://sourceforge.net/projects/hacd/fi ... s/dilo.jpg
http://sourceforge.net/projects/hacd/fi ... s/dino.jpg
http://sourceforge.net/projects/hacd/fi ... ts/elk.jpg
http://sourceforge.net/projects/hacd/fi ... feline.jpg
http://sourceforge.net/projects/hacd/fi ... s/fish.jpg
http://sourceforge.net/projects/hacd/fi ... s/hand.jpg
http://sourceforge.net/projects/hacd/fi ... /horse.jpg
http://sourceforge.net/projects/hacd/fi ... ctopus.jpg
http://sourceforge.net/projects/hacd/fi ... rabbit.jpg
Comparative results HACD vs. John Ratcliff's ACD (http://codesuppository.blogspot.com/200 ... ynow.html):
http://sourceforge.net/projects/hacd/fi ... ctopus.jpg
http://sourceforge.net/projects/hacd/fi ... p_hand.jpg
http://sourceforge.net/projects/hacd/fi ... p_dino.jpg
http://sourceforge.net/projects/hacd/fi ... _bunny.jpg
Khaled
Re: Simple and Efficient Approximate Convex Decomposition
Hi khaled, that is wonderful, thanks for sharing this as open source. I trust it will come in very handy for physics simulations. I personally would also be interested in trying some things with HACD and Blender; I look forward to playing with / testing your HACD project resources in the near future (unfortunately, I cannot at this time; but I do want to acknowledge and thank you for it).
Re: Simple and Efficient Approximate Convex Decomposition
Looks great!
Thanks for the work!
Thanks for the work!

 Posts: 1
 Joined: Fri May 20, 2011 8:22 pm
Re: Simple and Efficient Approximate Convex Decomposition
I just wanted to confirm that I have had time to review the work of Khaled and it is amazing. He has done an incredible job; especially in providing this code open source to the development community.
I made an announcement on my blog that the old approximate convex decomposition work that I did is now considered completely deprecated and I will no longer be using it myself any more.
http://codesuppository.blogspot.com/201 ... onvex.html
I made an announcement on my blog that the old approximate convex decomposition work that I did is now considered completely deprecated and I will no longer be using it myself any more.
http://codesuppository.blogspot.com/201 ... onvex.html
Re: Simple and Efficient Approximate Convex Decomposition
This is great! With the help of some code posted by Flix (http://bulletphysics.org/Bullet/phpBB3/ ... f=9&t=7063), I have incorporated HACD with bullet in my simulations. I like how nicely it handles an object like this:
Original (3600 triangles), decomposed (134 clusters), and Bullet debug line drawing of the associated btHACDCompoundShape, respectively.
Original (3600 triangles), decomposed (134 clusters), and Bullet debug line drawing of the associated btHACDCompoundShape, respectively.
Re: Simple and Efficient Approximate Convex Decomposition
Dear all,
A new HACD version is available http://sourceforge.net/projects/hacd/
Have a look at my blog for the details http://kmamou.blogspot.com/
Khaled
A new HACD version is available http://sourceforge.net/projects/hacd/
Have a look at my blog for the details http://kmamou.blogspot.com/
Khaled
Re: Simple and Efficient Approximate Convex Decomposition
Great stuff, thanks Khaled! Looking forward to trying out the improvements.
Re: Simple and Efficient Approximate Convex Decomposition
khaled, I've finally been playing around with HACD and it's working really well; it's quite impressive. Also the new decimation feature is really handy (even works with nonmanifold meshes, great) and your recent blog post on the HACD parameters has been very useful as well.
Thanks, much appreciated!
(BTW I posted one of my first HACD tests with Blender & Bullet Physics as a p.s. to a recent (voronoi) video to spread the word on your great tool: realtime, rendered.)
Thanks, much appreciated!
(BTW I posted one of my first HACD tests with Blender & Bullet Physics as a p.s. to a recent (voronoi) video to spread the word on your great tool: realtime, rendered.)
Re: Simple and Efficient Approximate Convex Decomposition
Thanks. Great demos by the way...
Khaled
Khaled
Re: Simple and Efficient Approximate Convex Decomposition
How can I decouple this from wavefront?
Starting with a simple btBvhTriangleMeshShape for example.
How can I use convex decomposition on this shape?
Currently the demo only shows the case where a wavefront object is loaded with a lot of data that is not present in the btBvhTriangleMeshShape.
Starting with a simple btBvhTriangleMeshShape for example.
How can I use convex decomposition on this shape?
Currently the demo only shows the case where a wavefront object is loaded with a lot of data that is not present in the btBvhTriangleMeshShape.
Re: Simple and Efficient Approximate Convex Decomposition
The HACD class is not coupled to any format. You simply point it to your vertices and triangles using SetPoints()/SetNPoints() and SetTriangles()/SetNTriangles(), then (set params and) call the Compute() method...Karrok wrote:How can I decouple this from wavefront?
Re: Simple and Efficient Approximate Convex Decomposition
Then the question becomes, where is the above information available from a btCollisionShape, btTriangleMeshShape or btBvhTriangleMeshShape
Re: Simple and Efficient Approximate Convex Decomposition
In the btStridingMeshInterface. I've posted the source code here: http://bulletphysics.org/Bullet/phpBB3/ ... =17&t=7159.Karrok wrote:Then the question becomes, where is the above information available from a btCollisionShape, btTriangleMeshShape or btBvhTriangleMeshShape