StructuralDesigner3D vs. Kangaroo3D — What is the difference?

I have recently been asked how StructuralDesigner3D compares with Kangaroo3D, so I thought it would be interesting to share a comparison from three different perspectives:

1. Structural Possibilities
2. Workflow
3. Numerical Analysis

Before going into the comparison, I would like to acknowledge the important contribution of Daniel Piker and Kangaroo3D to the Grasshopper ecosystem.

1. Structural Possibilities

The first important distinction is the scope of the two tools.

StructuralDesigner3D is currently a more specialised tool, focused on structural form-finding. At this stage, it allows the generation of:

• Funicular structures
• Tensile structures
• Pneumatic structures

Kangaroo, in contrast, is a much more comprehensive and general-purpose physics-based tool. Its framework allows users to simulate and combine a much wider range of physical phenomena, constraints and interactions.

This difference in scope is important when interpreting the comparison: the two tools overlap in some structural applications, but they are not equivalent in terms of the range of phenomena they can model.

2. Workflow

The second difference concerns how the user interacts with the tools.

Kangaroo operates within the Grasshopper environment and provides a highly flexible framework in which users can combine different goals, constraints and physical behaviours through visual programming.This approach offers considerable freedom and makes it possible to develop highly customised workflows.

StructuralDesigner3D takes a different approach.The aim is to provide Dynamic Relaxation directly within Rhino, using predefined commands, without requiring the user to construct a Grasshopper definition and offering a more direct workflow for specific structural form-finding. For example, creating a funicular structure in Kangaroo typically involves setting up and connecting 20 to 30 components within Grasshopper, whereas in StructuralDesigner3D the same process starts by simply selecting the FunicularStructure command and following a step-by-step workflow directly in Rhino.

Another difference is the way structural properties are assigned. In StructuralDesigner3D, physical properties can be assigned directly to selected structural elements in the Rhino model. This allows the user to interact with the structural model directly, while avoiding the need to manage equivalent information through Grasshopper data structures.

You just need to select, adjust, and simulate. It’s very simple!

For this structure, StructuralDesigner3D was used through a single command — FunicularStructure. This command provides an interactive editing loop where gravity, elasticity and masses can be adjusted, supports can be redefined or moved, new lines can be added, existing lines removed, and previous operations undone. Once the form-finding process is complete, the resulting structure can also be saved together with its associated metadata in JSON format, preserving the information required to continue or reproduce the workflow.

3. Numerical Analysis

The third part of the comparison concerns the numerical results.

To investigate how closely the two implementations converge towards equivalent geometries, I compared equivalent structures generated using StructuralDesigner3D and Kangaroo3D.

The resulting node positions were compared using three metrics:

• Maximum Deviation
• Mean Absolute Deviation
• Root Mean Square Error (RMSE)

Test Case Nodes Max. Deviation Mean Abs. Deviation RMSE
Catenary (10 × 10 m) 10 7.92 mm 2.90 mm 5.59 mm
Funicular Shell (10 × 10 × 10 m) 100 4.22 mm 0.90 mm 3.36 mm
Tension Structure (10 × 10 × 10 m) 100 0.20 mm 0.09 mm 0.103 mm
Pneumatic Structure (D = 10 m, H = 1.5 m) 100 48.93 mm 15.42 mm 17.85 mm

Overall, the two implementations produced closely matching equilibrium geometries. Some differences are expected, particularly because the two implementations have their own numerical procedures, rounding and convergence criteria.

The largest maximum deviation occurred in the pneumatic structure, at 48.93 mm. Even in this case, the deviation corresponds to less than 0.5% of the structure’s 10 m diameter.

Final thoughts

Kangaroo and StructuralDesigner3D offer different approaches to Dynamic Relaxation.

Kangaroo provides greater flexibility and a much broader range of physical simulations, while StructuralDesigner3D focuses on a more direct, simple and accessible workflow for structural form-finding within Rhino.

For me, the value of StructuralDesigner3D is not in trying to replace the flexibility of Kangaroo, but in providing an alternative workflow that makes Dynamic Relaxation more accessible to users who want to focus on the structural problem rather than on constructing the computational model.

Hi @David_Afonso,

as far as I understand your solver uses the Dynamic Relaxation Methode, described by Barnes in 1977 with his doctoral thesis?

In the book “Shell Structures for Architecture: Form Finding and Optimization” is a chapter dedicated to the comparison between several methods including DRM and Particle-Spring system (kangaroo), where there lay in the same group of dynamic equilibrium methods.

May I ask how do you check your convergence? Also, for understanding how the discrepancies arise, it would good to know if they are correlated with something or just show up randomly. Another question is about the boundary conditions: How did you set them up to compare?

Best,
Baris

Edit: I just read you paper, and saw you obviously know the book:)

Hi Baris,

Yes, exactly. The solver is based on the Dynamic Relaxation following the Barnes formulation.

For convergence, I currently use the maximum nodal displacement per iteration as the criterion. The solver stops when the maximum displacement falls below 0.0001 model units, with a maximum of 5000 iterations.

For the numerical comparison, I used the same topology, node positions and corresponding fixed nodes in both implementations.

Regarding the discrepancies, they are not random. They are generally small, but the magnitude depends on the type of structure, with the pneumatic case being noticeably more sensitive. I think this is mainly related to the different numerical implementations, including the integration and convergence procedures.

All the best :slight_smile:

D

Hi @David_Afonso,

thanks for the answer. Since I am researching/coding something related (not DRM o PS) I was curious, how you implemented it. When I tested my algorithm, I had also very similar values for most of the cases, just compression (not pneumatic) were a bit off.
Will publish it in a few days - then my questions maybe make more sense.

Best,
Baris

Thanks, Baris! I’m curious to read your paper when it’s published.