3D Scan to SVG to Plotter (by way of Blender)

FreestyleScratchboard

I recently learned that Blender has built-in SVG output capabilities using the Freestyle line rendering tool, which is awesome since I can now combine my love of 3D with my awesome AxiDraw plotter. In the course of playing with different models and the myriad options in the Blender Freestyle panel, I found some cool settings that create a very abstract, exaggerated style that looks great plotted. In the example above, I used the output from this technique to scratch the image into a scratchboard using a swiveling craft blade. It looks super cool both on-screen and on-board.

Here are the very simple steps to recreate this technique. Note I’m using Blender 2.78b with the built-in “Render: Freestyle SVG Exporter” add-on enabled.

Step 1

Start with a model. Here I’m using a scan of my head I’ve had laying around for a few years. This came from my Occipital Structure Sensor. Really, you can use any model for this, as each will result in interesting output.

001

Step 2

Enable “Freestyle” in Blender’s Render panel.

B002

Expand the “Freestyle Line Set” in the Render Layers tab, then create a new line set by clicking the little “+” icon next to the empty.

B002b

If you render now, you’ll see an outline around your model, as well as a few internal lines.

002

Step 3

You’ll need to change the color of the stroke to be able to see it after the next step. So in the Freestyle Line Set you created, expand the “Freestyle Line Style” group, then select “Color” and set the color from black to something not black. Here, I’ve chosen a light-blue color.

B003a

003

Step 4

We really just want to render the lines, not the model itself, so expand the “Layer” group in the same panel, and turn OFF “Use Environment”, “Use AO”, “Use Surfaces”, and “Use Hair”. Render and you’ll see a black background with your colored lines. (I couldn’t find a way to get a non-black background, thus the changing the color. If there’s a way to get a white background or something, I’d love to hear it)

B004a

004

Step 5

As it stands, the rendering may not look all that thrilling; it’s still cool, and there’s a lot you can do as-is, but it’s not what we’re going for. So let’s make the model a bit more interesting. We’re going to a “Remesh” modifer to our model, setting the Mode to “Blocks” and the Octree Depth to “8”.

B005a

The model now looks like millions of tiny cubes.

B005b

Rendering now already takes things up a notch.

005

Step 6

We now need to add a few modifiers to the lines. These are done in the Freestyle Line Style “Geometry” tab. We’re going to add “Guidelines” and “Backbone Stretch” via the Add Modifier dropdown.

B006a

And the render is taking shape!

006

Step 7

From here it’s a matter of tweaking some numbers, though the exact values are up to your aesthetic preferences. I picked “20” for Guidelines, and “50” for Backbone Stretch.

B007a

007

Step 8

This looks good, but a little heavy to me. So let’s change the line thickness to be thinner. In the Freestyle Line Style “Thickness” tab, set the Base Thickness to “1”.

B008a

Much better!

008

Step 9

The last thing to do is save the SVG. This is as easy as checking a checkbox, but also a little more convoluted than it needs to be, as you’ll see.

First, the checkbox to check is in the Render panel way at the bottom. Again, you’ll need to enable the Freestyle SVG Export add-on to see this.

B009a

Easy! Now, however, you’ll want the exported SVG file to go somewhere you can actually get to it! By default the exporter uses Blender’s temporary file path, which is normally a temp folder deep in the bowels of your computer. Let’s change that to something more accessible.

Scrolling up in the Render panel, find the “Output” section, and note that there is a folder in the textfield, something like “/tmp”. Click the little folder icon to the right and select a folder you’d like to save your SVG to.

B009b

That’s it! Next time you render your image, you’ll have a SVG file in the path you specified. Note that it takes the name of the frame you are working on, so most likely “0001.svg” if you are working on a single frame.

009

Important Final Step

From here I take the SVG into Inkscape, ungroup all of the lines until they are individual lines. With all the lines still selected (they should be selected after ungrouping), choose the “Simplify” menu option from the “Path” menu.

While all the lines look like single lines between two end points, they are made up of many, MANY individual points along the line. Doing the Simplify pass will reduce those down to two points and make your plotting go much smoother.

There is a way to do a simplification pass inside Blender, but I found that it merges lines in a way that I don’t care for.

From here

You can, of course, use any model you want, and play with values as you desire. There are quite a few Freestyle Line Style geometry modifiers including adding noise to the lines, warping with Perlin noise, or turning the lines into Bezier curves. Play around and have fun!

2 thoughts on “3D Scan to SVG to Plotter (by way of Blender)

  1. Pingback: Basic Blender to SVG Tutorial | my plastic future

Your thoughts?

This site uses Akismet to reduce spam. Learn how your comment data is processed.