Sunday, 1 November 2009

British Museum Great Court Roof using StructDrawRhino

Another stunning, innovative structure that has inspired similar projects since.  It's a favorite space of mine, especially on a bright sunny day when the shadows and reflections are mesmerising.

Here's some papers, blog posts and links I found to determine how Happolds and Fosters designed this amazing roof.

So, now you can try to do something similar yourself using the structural plug-ins for Rhino.  My routines and commands don't follow exactly the description from the paper, but they allow something similar to be created.

To try this for yourself, the input Rhino file can be downloaded from here

I'm currently coding up algorithms for more powerful force density routines to include dynamic relaxation, but in the interim you can try the sdrMeshRepelVertex command to relax a rigid mesh outline with discontinuitys at nodes/vertices for continuing edges.  I used the sdrZigZagCurves command to divide the initial radial lines to generate the starting Grid.

From the starting flat grid, we can use the plug-in command sdrMeshProjectVerts to project the mesh vertices onto the mathematical surface.

Then we start the mesh relaxing process.  The command  sdrMeshRepelVerts uses force density to repel mesh vertex away from their neighbours.  Naked/Free edges/vertex will be restrained.  The more loops or iterations you allow, the better the result you will get.  Note that you can nominate a target surface that will vertically project the vertex back onto the surface (if you don't, the mesh will naturally flatten).  I found the best result was by nominating the balance force option for a number of iterations, and then to run a few loops of the target equal length for edges.

You can then extract the medge edges to curves using the sdrMeshDupEdges command.  By applying a structural profile (I assumed a much larger hollow profile than that used), the plug-in will automatically sweep the centreline curves.

There is also a number of routines in development for form finding and finding minimal surfaces.  Blog posts with worked examples will shortly follow, but if you look at sdrMinShapeMesh function you can try it for your self.  The other sdrMesh.... routines allow manipulation of mesh generated in Rhino to transform it to arrangements more appropriate for analysis/solving.

If you've any requests, ideas or suggestions for these routines (or need more help or other examples), don't hesitate to get in touch.