Green roof – Prague main train station



Categories: Tutorials

Tagged with: | | | | | | | |

In my project, I modelled a roof with a park, which should be located above the tracks of the main railway station in Prague.

This was the main point of the urban design for the entire location of the main station and its surroundings. The roof is primarily intended to connect the railway station with the Žižkov area and also to provide a pleasant environment for passengers where they can spend time and wait for their train. It should also be a more aesthetic and enjoyable way to get to individual platforms other than through underground tunnels.


We devised a way of mushroom-shaped columns, which would be placed on the platforms and developed into the roof in an organic way resembling a circular vault. However, it was necessary not only to model the individual columns, but also to rotate them, as the roof rises towards Žižkov.


  1. Import the 3D model and model starting points of the columns. Importing them in the geometry pipeline, so we can work on all of them at the same time.


  2. Modeling of a sloping area that connects both sides of the roof – the buildings at the main road (lower side) and the car park building and the new entrance to the east (higher side).



  1. Modeling the largest polygon of the column and subsequent projection of this polygon into the sloping surface connecting both sides of the roof.


  2. The next step was to find the center of the projected polygon. We found the center of the polygon by breaking the polygon into individual lines, and therefore it was possible to make an arithmetic mean of its edge points and thus find the approximate center of the polygon.


  3. Then I created a curve connecting the original point of the column on the platform plane with its three shifted copies in the Z direction and with that approximate centre of the projected polygon.
    This created a rounded curve, along which we want to multiply and tilt the planes in which the individual increasing cross-sections of the column will be located.
    Also I had to simplify the data when merging the points so it would work for all of the points separately.


  4. Then, using the Pufferfish plug-in, I created 11 planes on the curve between the points, which will be used for individual cross-sections of the column.
    (The original plane of the first point on the platform needed to be overturned for the process to work.)


  5. Then it was necessary to create individual increasing cross-sections of the column in individual planes around the curve using a graph mapper.

    Creating increasing radius:

    Creating polygons in planes around a curve:


  6. The next step was to connect the polygons into the shapes of individual columns using the loft function.


  7. It was then necessary to trim the columns so that they would not interfere with the main station building and keep them away. That’s why I created a block with which I cut the columns.


  1. The next step was to create a top surface that would connect the columns and have rounded edges on the sides. I created this surface using two extreme curves. I later on cut it with the same block so that it would not interfere with the roof.


  2. In this case, I still wanted to add some “meat” to the upper part of the roof, because there will be a landscape with greenery. Therefore, I created a random corrugated upper surface and extruded it downwards and cut it to end at the top of the columns.


Schematic final code: (full version is in the files below)

The final outcome:
27 28 29 30 31

The final visualisation:


In this project i used PUFFERFISH plug-in 
Thank you!
The Pufferfish is one of few animals which is capable of changing its shape. This plugin focuses on Tweens, Blends, Morphs, Averages & Interpolations.


Green roof – grasshopper files