Coffee table FINAL Tutorial (using Weaverbird)- Kameliya


Categories: Tutorials


After varying ideas on different kinds of furniture, I decided to go with a coffee table, which consists of mainly smooth ‘organic’ shapes fully coded in Grasshopper without any input from Rhino (like curves etc.). I have used 2 plug-ins: one is Weaverbird (download: and the other is called Tree8 (download: I also followed a tutorial on YouTube (, with which I made the legs of the table. The tabletop I made on my own using Voronoi (which everyone does, so avoid doing that!).

This is my version of the tutorial above, cleaned up and improved in light of the problems I had, which I am explaining further down below.

How to make the legs of the table:

1. I constructed a surface from a square with the size of the outline of the table legs.

2. Offsetting this surface as many times as you want the legs to be high. (Parameter structure height does that put through ‘Count’ of the component Series)

3. We have to scale the square surfaces in order for them to be narrower at the bottom. This is done with the component Scale, taking into account the height and putting in a coefficient of narrowing.

4. In the end, we rotate all that, so we end up with twisted shapes.

1 1-1

5. After the first steps, I am making Surface Boxes out of the square surfaces.

6. Then I am applying an ‘example’ shape in which these surface boxes will be Morphed.



7. Then, I am using the Weaverbird Plug-in (a topological mesh editor) to join all the surfaces we made before. “The component wbFrame computes a new mesh with higher naked edge count, where each face has a new hole in the centre and resembles a picture frame. The resulting mesh always consists of quad faces.” Thus, these quad faces will serve us as the ‘joints’ every table leg.

8. Then I am putting the frame trough wbNaked in order to form a naked boundary.

9. I am then extracting the 4 quad faces using Data Allocation B (from Tree8) and List Item component. It is important to note what is the index of the quads you need in order to Merge the right pieces later on.

10. Afterwards, I am Lofting and putting a mesh over the quads.


3-1 3-2


9. I am again using wbFrame to add a mesh. After that I am putting it through wbCatmullClark, which “calculates the type of mesh-based recursive subdivision described by Edwin Catmull and Jim Clark, at first in 1978. The resulting mesh always consists of quadrilaterals.”

10. The final step is to duplicate the result using the component move and a base vector.


4-1 4-2


To make the tabletop:

1. First, we are offsetting the existing plane with the height of the legs of the table.

2. Then we are constructing a rectangle and making a surface out of it.

3. In this rectangle, we put random points using Populate2D and applying a Voronoi to this rectangle.


5-1 5-2


4. Then I am deconstructing this surface with Deconstruct Brep and I am creating holes in the rectangle using Nurbs component.

5. With Surface Split, I am ‘deleting’ the holes out of the surface, so the volume there is empty.


5-3 5-4


6. To make it 3D we are using simply the Extrude component with the right coefficient and putting a mesh over it.




7. Finally, I am making a simple rectangle surface for the glass top.




Here is the final rendered version of this table:

104594625_2915988078527638_6154656906802595107_n 104774022_1187553004910734_4905150960261642743_n 104936970_2692387974377694_2603281213073030615_n




Rendered rhino file: Coffeetable _ Kameliya – fin

Rendered rhino file: Baked – fin – coffeetable