Dear Jeremy, thank you for the reply.
If I’m not mistaken, what you’re describing here sounds like a differential growth applied to a circle (or a dodecagon) whose vertices would be connected to its center.
However since I’m dealing with a mesh (not with a circle) the problem is different and, I’m afraid, much more complex. I’ll try to explain it as best as I can.
I’m trying to “grow” a circular mesh made out of 2 low-poly circles (an hexagon and a dodecagon) whose vertices have been connected.
This mesh has:
- 19 vertices (0 to 18)
- 30 “half-edges” (edges shared by 2 triangles)
- 12 “naked edges” (composing the outer circle)
Each vertex has a repulsive force and is connected to its neighbors by springs. It’s also important to note that inner vertices are of degree 6. For example, vertex n°5 have 6 incident edges, connecting it to its 6 adjacent neighbors (vertices n° 6, 0, 4, 14, 15 and 16)
Now, if I want to create ruffles (and as you’ve rightly suggested) I need to add many vertices around the outer circle. But this is precisely where all the problems begin.
“Adding vertices” means that I have to divide any triangle that is on the edge of the mesh (triangles that have a “naked edge”). But the question is what kind of division ?
I could split these triangles in half, over and over, like you seem to suggest.
(triangle 5-15-16 is split in half, then its inner triangles are split in half again and again)
But then that would mean that:
- only the outer circle of the mesh is growing, not the mesh itself
- the degree of the inner vertices is becoming way too high (here vertex n°5 is of degree 21 !!)
And I would end up with something looking like this:
From the different papers (about cellular growth simulation) that I’ve read it seems a good mesh (homogeneous and consistent) is composed of vertices that are, overall, of degree 7. Meaning that some vertices may be of degree 8 or 9, others of degree 5 or 6 but most have to be of degree 7.
In this case, given that I’m starting with inner vertices of degree 6, I’m allowed to connect them to 1 additional neighbor only. In other words, I can split in half a triangle (on the outer ring of the mesh) only once.
Of cource I can add some variety with a probabilistic function but the degree should not exceed 9 or 10.
But then another problem occurs: because of this limitation the growth is now constrained:
(newly added vertices in red, marking where former naked edges have been split. Inner vertices n°5, 6, 1, 2, 3 and 4 are all of degree 7: the growth is stopped.)
In order to prevent that behavior and unlock the growth process I tried to split the newly added edge in half to create a new inner vertex:
In the example above, the original triangle (5 -15 -16) is divided in 2 and the newly added edge (5 - 19) is split in half. The new inner vertex (20) is only of degree 4 and its adjacent triangles (15 - 20 - 19) / (19 - 20 - 16) can therefore be divided until it reaches degree 7.
Unfortunately, this workaround works poorly. Edges are growing but not uniformly and the overall shape is far from looking like the picture from Anders Hoff:
So the million-dollar question remains:
What kind of triangle division makes possible a uniform growth of the edges ?