While developing the scripts that I have used to create the different elements of the pavilion, I have sometimes found myself in need of one or two general functions, not found among those included in rhino. Somehow, these functions seemed to have a tendency to find their way into many of the scripts I’ve written and published on this page. So, in time for Christmas, I’ve collected these functions in a single file, so they are easy to find and use when needed.

// download tooling library: alltools.rvb



This week I finally got some time with the laser cutter, so I could try out an idea I have for a presentation model. It consists of a series of sections, each one intersecting all the different layers of landscape. By stacking these sections after each other, you get a pretty good image of both the exterior and interior of the pavilion. This model is half the size (1:200) of the final intended version, which will be made of 5 mm perspex. A thicker material will make the model will much less transparent, something this model suffers from a lot (the card is 1 mm). The final version will not be glued together either, so that each section can be viewed on its own and pieces taken away, enabling a closer look of the caves within.

A much earlier model from when the concept of the hill was born.



Three images to show how the different spaces are made up of three layers of terrain, stacked on top each other. These layers divide the pavilion into three distinct qualities. The open hillside on the top layer, the vast interior landscape between the top and middle layers, and the intimate caves between the middle and bottom layers.

Here you can also see the vertical sides of the building. Formed by slicing the terrain at the edges of the given site of 60 x 50 meters they give the impression that the pavilion is cut out from the ground and placed at the site in Shanghai. Like a small piece of Swedish cake.


The Other Pavilion

Apparently, the official Swedish pavilion for the world expo in Shanghai 2010 has now been presented. Interestingly, Sweco’s proposal also seems to concentrate on the forest.

// link to official website: www.expo2010.se/new_expo/?page_id=7


Structural Elements

There are two different constructive elements in the pavilion. The walls, roof and floor are all built up by the same structural element, two layers of plywood with a foam core. As one never sees both layers, the distance between them can vary according to need, forming thicker elements and beams when necessary. The second structural element is the tree, which functions as columns, helping to span the greater lengths in the forest.

Each sandwich element consists of the same parts, but the properties of their materials vary according to need. All elements are pre-constructed in specialised and highly automated factories in Sweden, and shipped to China in the empty containers left over from our vast import of Chinese products. These elements are then assembled on site, glued together and secured with connective joints.

The vertical structural element in the interior forest is of course the tree. They help in spanning the 50 meters width between the two outer walls. The tree comes in two different species, both triangular, but one enclosed, perimetric and one open, centric. The trees are derived from a parametrical script in which structural loads and position controls the type of tree and its attributes.


A New Foliage

As I wasn’t satisfied with the simple square-based foliage I created a while ago I wrote a new script yesterday, based on my previous work with triangles. Instead of creating flat squares at the intersection points, it creates a set of two triangles, each one rotated along their shared axis, according to the distance to the nearest attractor point. This creates layers of varying transparency, allowing light to partly pass through the foliage and create a pattern on the ground. Each set of triangles is connected to the wires with a two-parted joint that also keeps the triangles at the right angle.

Pseudo code:

Create a point grid
Input attractors (trees)
Input end surface, and foliage surfaces
Project points to start surface/mesh
For each point
- project to end surface, create end point
- create wire in-between points
- scale according to distance to attractors
For each wire
- intersect with foliage surface
- create two triangles from four points, derived from grid size
rotate each triangle around same axis, rotation angle according to distance from attractors

// download script: create-foliage-triangles.rvb


Natural Abstraction #3

Natural Abstraction #3

As the forest needs its foliage to create it’s layered and semi-transparent atmosphere, the caves need an element of it’s own to enhance the experience of being underground. The stalactite is a powerful symbol of the cave, a direct result of the conditions in limestone caves, slowly developing over time. These abstract stalactites are based on the triangular mesh, which is subdivided into smaller triangles and then extruded down to a point. The height of this pyramid depends on the distance to a set of specified attractor points.

Pseudo Code:

Input mesh
Set max generations, height and threshold
Input attractors
- outline each mesh face
- get vertices for outline
- find mid vertices
- create 4 new triangles from vertices
- start recursion until max generations
For each subdivided triangle:
- find midpoint
- find distance to attractor and derive z-value
- derive end point
- create 3 surfaces from 2 corners and end point
- join surfaces

// download script: create-stalactite.rvb


Natural Abstraction #2

The next instalment in the series of recreations of natural elements is an abstracted tree stump or a small stone. These kinds of elements add another layer of detail to the forest, creating a variation of the ground and offering natural places to sit down. The addition of a patch of high grass also helps to emulate the right atmosphere without being to articulate. The grass is made of a soft plastic straws, folding away easily while moving through them.

Pseudo code (stump):

Input start mesh and start points
For each point:
- outline mesh face
- copy outline and elevate
- tilt elevated line
- create vertices from lines
- create top vertice
- create stump from vertices with delaunay function

// download script: create-stump.rvb
(requires point set reconstruction tools)

Pseudo code (grass):

Input start mesh and start points
Input spread, height and density parameters
For each point:
- create points according to density
- move and rotate points according to spread
- project points to mesh
- find end points according to height
- create straws
- pipe straws

// download script: greate-grass.rvb

This image and the last one are very quick renders, hopefully I get back my own laptop on Monday so I’ll be able to create images that show the ambience I’m looking for.


Natural Abstraction

This is a first effort of translating a natural environment into abstract geometry. I would like to recreate the atmosphere of a forest without resorting to the natural forms of leaves, branches and tree trunks. Instead, the script creates a set of planar surfaces attached to hanging wire, a simple representation of the foliage above our heads in a forest.

Pseudo code:

Create a point grid
Input attractors (trees)
Input end surface, and foliage surfaces
Project points to start surface/mesh
For each point
- project to end surface, create end point
- create wire in-between points
- scale according to distance to attractors
For each wire
- intersect with foliage surface
- if not too close to attractor: create surface according to grid size

// download script: create-foliage.rvb


Midterm Presentation

Yesterday, many of the students planning to present their thesis in February had a small presentation for each other. Very interesting to see what the people around you actually are doing. For me it felt good to present what I have done so far, and I got good feedback on what to concentrate on the next half of the project. I’m going to see a professor in construction next week for some help with my panelling problems, but after that I won’t have the ambition to completely solve the structure into every detail but rather at a proof of concept level. Instead I will dig deeper into how natural environments and especially forests can be recreated abstractly. As the building and the exhibition is the same thing, it’s crucial for the project to create the right atmosphere inside and around the pavilion.

During the next weeks I will then analyse natural environments, hoping to find the essential elements needed to recreate their special ambiences. The next step is finding the proper way of abstracting these elements and to incorporate them into the pavilion. I’m also interested to investigate the field of code and nature, learning about the underlying algorithms which control biological growth. Hopefully this will get me some leads into how to program a representation of nature.

// Anyway here’s my midterm presentation: BFX-midway.pdf


Trees Again

A problem left after faceting the pavilion was the situation with the trees. The smooth and round tree didn’t fit in among the crystalline surfaces. A new solution was needed.

The new tree comes in two different species, both triangular, but one enclosed, perimetric and one open, centric. The hollow trees can function as light shafts for the caves below or conceal installations, while the open ones are weight-bearing only. However, with their open corners they take up less space and provides a bit of shelter. Each species can also vary in proportions, such as waist triangle scale and location along the tree axis and base triangle scale.

The trees are derived from a simple script which needs some polishing, but feel free to look at the current version.

// download script: new-trees.rvb


Outline Mesh Face

A quite useful script which outlines the mesh face closest to a point. I wrote this as a first step to create a script for generating new, more abstract, trees. That script and images will come soon.

Pseudo code:

input mesh and start points
find index of faces closest to start points
find vertex points for each face of mesh, store in face index array
add line around points of same index as selected faces

// download script: oulinemeshface.rvb

// update:

I modified the script so that there’s a choice to either outline faces closest to a point or all faces. There’s also now a choice to add a polyline or a curve through the face points.

// download updated script: outlinemeshface2.rvb



Almost half-way there. This is where I am now.


Exit Strategy

I have recently thought a bit about how visitors will exit the pavilion. The main exit from the large interior forest is located at the back of the pavilion so that the main direction of movement will be straight through the interior. Also there won’t be any doors, the passage between inside and outside is rather a combination of layers which filter out the exterior light and results in a smooth transition from the darkness within the forest to the brightness outside. These layers grow in size as you pass through them so that the exit becomes more labyrinthine the closer to the other end you get.



Just to let you know what I'm doing at the moment.

Surface Push

This is a small script I used to create the bumps in the surfaces which were the first step in shaping the passages between the different layers. Here’s what it does:

pseudo code:

input surface
input start points and direction vector
input threshold level
for each grip on surface:
- check mean distance to start points
- scale vector according to distance in relation to threshold
- add vector to grip
update surface

// download script: surface-push.rvb


4 Seasons

This is something I thought about while working with the different layers of the pavilion and the connections between them. I have previously only really thought about the interior forest in terms of appearance and detailing. A new outset is to think about the different layers in terms of seasons.

The forest is then autumn, dusky and foggy. The upper landscape is, as it’s outside, during summer, an undulating summer meadow, with spots of long grass to hide in. The inner caves below the forest will be frosty winter, gleaming of ice and snow, while the outer caves are the first days of spring, coming back to life as you exit the pavilion, into the bright summer again.


Forest Mythology

Folklore and ritual connect man to his landscape, dancing through the liminal zone between the everyday and the spiritual. Kiedler is a forest wilderness devoid of the history of mythology coursing through the ancient boreal zones. It is a prosthetic landscape - a graft - where the connection to the mythological and ceremonial practices of native man has never been established. Mythology can be thought of as a way of expressing intangible truths, and forest mythology has its roots in a primal response to the immersive environment of the forest. This is not a wilderness of bracing physical exposure like the mountain, but instead a dark internal wilderness of quiet psychological exposure.

Kate Davies and Emmanuel Vercruysse, Prosthetic Mythologies, AD 2008/4


Turns out that the pavilion will take on a crystalline shape. After trying to solve the problem with the passages between the different layers, I decided to divide the surfaces into facets. This makes it a lot easier to manipulate the layers as they are made up of many flat surfaces which all can be manipulated individually, folding to make connections, adding and deleting surfaces as it’s needed. Openings are created automatically while folding and bending the layer instead of having to be cut out of a smooth surface. However, there are new problems that arise because of this new method. The trees, for instance, are a bit more complicated in their constitution and their connections with the ground and roof. But that will be solved in time. I hope.

To make the transformation from smooth to faceted surfaces a bit easier I wrote a small and simple script that creates points from a surface and then apply a delaunay method to the points. This script requires the point set reconstruction tool plugin that can be downloaded from mcNeels rhino labs.

//download delaunay script: delaunay.rvb


Work in progress

A quick update on the hill. This is a rough 3d-model I made with the help of my landscaping scripts. Now I need to focus on the openings and passages between the different layers. I have an idea of what these might be like, more on that soon.


The Hill

New ideas. After struggling to get the outer envelope of the pavilion right I came up with a new idea. Instead of letting the building be a “blob”, which you enter from the side, I decided to do it as terrain all the way. Now the entire pavilion is a sloped hilly landscape, on top of which the queue area is located and from which you descend into the interior forest. I think this is a better solution which integrates the pavilion into its surroundings in a much more interesting way, with the entire building rising up from the ground. This also means that I need to work out a couple of new scripts, especially one creating the folds which connect the upper landscape with the interior.

Some sketches:


Landscaping 2.0

A few updates to the landscaping script: The script now inputs connection curves between hills, offsets the starting curves instead of scaling them to create contours to patch and continues to create contours for larger hills until a defined area is left on the top. Finally I added an option to levelize the patched surface so it can't drop below a defined value along the z-axis.

// download landscape script: landscape2.rvb


If the trolls looked anything like the widespread image of a grotesque creature with a tail and pointed ears, clad in fur and with big noses, as painted by John Bauer for instance, it would be easy to recognise them. However, it’s not always that simple. The trolls are very clever and were able to change shape as they please. Normally them looked quite like common people, only better dressed. If you would encounter a luxurious dressed couple in the woods, you better watch out.

Much like the älvor, the trolls could kidnap and capture people in their mountain dwellings. Captured people had to work hard for their new masters, but were normally treated well. The best way to break the enchantment is to speak the name of Jesus or if the local priest would let the church bells ring loudly, as the trolls can’t stand christianity. Another crime trolls might commit is to kidnap newly born babies or exchange if for one of their own.

// Source: Älvor, troll och talande träd by Ebbe Schön
// wikipedia on troll



These are pictures of two ribbed models I made last week. Though they were rather unsuccessful due too the low rib resolution it’s a promising technique to use at a larger scale in the future. To create the sections and notches I used a combination of found scripts, follow the links to download them.

// links to ribbing scripts: un didi, legil.org



To create a pavilion that promotes tourism to Sweden, encouraging visitors to seek out the Swedish wilderness, emphasising the mysterious qualities of the untouched nature.

My intention for the exhibition in the pavilion is not to display objects or products. It’s more to provide a sensation of being in a dense and dark Swedish forest, allowing visitors to experience the influence a rich and untouched nature can have on the senses. What tricks natural phenomena can play on the mind and how and why people have believed in the mysterious creatures of Swedish folklore to explain the unknown through the ages. The exhibition will be the pavilion itself, a dark forest with caves underneath, helped by projections, sound, light and fog to transmit a full experience.

The pavilion mainly consists of two parts. The interior forest and the caves/hills underneath. Hills, roof, walls and trees are all shaped from a single self-bearing surface. This surface is closed from the outside with the exception from the entrances and exits which will be formed like rips and tears in the material. The interior forest will be very dark, with only patches of light shining through from above, enhancing the darkness. The surface is irregular and rough, providing seating and a richer and more detailed environment. The caves in the hills of the interior landscape contain the rest of the exhibition as well as auditorium, shop and a bar. These spaces will be partly lit from above, through the hollow trees, which also act like supporting pillars. The queue area takes up around 20 % of the 50 x 60 meter site and is also a hilly landscape. There might also be trees here, so that arriving visitors gradually makes it deeper and deeper into the woods until finally ending up in the forest on the inside of the pavilion.

Required Spaces:
Exhibition - the forest and caves
Bar - in half-open cave/hill, seating on top
Auditorium - in larger hill, for lectures, screenings etc.
Shop - in cave, with separate entrance and exit as well
VIP - a cave close to auditorium and bar
Queue area - with small hills, several entrances to forest
Exits - through caves

Below are some photos of some diagrammatic models I built last week:

On trees and caves

I came across the images above in my search of the essence of the Swedish forest. In order to create a forest of my own, I’ll need to know which elements that are important for capturing the special atmosphere of a dense and dark forest. One of the first things to notice are of course the trees. And how many they are. They are tightly packed standing in each others way, obscuring both the light and the view. The sheer number of trees is important to re-create the denseness and closeness I’m looking for.

Then there’s the light. Tiny rays of light breaking through the overall darkness of the forest, illuminating small patches of ground, creating contrast which makes the dark parts seem darker. Another thing is irregularity of the ground. The green and soft floor is covered with small stones and rocks and branches, partly hidden under a blanket of moss. These irregularities are vital ingredients in the atmosphere of the forest. They break down the play of shadows and light into smaller fragments, introducing more detail and interest to the otherwise smooth surfaces and might also offer seating possibilities. To re-create these elements I’ll need to manipulate the interior surface of the pavilion by adding more noise in to the mix.

Another problem which needs some looking into are the openings between the forest and the rooms underneath the hills. As I’ve seen these rooms as something not very unlike caves, I think it best to turn to real cave openings in order to find good examples to model my solution on. Unfortunately, people seem to be very fond of taking pictures of these opening from the inside and out, and not the other way around.

I’ll need to find a way to represent this passage between inside and outside, maybe something like ripped fabric, or slits cut in a blanket. Hopefully I can create a script that replicates this kind of tear in a surface.


Surface Climb

Another script for manipulating my landscape surfaces. This script lets the surface climb from one point to another one, to a specified height, creating a slope.

Pseudo code:

input surface
input start and end points, height and resolution of new surface
get points from surface at specified resolution
for points after start point
- derive climbing height in proportion to distance to end point
- add height to point
patch points to create new surface

// download climbing script: surface-climb.rvb