The last comment I posted about doing fracturing was this:
The problem with this naive connectivity graph construction is that pieces in fairly close proximity (but not actually touching) should not be connected but the Delaunay triangulation simply connects all the centroids regardless of whether the pieces are touching or not.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.
I have another idea which might actually create a much more reliable connectivity graph. Note that this method is not necessarily suitable for on-the-fly connectivity calculation (it might get slow) but its should work quite well as an offline method.
Consider a wall that has been fractured into a bunch of chunks (http://chestofbooks.com/architecture/Bu ... es-185.jpg). Take each chunk and scale it outward (along the normals?) to get a slightly bigger version of each chunk. This is to make sure that each chunk is touching its neighbour. Now perform a collision detection step. We don't need impulses / forces resolved here. We just want the collision pairs between the chunks. This set of collision pairs can now be used to build a graph that defines the connectivity between the chunks. Each collision pair will essentially define an edge in the graph. Note that we can ignore multiple collisions between chunk A and B; we just want to know whether they collide or not -- one is enough.
So, what do you guys/gals think? Does the chunk-scaling method sound viable?