The Snowflake Machine

The Snowflake Machine uses random numbers, mathematical algorithms, computer code, and SCIENCE to create well over a billion unique and beautiful snowflakes. It’s a customizable design available for free on Thingiverse, and people around the world have already used it to generate almost four thousand unique snowflake models!

After going to the Thingiverse link, press “Open in Customizer” to get started. You’ll be able to choose a random seed value and then set various style parameters to control the branchy-ness, organic-ness, fuzziness, and length of your custom snowflake:

What can I make with the Snowflake Machine?

You can make snowflakes! Specifically, you can:

  • Quickly generate 3D-printable snowflakes using a random number seed
  • Use sliders to control the style and look of your snowflake in ten different ways
  • Create snowflake ornaments by selecting a hanging loop feature
  • Create giant snowflakes with lots of detailed design steps
  • Create micro-flakes, if you have an ultra-fine nozzle! (More on that soon…)

There are also demo snowflakes available to download as an STL files in the Downloads section, but it’s more fun to make your own!

How to Operate the Snowflake Machine

Here’s what to do:

  • Go to The Snowflake Machine in Thingiverse
  • Press “Open in Customizer”
  • Choose seed and style settings
  • Click “Create Thing”
  • Wait 2-3 minutes for the magic of creation to take place
  • Go to your list of Things and reload it until your new snowflake appears
  • Download, 3D print, enjoy, take a picture, post a Make
  • At this point there will still be over a billion more snowflakes to make, so keep going

How does the Snowflake Machine work?

The Snowflake Machine generates snowflakes with an algorithm that approximates the way that some kinds of snowflakes grow in real life.

Stellar plane crystal snowflakes start from a hexagonal prism seed and then grow outward with branches and plates whose size and positions are determined by the temperature and humidity of the atmosphere.

To mimic this process, the OpenSCAD code behind the Snowflake Machine generates sequences of random numbers based on a random seed that you select, and then grows a snowflake design by adding branches or plates in each step. The random number sequences and the style parameters whose values you select with the Customizer sliders act like the temperature and humidity of the air around the snowflake, making it more or less likely that different formations will be generated.

Tips and Tricks for Snowflake Design

Here is some advice for getting the most out of the Snowflake Machine:

  • Once you set a seed, you can change style sliders to alter the look and feel of the snowflake. Or you can change the seed again to generate more random snowflakes whose formation patterns are governed by your style slider settings.
  • If you like a particular seed, then write it down so you can come back to it later! Once you change the seed value your old seed will be lost forever, like a melted snowflake.
  • Mathematically perfect snowflakes (with “organic” set to zero) generate more quickly and also print faster. But snowflakes with a random/natural look (with larger “organic” parameter values) look more realistic and stylized.
  • Snowflakes with six steps and medium style settings will be approximately the size of the orange preview circle. You can go up to 11 steps, but the snowflakes usually look best when they have between 4 and 7 steps.
  • The best way to change the target size of your snowflake is to set the “target_diameter” parameter to your desired size. This will change the size of the orange target circle, and adjust lengths and widths accordingly in the algorithm.

It’s worth keeping in mind that sometimes things look good on the screen but don’t come out exactly how you expect when they are actually printed. If you keep track of your seed values, then you can iterate your design and make it better. Below is a photo that illustrates such an iteration, with the initial design on the left and the updated design on the right. Based on the outcome of the initial design, I turned down the “organic” and “fat” parameters and increased the “fuzzy” and “sharp” values to get a cleaner and more detailed design.

It’s a little bit difficult to see snowflake details in the small Customizer window within Thingiverse. If you’d rather work with a larger, faster preview then you can download a free copy of OpenSCAD, get the snowflakerator.scad file from the Downloads section of this Thing, and then generate random snowflakes directly in OpenSCAD. To do this, you modify the parameters in the editor on the left-hand side, and then press “F5” to see the result. It looks like this:

Don’t have a 3D printer, or want something fancy?

Custom snowflake designs made with the Snowflake Machine are now available in the Snowflake Collection at the geekhaus Shapeways store, like this set of six organic ornaments:

You can also order tiny frosty snowflake earrings:

But remember, you can just go to the Thingiverse link and design and 3D print your own custom snowflakes for free :)


Go to The Snowflake Machine on Thingiverse and press “Open in Customizer” to generate your own custom 3d-printable snowflakes for free! Or check out our Snowflake Collection on Shapeways if you want to order some pre-made designs. Happy Holidays!



As an Amazon Associate we earn from qualifying purchases, so if you’ve got something you need to pick up anyway, going to Amazon through this link will help us keep Hacktastic running. Thanks! :)

Knots in OpenSCAD with Sweeper

This week we created a special collection of 3D knot models based on some old projects we did with students a few years ago. To recreate these knots we used our old data to recode each of the models in a consistent way in OpenSCAD. This year’s version of the knots are scaled and sized to form a matching set suitable for printing on SLS printers like the ones at Shapeways. This means that we can have fancy, colorful Nylon Plastic versions of all our favorite knots, and even print a few in Steel.

We’ll post pictures when the models return from Shapeways in a week or two, but for now here are a couple of nice renders, of a Hyperbolid Stick Knot and a Lissajous Three-Twist Knot:


OpenSCAD “Sweeper”

Knots are basically just closed curves in space, and the easiest way to create a closed curve in OpenSCAD is to “connect the dots” — that is, to create a list of points in space, place a small sphere at each of those points, and then connect each sphere to the next. If you only have a few datapoints then this method is perfectly acceptable. In the example below there are just eight points that need to be connected, so this method isn’t so bad.

This “connect-the-dots” method is simple, but with more points, as you would have if you were sampling close-together points to connect and make a curvy path in space, this way of generating a curve in space is really, really, really slow. Each pair of connected spheres costs a convex hull calculation, which is a very computationally expensive operation.

Luckily, there is a smarter way. The “sweeper” code library in OpenSCAD takes a sequence of datapoints on a curve and constructs one huge polyhedron from that data. At each point the sweeper code places a cross-sectional shape like a polygonal circle or a square, oriented in the direction of the curve. Then it connects successive cross-sections with faces, and puts the whole thing together with OpenSCAD’s polyhedron command. The code is a lot harder to follow than the method above, but for the most part you can ignore it and just put in your datapoints. Here’s what it looks like in action:

In the code above, notice that we define a function “f(t)” that parametrically describes the knot in space; the sweeper code samples points on this curve to get the data it needs to build the curvy polyhedron. You can get a copy of an OpenSCAD document with the required libraries (scad-utils and list-comprehension) for sweeper from the shared code files included with our Hello OpenSCAD primer.

The Special Knot Collection

The ten knots we decided to make for the new Special Knot Collection are the knots 3_1, 4_1, 5_1, 5_2, 6_2, 8_19, 10_161, and L6a4, as listed in the Rolfsen Knot Table. These knots are listed below, together with links to those knots on Shapeways, and links to blog posts that contain more information about each knot and why it is significant.

If you want to learn about mathematical knot theory, two great introductory books are The Knot Book by Colin Adams and An Interactive Introduction to Knot Theory by Inga Johnson and Allison K. Henrich. If there’s a special knot you’d like to see us add to our collection, please let us know!



As an Amazon Associate we earn from qualifying purchases, so if you’ve got something you need to pick up anyway, going to Amazon through this link will help us keep Hacktastic running. Thanks! :)