What do you think of my armoured icosphere™?

Hey guys, I think I have created a new shape, hear this out:

I was fooling around with soft-body physics, specifically I wanted to squish together soft-body spheres. I started by using subdivided cubes projected into spheres with the “cast” modifier. I was disappointed to see that Blender does not conserve the volume of soft bodies, like in this example where one sphere would “win” over the other and squish it against the wall when you’d expect them to push equally against each other:

notgood%20sphere

I was looking around for a solution to this and found this post on Blender Stack Exchange. It explains how soft-bodies are treated as “hollow” and therefore do not really have a volume. It further suggests adding internal structure to meshes in order to give them the ability to resist forces against their volume.

So I tried to add internal structure to my subdivided cubes by making a cubic lattice and then casting each “layer” into a sphere like this:

rotating%20lattice rotating%20lattice%20to%20sphere

This improved the simulation and the volume was retained much better, but new problems arose:

somewhatgood%20spheres

As you can see, the vertices that were originally the corners of the cube have no internal support, so you can see them wiggling back and forth, giving an uneven result. These vertices can move so far into the mesh that the internal structure is exposed, as you can see on the top left of the example above a few frames after the initial collision. This is a potential clipping danger. The simulation is also quite jittery.

My solution? The Armoured Icosphere™. Basically this is an icosphere with an internal structure, which varies depending on the number of subdivisions. An armoured icosphere with 1 subdivision is simply and icosphere with all the vertices extruded towards the center, like this (I have highlighted the internal structure):

Class%201%20Armoured%20Icosphere

This is what I call a Class 1 Armoured Icosphere. To move up to Class 2 you need to add another icosphere with 2 subdivisions and double the radius. Then you need to connect the new bigger icosphere to the first smaller one. Each face of the small icosphere corresponds to four of the faces on the bigger sphere, like this:

faces%20correspond

If we take one face of the smaller icosphere as an example, this is how it conects to the bigger icosphere:

how%20to%20connect

So if you do this with every face of the icosphere, you should be left with this:

THE%20RESULT

Now remove the internal faces and fill in the faces of the bigger icosphere (I do this by making a copy of the big icosphere and hiding it before deleting the faces, so that I can bring it back in afterwards and merge vertices by distance).

You now have a class 2 armoured Icosphere! The internal structure is comprised of very evenly spaced triangles which leads to a very smooth approximation to an actual volume.

The soft body simulations are a real treat with this beauty. Volume is preserved and the result is a very smooth simulation of squishy spheres, here is a comparison of a simulation with armoured icospheres on the top and normal icospheres below that.

three%20spheres three%20normal%20spheres

You can see that the normal icospheres keep pushing eachother unevenly and inconsistently compared to the armoured ones.

I did four simulations each, the simulation with the armoured icospheres baked consistently in 35 seconds, while the normal icospheres could bake from 30 seconds to a minute. The normal icosphere simulation would also quite often break and the spheres would clip into eacother.

The simulations get even smoother when using a Class 3 armoured Icosphere (this one took a while to make, but it’s the same process), like in the example below:

So I guess I’ve developed an elegant and smooth way to realistically simulate soft spheres in Blender. One downside is that it is not possible to add a subsurf modifier to the armoured icosphere. The internal structure interferes with the surface which is VERY apparent when shaded smooth:

image

I’m pretty excited about my armoured icosphere though, but what do you think? Has the volume issue been resolved before in a better way that I should know?

If you’d like to play around with the Class 2 and 3 armoured Icospheres then you can download them here!

5 Likes

I love it! Always glad to see someone go down a rabbit-hole and figure out the ins and outs of a certain system. Is this something that could easily be added to the existing Icosphere primitive as a toggle?

It very much could, though clearly shouldn’t. As the op already noted (see last picture), this, by definition is some hardcore non-manifold geometry. For actual rendering you wanna avoid that at any cost.
So given how much of a super extemely rare edge-case this is (and how it’s really never needed for anything else whatsoever) adding this as an option to the ‘add icoshpere’-operator would raise an army of ignorants trying to use this stuff for rendering (or for anything exept this softbody workflow, really) and complaining/being confused why it creates all sorts of trouble.

greetings, Kologe

This kind of stuff has been used as a workaround for animating bouncing breasts for a while now, with mixed results.
I would prefer the BF considers adding some proper volume preservation to soft bodies instead so that nobody needs to use this ugly hack.

1 Like

Don’t talk to me or my armoured Icosphere ever again.

6 Likes