Dynamic weight for meshes

There is a dynamic weight component for lines, but none for meshes. I tried out the SelfWeight component from the K2Engineering plugin, but that one also does not seem to update its value according to the change in area.

Furthermore, the K2 standard VertexLoads could be significantly improved:

a) option for constant value, or a value based on voronoi area for each vertex
b) option to update dynamically
c) option to folllow the mesh normals, which would make the pressure component obsolete

options a) and b) would be very important, as I see lots of students using K2 for the “formfinding” of shellls and gridshells, but retrieving inaccurate results, as: the springs are stretching like crazy (yes, can be fixed with a high stiffness and length extension), equal loads are applied to all vertices and mesh face areas are changing

(even with a very stiff cable net, the individual mesh face areas will still change, as the faces can fold together like scissors)

Would be cool if the VertexLoads and the Loads component, as well, could get some upgrades.

Best wishes,

1 Like

Hi Rudi,
Yes, I agree a component for area based mesh loads (with an option for dynamic update) would be a good addition. If I recall, I already wrote one, just need to make it an official component.
I think I’ll keep pressure and vertical loads as separate components though for clarity.

That would be amazing! Please let me know if you find it, or if it is implemented.
I guess Kangaroo updates are shipped automatically with the new Rhino versions?

Btw. regarding custom Kangaroo goals: What is the best way to go about, are there any guidelines? Or is it best to just take a look at the Github examples and trying to understand the logic from there?

Happy new year, Sir. Are there any news regarding the dynamic weight feature? I think it is essential for formfinding shell structures…


bump @DanielPiker :building_construction:

Just did a quick comparison how the net topology influences the form-finding. The three topologies result in three completely different shells!

There are however some geometrical issues that arise due to the stiff springs. I guess that it would make sense to make the springs softer, so they can better form a doubly curved shape. Otherwise they are limited to a Chebyshev mechanism.

This would again be a perfect use case for Dynamic weight for meshes.


Another motivation for the Dynamic Weight for meshes: a net of stiff cables is always limiting, albeit in different ways…

Hi Rudi,

Sorry for taking a while to get back to you on this.
I was sure I remembered writing something like this but was having trouble finding it and didn’t want to rewrite something I’d already done.
Eventually I realised it was way back in Kangaroo1 in 2014.
Here’s an image from then showing a catenary mesh with soap-film elements for tension and dynamic area weights, so the shape isn’t dependent on the meshing:

Because of the K2 Goal format I’ll need to rejig it a little to make it compatible, but that shouldn’t be too hard.


this might be the case for

as their definition is area based and area minimizing forces are influencing the shape. Haven’t tested / investigated them yet though. (Might be interesting to remodel Stuttgart 21)

However, with a quasi rigid network of bars, the topology has a huge influence on the shell geometry, as can be seen in my previous screenshot.
As a side note, here I applied the nodal forces using their respective areas of influence (Lasteinzugsflächen), as this is usually the first mistake. They are not updated however during the iterations as mentioned before.

Yes, that was my point - when using only edge tensions the meshing can completely change the shape (particularly with quad meshes which can shear), and if you want to you can avoid this with an area based tension.

Anyway here’s that dynamic area weight goal updated for K2.
areaweight_goal.gh (45.2 KB)

It has 2 options for how the weight is distributed over the 3 vertices of each triangle - barycentric or Voronoi regions. As you’ll see though, the difference in results between these is miniscule.

Note that when using a goal which can dynamically adjust its own strength like this, you don’t have the usual guarantees of convergence, since if the weight is high enough relative to the tension, you can get a mesh which stretches and increases its area, which increases its weight, which makes it stretch more and so on in a runaway cycle.


introducing triangles would thus mean, that one is assuming shear stiffness for the final shell. The solution with only quad elements would thus be the shear free solution, as far as I understand it… just an observation.
Still want to test this with some topologies though, out of curiosity… :smiley:


Unfortunately (?) the difference between:

  1. same and fixed loads for all vertices
  2. area based but fixed loads
  3. area based and updating loads

is veeeeery small for at least a simple homogeneous quad mesh - they are barely visible in the screenshot.
The significant difference is if one uses extensible springs, or extended stiff springs, as can be seen in the 45° section.

This is the simplest test I could think of, my guess is, that with irregular vertices the difference will be bigger.