i(s)osurface tutorial in grasshopper

I[s]osurface, as a surface represents points of a constant value, helps us to visualize the intensive properties to extensive space. the concept we introduce to our design to fulfill the obsession of fluid and the aesthetic of dynamic world...

You need: rhino grasshopper millipede weaverbird(optional) & karamba.
需要的pluging: millipede weaverbird(optional) & karamba.

You will learn these via this tutorial:
1. basic idea of isosurface n marching cube. (skip if you already know)
2. how to setup millipede grasshopper for creating isosurface
3. use karamba to analyze the structure from the isosurface
(hmm, yes, millipede also has it own structure analyzing system but dk how it works, anyway...)

1.isosurface和marching cube基本概念

1st part - basic background knowledge


some textbook explanation.    https://en.wikipedia.org/wiki/Marching_cubes

The easiest way to understand is starting from 2-D isoline, which we use on the map to represent the same altitude in 2-D draft.


image from http://regentsprep.org

In this field map each point has its own altitude. And isolines connect all of the points on that map that have the same value. (ex, isoline which has altitude 70 go trough the middle 69 & 71)
3-D isosurface has the similar concept using a grid of points in 3D space representing velocity, pressure, temperature, or density in the space. And Isosurface connect the same values according the threshold(isovalue), to simulate and represent the fluid fluid flow (gas or liquid) for scientific study. 
(because we know nature has the tendency to balance difference temperature density).

和二維等高線的概念雷同(在一張地圖中有許多測高點)而等高線則是穿過相同高度的曲線,三維的isosurface則是在三維的點陣中(這些點就像側高點依樣有自己的值,可以是密度,溫度,速度),求得等值曲面, 進而具現化不可見的值以利研究(特別常用在流體力學)。

So, we can build this grid system from zero in native grasshopper, but in this tutorial we will use these components in millipede to help us to simplify the process. (Geometry wrapper & isosurface)
Baciscally the geometry wrapper creates grids of values that can be used in conjunction with the isosurface component that wrap around groups of any type of geometry (points curves surface).

我們可以用原生的grasshopper建立這個系統這裡我們利用millipede來讓日子輕鬆一些。基本上geometry wrapper透過解析度建立三維格點並藉由power跟spread給予力量與衰減,進而輸出相對應的值給isosurface.(所以如果resolution是2的話我們會得到8個值2*2*2 

First we create a box which representing the grid space (also can be scaled), usually we use uni bounding box from geometry(can be group a random points). and inside this component it creates the grid of points according to the resolution and corresponding values. For instance, if the resolution setup to 2, we will get 8 values from output (2*2*2 grid), 4 then 64, and so on and so far. Also each values affected by power and spread. This value goes into the second component isosurface, extract the isosurface from the values controlled by threshold .

here are the explanation of each parameters from offical manual(page 31)

Example 1. couple points to create metaballs
這裡我們用幾個點來做metaball,當他們靠近時因為marching cube演算法產生漸進曲面 不同於直接布林.

we can see the relationship between voronoi.

okay, enough basic knowledge.
coffee break.

1.make a nice coffee and prepare some tracing paper
2.draw a perfect kickass curve as you're a starchitect

2nd Part - modeling tool

Base on the concept from previous chapter, here we will try to use a set of curves to create isosurface in between, hence to have something like modeling tool to have more control of this playful geometry. (control points, number of subdivision)


so import the kickass curve you just draw in rhino and.. (this curve should be 3d.)

with two curves

also you can mirror them twice creating more symmetry geometry

some test render

and play with spread value to have more detail (here I use two twisted circle for isosurface)

3rd Part - Karamba integration

The output from millipede is a mesh, which we can anlaye it as a single shell in Karamba as feed back adjust parameter with millipede in order to get minimal deformation ( or other fitness vaules, finding the best support positions, optimize crossection..etc.).  

這裡我們用karamba來分析millipede的輸出mesh單殼結構, 藉由調整spread, power, isovalue或控制曲線等參數改變形體來取得較低的變形量或其他fitness值(或取得較佳的支撐點或求斷面等等應用)。

more applications can see from


until next time


3 意見:

  1. Hi, unfortunately it doesn't work... I did the same grasshopper sketch without any results.. Arggg

  2. 我做出的ISOsurface都是一个个包裹在线周围的管状的物体,做不出你示例的ISOsurface那种看起来像几条线之间挤出来的形状,是啥原因。 还有bounding box 输入端为啥是线的分割点。