Convex hulls are very useful for a number of optimized calculations such as fast
intersection tests, fast spatial subdivision, and other early-out's used in computer graphics, computational physics and robotics.
When I implemented convex hull generation and convex decomposition in
PAL I first used
qhull and leveraged code from
tokamak physics, but then used code by
Stan Melax and
John Ratcliff for
PAL. Recently my work at
Transmin has required generation of a number of Convex hulls, and so I combined these snippets of old code to create a plug-in for
Blender.
The Blender plugin creates a bounding convex hull of the selected object.
It calls an external executable 'convex' which creates a convex hull based on an intermediate OBJ file.
Installing the plugin requires you to compile the code to generate the 'convex' executable, and copying the python code into Blender's scripts directory.
To compile the C code on linux/osx:
g++ createhull.cpp hull.cpp -o convex
Place the object_boundinghull.py script in your ".blender/scripts" directory.
On OSX Blender default installs to:
/Applications/blender-2.49b-OSX-10.5-py2.5-intel/blender.app/Contents/MacOS
Once the plugin is installed you can start creating convex hulls. You can select an object in blender and cut it into smaller objects to manually decompose the hulls. To do this, you can use the Knife tool (K) or split objects in edit-mode with 'P'. (Selection tools like 'B' and manual alignment of cameras ('N', Numpad 5) will help a lot).
Once you have the objects you would like to generate hulls for select one, and run the "Bounding Convex Hull" script. It will ask you to confirm the creation of the hull. The new hull will have the same name as the original object and have ".hull" appended to its name.
The plugin will generate a new object that represents the convex hull of the selected object, with the same transforms as the original object. (Ctrl-A to apply all down to the mesh, note: Blender 2.49 does not let you apply translation transforms, but Blender 2.5+ does). You can then decimate the hull to reduced the number of tri's used to represent your object. (Editing F9, under modifiers, select 'Add Modifier', decimate, and reduce the ratio).
Now your ready to export your scene for all your raytracing and collision detection needs!
Thanks to
Transmin Pty Ltd for allowing me to release this plugin back to the Blender community under the GPL.
Follow the link to
download the Blender Bounding Convex Hull plugin to generate editable bounding volumes directly in Blender.