Hi guys. I was wondering if anyone had any thoughts on breaking geometry? I’ve been looking around and I can’t seem to find much on the subject. Lets take a simple example, a glass bottle that isn’t hollow (to begin with - a normal closed mesh)
I thought that maybe a recursive split with arbitrary planes. So you draw a plane that divides the mesh into two, then do the same to these two bits etc, but then one would need to cap these bits that are made.
I believe Red Faction and similar tend to precompute their destruction animations to a degree. I cant seem to find the original post I saw on this. I’d have thought this would be a common problem with a few solutions (even though its a tricky one. Anyone know of any papers or similar on the subject?
Boolean substractions are provided by every modeler. They fill the caps, and fixup the sometimes wrong output geometry. Artists can create animation frames, in each the boolean object being larger thus penetrating the mesh more, and export the many soups of triangles (one soup per frame).
Another way can be to highly tessellate the mesh, and pre-fill caps; and have some random physics equations applied to vertices and faces, to have them crack selectively. (think of glDrawElements → glDrawArrays). Groups of object-shards (2 triangles + 3 quads in each shard) could stick together and get their own transformation matrix for animation. A floodfill algo can detect the groups of shards.
Anyway, it’s not an easy thing for realtime. Almost every game that features such destruction, simply had offloaded the task to artists to create the shards, by using whatever expensive art-tools they find.
For the realtime breakage, one of the best implementations I am aware of is in Sumotori Dreams : that http://www.pouet.net/prod.php?which=30237
From the menu, throw a lot of balls at various blocks, the breaking is nicely done, and certainly not precomputed for a 96 kilobytes game. No idea about the actual implementation though.
Thanks for the replies. I cant get that pouet demo to run (these guys are pretty cool) but it might be my VM so I’ll look on another machine.
I think that precomputing is a way to go and If i can figure a way to prefill the gaps easily. I think thats why I was considering a ‘slice’ operation as I should be able to figure out where the caps should be. If I make a hierarchy of these divisions then maybe I can alter the depth of the tree traversal depending on where the impact point is maybe?
Yes, the offload to an artist is how i’d see it done before. That may be an option too. I 'll see if the capping and breaking approach looks good.
This should be a more compatible, bigger version : http://www.gravitysensation.com/sumotori/sumotori102.zip
Try to throw stuff in the menu until you manage to break the second nearest brick in rightmost wall, you enter a mode where it is easier to play with the breakable stuff. Too bad the number of debris is limited
Breakable walls seem to be feasible in realtime, as a bunch of bricks, but more complex objects probably need precalc.