Making a holder for miniature figures

For the first wave of the game Etherfields, I received a fifth-player expansion. It included two additional miniature figures to play that fifth character, the Reaper. To store and transport those figures, I downloaded and 3D printed a holder that someone else designed:

The holder without the minis. I printed this in gold filament, which is what I happened to have loaded in my printer at the time.
Here’s how the holder looks with the minis in it. Since I have a series of posts on painting minis, I’ll add that I painted these with Citadel Contrast Shyish Purple.

I recently received the second wave of Etherfields content. It included lots more minis. I’ll eventually write one of my usual picture-filled posts of how I painted them.

This post focuses on a different issue: I want to safely transport some of those minis when I go to play Etherfields at my friends’ home. There are many miniature figures storage solutions out there, but they’re a bit pricey, too bulky, and hard to customize for the elaborate sculpts of Awaken Realms‘ miniatures.

I could always hope that someone will design a holder for the miniatures I want to carry and upload it to a 3D-design site like Thingiverse, as I did for the above miniatures. Instead, I decided to figure out how to design and print my own holders. In the spirit of my long posts on creating gadgets, I’m going to share how I did it.

Acknowledgement: I could not have done this without assistance from Vann (link possibly NSFW; fortunately I work from home).

Caveats

The first obvious caution is that this is definitely a “Golly, gee whiz!” post. If you’re an experienced designer or modeler, the only reason to read this post is to look at the pretty pictures and/or to laugh.

The other warning is that the tools I describe below are all Macintosh-specific. They’re not even the most commonly-used design tools on the Mac for these functions. I tried to make use of the more popular and free tools available, but I was stumped by the learning curve. I’ll mention other tools below, but all the screen shots come from the programs I used.

Therefore, I strongly suggest that you focus on the techniques, not the tools. For example, when I talk about “extruding a spline curve,” for you that probably means to look up how to extrude a planar object in your favorite 3D program, not to use Cheetah3D and select Object->Creator->Extrude from the menus.

In other words, you don’t have to buy a Macintosh just to run Pixelmater Pro. There’s something else out there that can do the same thing, probably for free.

Step 1: Take a picture

The first step is to take a photo of the mini you want to store. It doesn’t have to be a great picture. You’re just trying to capture the shape.

A couple of minor hints:

  • Orient the mini in the way you want it to slide in the holder. This probably means take a picture “head-on.” Take care not to take the picture from “above” or “below” the mini; you probably want the base to appear flat, for example.
  • Make sure there’s at least some modest contrast between the mini and its background. This will make it easier to select the mini’s shape in your image program (see below),

Here’s an example:

A partially-painted Flying Cat miniature from the Etherfields Stretch Goal box. I didn’t even bother to check the orientation when I took the picture. All that mattered was that the mini was distinctly “flat” against the background. I took the picture with my iPhone 7 Pro; no fancy digital camera was necessary.

Step 2: Select the mini’s image

For the next couple of steps, you’ll need an image-processing program. As I mentioned above, I used Pixelmater Pro. For this kind of work, any mid-range or higher image program will do. Obviously, the “500-lb gorilla” in this field is Adobe Photoshop, which is fiendishly expensive and (at least for me) intimidating to use. The free open-source program GIMP will work too, and runs on Mac/Windows/Linux.

I loaded the picture into Pixelmater Pro:

I rotated the image 90 degrees to the left to make things visually easier for me. It really didn’t matter otherwise.

I used the Quick Selection tool:

Where to find the Quick Selection tool in Pixelmator Pro; note the highlighted icon in the middle right. The hardest part of using any image program might be finding this particular tool!

I held the left mouse button down until I highlighted everything except the image of the mini:

I tried to do a screen capture in the midst of highlighting (which looks really cool) but I wasn’t able to do it. Depending on the size of your screen, you may have to look carefully to see the dotted line that indicates a region of the screen is “selected.”

The reason to highlight everything but the mini is to handle the case when the mini image has “holes” in it.

For example, consider this image of a different mini, The Riddler. I wanted to make sure that the gap between The Riddler’s legs would be included in the eventual selection. (If you’re sharp-eyed, you may noticed that I missed a bit of the edge of The Riddler’s tail. In this case, I’d fiddle with the image’s brightness and/or contrast settings until the edge of the tail stood out enough for the selection tool to detect it.)

I then clicked on the Invert button in Quick Select panel to select only the image of the mini.

In this screenshot from Pixelmator Pro, the Invert button is the middle of the Quick Select panel, in the middle right of the image.

I know it’s a lot of pictures. But after you’ve done it a couple of times, it’s just a few clicks and drags.

Step 3: Grow the selection

The point of making this selection is to define the “hole” we’re going to place into the miniature holder. However, if we made the hole the exact shape of the mini, even if we simply scaled it bigger, the mini probably wouldn’t fit.

What we want to do is expand that selection evenly around that outline. This will define a hole that’s more likely to fit the mini.

Fortunately, this is a common image task. Any of the image programs I’ve mentioned can do it. In Pixelmator Pro, this function is found by clicking the Refine… button, just above the Invert button in the pictures above.

Pixelmater Pro’s “Refine Selection” screen.

Drag on the Expand slider to grow the outline of the selection. (In GIMP, this same functionality is called Grow.)

I found that expanding the selecting by 25% was enough. You may want some more “wiggle room” for your holder.
Click Apply on the previous screen to see the new selection. We’re getting there!

Step 4: Turn the selection into a vector graphic

Next, we want to turn that selection outline into a format that can be imported by a 3D-design program. Pixelmater Pro can export in SVG format, but first we have to turn that “outline” into a shape. In Pixelmater Pro, that command is the menu Format->Convert into Shape:

After you select Format->Convert into Shape, Pixelmator Pro will create a new layer containing the shape. I’m sure other image-processing programs will do something similar.

To save the shape in SVG format, in Pixelmater Pro select File->Export… and make sure the export format is SVG:

It was only at this point when writing this blog post that I realized I’d named the file “Flyinc Cat C” instead of “Flying Cat C”. Oh well. I hope you’ll forgive me.

Interlude: 3D design programs

In anticipation of this blog post, I tried to use the free web site OnShape. I managed to get the task done, but just barely:

It looks nice, doesn’t it? Not shown: The agony it took to get to here.

The problem, for me, is that OnShape is designed for engineers, and has a user interface that I believe follows the standard for CAD programs. This means that the program does not respond the way I was used to with Mac programs. For example, if I clicked on some graphical object in a Mac program, I expect that object to be highlighted, and perhaps some information about that object to be displayed. In OnShape, if you click on an object, what happens can be generously described as “unpredictable.” Unbelievably for an engineering program, the object’s properties (such as size or location) are not displayed when you select it.

If you’re familiar with a CAD program, OnShape is definitely the tool for you (though you’d probably use that CAD program in the first place, as opposed to any of the other tools I describe below). Otherwise, I suggest looking elsewhere.

As I mentioned above, the 3D-design program I use is Cheetah3D. It’s oriented around the needs of graphic designers and low-end animators. I used it to design all the items in my jewelry shop. For me, it was the appropriate tool because I’m familiar with it.

Another program to consider is the free Blender. I’ve tried it a couple of times. I found it to be tricky to use, but that’s probably because I’m too used to Cheetah3D. Blender is to 3D design what GIMP is to image manipulation: free, open-source, runs on Mac/Windows/Linux, reasonably well-documented and supported, but there is some learning curve if you’re used to something else.

Step 5: Import the shape into your 3D program

In Cheetah3D, this is just a matter of selecting the menu File->Import…:

You may have to expand the screen image to see the thin green line that is the SVG shape. Note that Cheetah3D imports the shape as path.0 within an SVG Paths folder. I found it convenient to move the path out of the folder. Also not obvious is that the SVG shape is offset from the center, which requires some moving around as we scale it in the subsequent steps.

Some 3D programs (OnShape in particular) won’t import SVG files, but will import DXF files. There are lots of free web-based tools for converting SVG to DXF; here’s the one I used for my OnShape test. There are also plenty of free programs that can do this; if I’d had to do this more than once, I probably would have installed the free open-source program Inkscape, which is available for all major operating systems.

Step 6: Scale the shape

This is the tricky part, both to understand and to do.

So far, the shape we’ve manipulated is “dimensionless.” How big is it? You might be tempted to give an answer in pixels or something like that. The reality is that we haven’t established a size for this shape in any units that a 3D slicing program (our eventual destination) can use.

The next step is to measure the size of the mini. I prefer to use digital calipers:

This isn’t quite the right way to measure the height of this mini. But when you’re trying to hold a mini with one hand, the calipers with another hand, and hold an iPhone with the third hand, sometimes you have to take what you can get.
While we’re here, we might as well measure the depth of the mini; we’ll need that later. (Hey, if these are digital calipers, why aren’t there any digits on the calipers’ screen? The battery died while the calipers sat in my closet. I’ve ordered replacements.)
In case you’re wondering why I’m making a fuss about measurement, this is what happens when you get the shape’s scale wrong.

Now that we have the size of the mini, we have to decide the size of the shape. After a bit of experience (see the above picture), I found that adding 3mm to the height of the mini would create a shape large enough so that I could be fairly confident that mini would fit into the resultant hole (which we’ll make below).

In OnShape, scaling something to a particular size is a mix of easier and harder than it is in Cheetah3D. On the one hand, in OnShape you can create a “construction line,” add a dimension display to that construction line, then type in a value to that dimension to scale that line and whatever it’s attached to. On the other hand, creating the construction and dimension lines is much harder than it should be; it took me a lot of trial and error, and I couldn’t remember exactly what set of mouse clicks and drags were needed to do it again.

In Cheetah3D, there’s no automated scaling of that sort. What I did was create a “ruler”; in this case, a box that was 48mm high (the measured height of my mini was 45mm, then I added 3mm):

I put in a temporary box, and made it 48 units high. As you can see, the shape is much less than 48 units tall! (If I’d had a brain in my head, I would have started putting red ovals around the key points in some of my earlier pictures in this blog post.)

Using the “ruler box” as a guide, I scaled up the shape:

This is a “face on” view (along the z-axis) of the same objects as the previous picture, but with the shape moved to the center of the image and scaled up so its size matches the “ruler.”

Step 7: Extrude the shape

We have the shape of the hole. Now we have to set the depth of the hole.

In our case, the second picture with the calipers above shows that the depth of the hole has to be at least 25mm to accommodate the mini. Let’s make it 30mm just to be safe.

I deleted my “ruler box.” Then I used the extrusion tool in Cheetah3D to create a 30mm extrusion along the z-axis.

Back to perspective view. I’ve deleted the “ruler”. I’ve also taken the shape (path.0 in Cheeta3D) out of its folder. Cheetah3D uses a “modification hierarchy”; in the circle section, you can see where I’ve put the shape into the extrusion. It may also help to note that the scale of the extrusion is 1; it’s the scale of path.0 that I changed in the previous picture.
I’ve set the amount of the extrusion to 30 units. I used a minus sign solely to make the front of this object to be aligned with the origin of the coordinate system; this is just a convenience for the next step.

Step 8: Turn it into a hole

That extruded shape is going to become the hole in our miniature holder. Let’s now think about a box into which we’ll put our hole.

We already know that the depth of the hole will be 30mm. How thick should be the “floor” of the holder be? 2mm is probably enough. That means the box’s total depth will be 30mm + 2mm = 32mm. I’ll start by making the height and width of the box 32mm as well, because I have to start with something.

Add a new box. Note (in the red oval) how I’ve set some starting values for the box size, so I can clearly see the box on the screen. (The default size of a box is 1mm on a side, which on this scale would be tiny and hard to see.)

Position the box so its front face is at the same position as the front face of our shape’s extrusion.

I know the depth of the box is 32mm. If I put the center of the box at -16mm, its front face will be at z=0. If you look up a few pictures, you’ll see how I created the extrusion such that its front face was also at z=0. They match!

Adjust the size of the box to fit the shape.

Look from the front again. No sophisticated math here; I just fiddled with the size of the edges and the position of the box (shown in blue to make it easier to see) so that it was big enough to contain the shape. The red oval shows the final, adjusted values for the box size and coordinates.
A perspective view again, so you can see the result of all the box-play.

Now we come to the fun part! We’ll use “boolean subtraction” to carve out the material of extruded shape from the box.

In the red oval, you can see how Cheetah3D handles boolean operations: the box is the first shape, and the extrusion (the second shape) is subtracted from it. The magenta circle shows that Cheetah3D is set to subtract the second shape from the first.

Step 9: Save the whole thing as an STL file

This is trivial: Export the resultant shape in a format that a “slicer” can read.

In Cheetah3D, to save a file as STL, use the menu File->Export… and make sure the file format is “stl”.

Step 10: Import the STL file into your slicer

You probably don’t need this part if you’re already familiar with 3D printing!

I use Ultimaker Cura to convert my STL files into the G-code format that 3D printers understand.

I’ve imported the STL in Cura. Note that I’ve set the layer height to 0.3mm, since the holder doesn’t have to be elegant. (There’s a subtle issue here: In Cheetah3D, I said that objects (e.g., the box) were some units wide or tall or whatever, but I didn’t say whether those units are centimeters, miles, furlongs, or some other unit. When Cura reads in an STL file, by default one “unit” is one millimeter.)
The original orientation of the holder would require support, so we’ll fix that. A 90-degree rotation along the x-axis means that no supports are necessary. (I could also have rotated this in Cheetah3D.)
I sliced the STL in Cura… and got a 3+ hour printing time. Hmm. I wonder if there is a way to do something about that?

Step 8a: Prove you are the master of your 3D program

The reason why the above picture shows a relatively long printing time is that we’re printing a lot of material that we’ll never use. I made a “hole in a box” for instruction purposes, but as long as the hole is fully contained in a shape, there’s no reason for that shape to be a box.

When I first approached this design, I “carved out” portions of the box using additional boolean subtractions.

Here’s that same box, but with lots of holes, plus a couple of curves on the sides. If you look inside the red circle, you’ll see lots of nested boolean subtractions of cylinders from that poor innocent box!

Why all the holes? For one thing, it means less plastic is printed. For another, in this style of 3D printing, a segmented wall is stronger than a simple smooth one; that’s because the slicer will put extra borders around the regions of the holes. The holes serve a couple of other functions: If the mini ever got stuck, I could reach through the holes to unstick it; if any liquid poured into the holder, it would have a chance to drain out before damaging the mini.

But do we really need a box? What if we could create a more efficient shape?

The beauty of splines! I created a spline circle in Cheetah3D, added points to the spline, and adjusted the points and their slopes to create an outline around the shape.
We extrude the new spline in the same way we extruded the shape from the mini, with different parameters since we still want a floor for the box. Stick in a few more subtracted cylinders to give us our holes, and we have a holder we can be proud of.

How does this look?

It’s printed. But does it work?
Yes! The Flying Cat fits!

Remember that Riddler picture I had above? There was a reason why I worked with that image. The following example is left as an exercise for the student.

What is this strange skull-shaped object?
The two minis that my Etherfields group are most likely to want to see are safe to be carried to their new adventures!

Finally, here’s your extra-credit homework assignment:

Hint: Try overlapping the extruded mini shapes.

Leave a Reply