Parametric modelling in Blender using Sverchok

Development

It’s been a while since I came something noteworthy to write about; however… Today is that day! I will start with a brief explanation of parametric modelling and then I’ll show you how to use Sverchok to create this random wireframe model based on a few simple nodes.

What is parametric modelling?

As the name suggests it’s modelling based on parameters. Most of the 3D software suits rely on the user supplying the “parameters” by dragging around boxes and spheres on a 3D stage. However, using a few clever tricks, you can let the computer build 3D models based on mathematical formulas or combinations of matrix transformations.

Grasshopper is an example of a popular parametric modelling tool that can be used in combination with the Rhinoceros software suite. This tool is quite expensive, which is why I’m happy someone finally took time to create an open-source addon for Blender with similar capabilities!

The tool is called Sverchok and a quick search on Youtube already shows the amazing stuff one can do with this extension!

During a quick test I created this weird-looking but interesting model:

Sverchok result render

From a rather simple set of nodes this complex model can be created

This rather abstract model can be recreated by linking together the following set of nodes in the Node editor view. Below I will try to explain what each node does.

You can get the .blend file for this setup right here

So from left to right, this is what each node in the chain does:

Sphere

The sphere node is our starting point, it generates the vertexes, edges and polygons to create a sphere with the specified radius, horizontal and vertical resolution.

Vector Noise

The vector noise node takes our vertices, and basically scrambles them, completely destroying the spherical layout of the vertices. You can pick different kinds of noise types that can be used to align the vertex set with.

Scale

The scale node will take the scrambled vertices and scale them by a particular amount. You can also choose to define a different center point to scale the vertices around. In this case I just used the scale node to eyeball the right size for my final render.

Wireframe

This is where it get’s interesting. The wireframe node creates a wireframe from the vertex layout just as the wireframe modifier in Blender would do. You can set things like offset and thickness to give the final model a desired look.

Bmesh Viewer

This is the most important node, since it makes sure that whatever you are generating actually makes it on the blender stage. In this node you can pass all your generated vertices, edges, faces, and optional a transformation. Next, give it a name and it will appear on blender stage and will be renderable just as any other object!
And here comes the best part: this object will update live if any of the parameters in this node layout change!

As you might have noticed, the “Radius”  field on the sphere node has a green background, which means it has been animated. I have indeed been playing around with creating an animated parametric model. I find the result quite intriguing to look at:

Although this is a really (really) simple example of what Sverchok is capable of, I hope it inspires to try it out yourself. I think parametric modelling becomes really interesting if you start taking the parameters from other sources, say audio tracks to create models that respond to music or open data sets to easily create 3 dimensional data visualisations.