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!

Future Relics

Here’s a thing I made while on vacation. While not intentional, the final appearance reminds me of something one would find in a cabinet in the basement of an old English church; a relic of a long-forgotten time, when people needed physical reminders of Saint Anatole’s 100 days of meandering through the desert before succumbing to the sand worms.

It is a piece of maple wood, a thin aluminum inlay, clear acrylic rods, and two custom circuit boards with an ATTiny85, some surface-mount LEDs, and a tiny reset switch (under a wooden button) all powered by a 2032 coin cell battery. All the wood and circuit boards were milled on my Othermill, with the circuits made in Eagle. The inlay and various SVG shapes for the cutouts were made in iDraw.

relic_ - 1relic_ - 2relic_ - 8

Is it jewelry if there are no jewels?

Brooch front

I’ve said before that the aesthetics of the Form 1 make me want to 3D print artistic things, not mundane things. Over the past 6-7 months, as I’ve messed around with smaller, more refined 3D objects, I’ve inadvertently strayed into an area that I have had no previous experience with: jewelry.

Continue reading

Unlocking the future. And gumball machines.

gumballOne way to keep morale up in a high-pressure, high-stress work environment is through candy. Lots and lots of candy. One of the guys at the office brought in several gumball machines he has and filled them with delicious sweets, mostly different flavors of M&Ms. Unfortunately while trying to unlock one of them he pulled the key out without it being aligned properly, thus making it impossible to get the key back in the keyhole. Co-workers tried all sorts of ways to get it working, but no luck. Finally one guy remembered I had 3D printers and asked if I could help and, well, I’m always up for a challenge.

Continue reading

Tiny chairs with the B9 Creator

[ UPDATE 02/23 – Added new gallery of macro shots at end ]

The last couple of years was both crazy and cool–getting to be part of the process from initial ideation to final release of a major consumer electronics device was quite the experience. Over the past six months, while I had time to make things, I didn’t have the brain power to write much. Since I’ve recently moved to a different product division, back in the ideation phase, my “little gray cells” have had time to catch their breath and also given me time to start writing again.

The first thing to get out is something I meant to do a long time ago: talk about 3D printing tiny chairs with the B9 Creator 3D printer.

B9 Creator Tiny Chairs

Continue reading

Printing the unprintable

candle_holder_3In the world of 3D printing, you’ll sometimes end up with models that — for one reason or another — just don’t want to be printed.

These models can come from anywhere: bad scans from Kinect or other DIY scanning solutions, objects made in 3D software that weren’t combined into a solid, or from code that creates 3D objects that were never intended to be made physical. This is a quick walk-through of how I was able to print one of these unprintable objects using a new, (currently) free app.

Continue reading