Google Earth presents an intuitive, dynamic platform for understanding spatial context. Combined with a parametric modeler like Grasshopper, Google Earth presents complex datasets relative to geo-positioning in a way that is understandable. Facilitated by GH plugin gHowl, GH meshes and lines can be exported in Google Earth’s .kml format to be viewed by Google Earth or an enabled web browser.

Creating legible geometry for Google Earth is challenging, but one type of geometry I’ve experimented with is GH’s metaballs, which are about as old school as it gets for 3D curvature. Metaballs, as described by Yoda (Greg Lynn), are “defined as a single surface whose contours result from the intersection and assemblage of the multiple internal fields that define it.” (Lynn, Blobs, Journal of Philosophy and the Visual Arts 1995). This aggregation of internal fields can provide an intuitive understanding of various contextual forces relative to the spatial context of a site. While GH metaballs are only curves and not meshes / surfaces you can easily use a delaunay mesh to begin to create a mesh.

This tutorial will walk through the process of creating metaballs from Geo coordinates. I’m using a map I created with Elk that is based off of Open Street Maps info, if you’re interested in doing something similar look here.

Just click on the images below if you’d like to see them in more detail.

Start by positioning your Geo coordinates in GH space through gHowl’s Geo To XYZ module.


Use the output of the Geo to XYZ module as the point input for GH’s Metaball(t) module. There are several options for creating metaballs, I’ve had the best luck with the (t) one. The next step is to set up a series of section planes for the Metaball(t), the number of planes will define the resolution of the metaball. Instead of creating planes, it’s a little bit more familiar / easier to create a series of points in the Z direction. The last input you need is the threshold value, which is a number you want as low as absolutely possible. The trick to this is that you probably still want the flexibility of a slider, but on a city scale metaball you need a number smaller than .001 which is the minimum value a slider allows. The trick here is to multiply two sliders with small values together and use that value to drive the threshold value, you can even use a third or fourth slider if you are using a bigger scale.


Once you’ve created the metaballs, you can use the gHowl KML Out module to create a .kml. Use a path module to set a file path, have the Metaball(t) output feed the G input of the KML Out. Use the KML Style module to set the curve color and use 2 similar GEO and XYZ points that you used in the Geo to XYZ module to Geo reference the output. I’ve had the best luck with setting the Altitude Mode to Absolute, but I’ve really only done this at sea level at this point.


This will create a .kml file that will show your metaball data in Google Earth.


  • Pingback: Visualizing Social Data using Grasshopper and Google Earth | ClaviOn Unlimited - Fine Art by Chris Clavio()

  • Jeanette Pritchard

    How are you getting the panel with the list in your first image for input P Geo>XYZ?
    Also how are you determining the path in you other image and I can’t locate “XYZ” point is this a point are what is the input data. Thanks Jeanette

    • alexwebb4

      Hey Jeanette-

      Sorry, that’s a little confusing. Those points in that panel are just random test points to show how the script works. The path is being determined by the “File Path” module and the XYZ point is the “Construct Point” module.

      Good Luck!