Dynamic Sun Shading System


Categories: Tutorials

Tagged with: | | | |

Aim: Create a responsive shading mechanism for the façades of a building. The shading system should open and close so that when there is sun on the balcony, it is allowed access, whereas when it is in darkness the panels will close so that there is more warmth and protection from the elements.

The principle of how I would achieve the system would be to use the individual sides of the building as a surface, split this into cells for the individual elements, and draw lines within the cells to create triangular panels. From this, I used Ladybug sun data to compare the vector from the sun with the orientation of the facade, and used this data to dictate the angle of the panel rotation.

Building Shape

I began by modelling a basic U shaped 4-6 story building, with facades and balconies on each side, creating the opportunity for different responses based on the sun angle.

Facade Surfaces

I then drew basic flat surfaces where I wanted each of the façade elements to be.

Splitting Facades

I used the facades as inputs to my grasshopper file, and used the IsoTrim element to split the facades into floors each 3m tall. Each one of the units of the rectangle serves as a shade to one room and balcony. I then merged the surface data at the end to make a more manageable data tree.

Sun Path

I used ladybug to get the sun data for Prague into my file. From here I modelled the sun as a sphere and generated its vector. This was important as the similarity of the vectors is what dictates the angle of rotation of the panels.

Comparing Vectors

I needed to establish the vector direction of each of the ‘balconies’. To do this I evaluated each of the surfaces and used the vector to compare angle with the sun. I then merged all of this data so the angle difference between each vector is in an equivalent list to the shape data taken from the IsoTrim element.

Remapping For Angle

It was then necessary to remap the data from the angle comparison. I set manual bounds in order to dictate when I want the panels to open. I set bounds of 1.4-3.2 so that when the sun is more than 1.4 radians incident on the balcony there is no response from shading system and it remains closed. I then grafted the clipped data and used this so that there was no negative data, which would have meant the panels would rotate inwards.

Drawing Frame

I used the shape data of all the individual rectangles and established points and vectors from which the panel grid could be drawn. I used the draw line component to join the individual points, and joined the curves for smooth polylines at each triangle. I got part of this piece of the script from a YouTube video on dynamic shading panels, found here: https://www.youtube.com/watch?v=1yQfzldvFno

Panels and Rotation

From the joined curves I used the angle data from the remap to rotate each triangle around the axis of the original grid. This triangle surface could then be extruded to create the solid panel.

Frame Rods

Finally, in order to make the system more realistic I made rods to act as the frame for the panels.

The whole script


Open and closed sides of the facade
Rear of the facade closed where there is no sun access
Open panels
Closed panels

To reflect on the project, there are some things I would perhaps improve given more time. It would have been nice to try to create a more complex and unique panel design, perhaps something more kinetic, than the simple triangles used here, although I think the function is demonstrated well. Additionally, it would be nice to have the whole of the building made through Grasshopper rather than manually making most of it in Rhino aside from the facades. I would like to say that I thoroughly enjoyed the course, and give thanks to Simon Prokop for his help and guidance with the project.

Below is the Grasshopper file, I was unable to link the Rhino file as it was too big