Portraits
Getting a bit carried away with the twee filter effects.
Posted on Tuesday, January 14th, 2014.
3D Printing Projects
If you’ve been following my recent posts here and elsewhere, you’ve probably noticed a recurring theme: 3D printing. The immediate source of this new interest is the Makerbot my dad is hosting at school, thanks to the forward-thinking investment of DCMO BOCES. Read more about 3D printing in the library and other related topics at my dad’s blog.
The plastic objects produced by today’s 3D printers aren’t really anything new, but the ability to make them at home in an afternoon certainly is.
No retooling is necessary to create different objects with additive manufacturing. This removes a barrier to the creative experimentation and iteration that is a vital part of craftsmanship. Plastic has unique properties, but unlike materials such as wood and metal, which were worked by hand for generations before the advent of mass production, plastic has never been an artisan medium. The plastic objects produced by today’s 3D printers aren’t really anything new, but the ability to make them at home in an afternoon certainly is. So, I think there is a potent sense of empowerment driving interest in this technology.
For similar precedent, see how the proliferation of affordable computing power has transformed our access to information, if not society itself. 3D printing has already enabled individual artists, engineers, and entrepreneurs to realize their ideas. I am curious what influence it could have on [mass-produced, disposable] material culture at large.
Parts
More immediately, I see 3D printing as an opportunity to make better use of the things I already have. In particular, I saw it as way to reuse or repair the many bike accessesories I’ve accumulated, which sometimes end up unused due to misfit or MIA mounting hardware. A custom-printed bracket fits more securely than zip ties and duct tape but is more affordable than a factory-ordered replacement, if one is even available.
This shim adapts the clamp of a spare beam rack to the smaller diameter seatpost of my old folding bike:
This piece is part of a set intended to let my trunk bag attach to the same beam rack. The bag has a plastic rail on the bottom which slots into grooves in compatible racks. I’ve not quite perfected the rail fit yet.
This small sleeve replaces the folding bike’s original steering joint sleeve. It’s a tough act to follow, as the sleeve must be snug enough to prevent play (disconcerting at speed!) but loose enough to let the pin be inserted or removed with ease to facilitate folding. We printed a couple versions to experiment with different infill (density) settings.
With three water bottle cages, my bike already has more fluid capacity than most. That’s no reason not to add hardpoints for two more, though. These little clamps fit the tubing from which my bike’s front and rear racks are built, and can be installed in pairs to provide bolt points for water bottle cages (or other gadgets, I suppose) wherever there is room. Partly an experiment in designing surfaces thin enough to take advantage of plastic’s flexibility for snap-on installation.
Programs
I’ve also been writing some little programs to help generate printable objects.
Previously introduced here, hmstl makes printable landscape models – geographic manipulatives – from heightmap images. (The name is a cryptic abbreviation for “Heightmap to STL”, STL being a common 3D file format suitable for printing.) Here’s a picture of the printed output next to the hmstl model:
The program optionally accepts a “mask” image; masked areas are not included in the output. This can be used to generate models of non-rectangular areas. Here’s an arbitrary example using an oval mask:
Here’s a more meaningful example. The heightmap represents the elevation of the area around Binghamton, NY, while a mask image was used to cut out a model of the actual city limits:
Another program is ridge-o-gram, introduced here, which produces “lenticular” models from black and white image pairs. The pixels of each image are presented as the left and right faces of a series of ridges, so that one image is seen when you view the object from the left and the other from the right. Intended to take advantage of the Makerbot 2x’s dual extruders by printing the “black” and “white” image components as interlocking perforated layers. Haven’t quite managed a successful print yet, in part because the output is pretty complex and perhaps near the limit’s of the Makerbot’s resolution, at least for non-tiny images.
Under the hood, hmstl and ridge-o-gram both use libtrix, a crude C library I wrote to handle the repetive task of formatting triangle coordinates for STL files output. It is crude in the sense that it does nothing to enforce valid geometry – it’s just the simplest possible shortcut for reading and writing STL files, so it trusts the application to generate printable shapes. A fun exercise in reinventing the wheel, though.
Naturally, I’ve got a bunch of ideas for other parts and programs, including friendlier web-based ways to use the programs, but we’ll save that for later.
Posted on Monday, December 9th, 2013.
Ridge-o-gram proof of concept
This image shows the first output of a program that converts two black and white images into a pair of interlocking 3D models. The models comprise a ridged surface that presents one image when viewed from the left and the other image when viewed from the right. One model represents the white pixels from both images and the other model represents the black pixels from both images (displayed here in blue).
(Astute observers may notice something odd with the perspective in this video clip – foreshortening is reversed. I had inattentively fiddled with the viewer’s settings before recording the video.)
Is there a name for this kind of display? I’m sure I’ve seen folded posters or other artwork that utilizes this effect, but without knowing applicable terms I haven’t had much luck finding examples.
The present implementation is a proof of concept. Only the ridged upper surface is currently generated. The plan is to generate a solid base as well, with the eventual goal of producing a two-piece panel that can be printed as single assembly with a dual-extruder 3D printer like the Makerbot 2X. I’d like to make it available as a web site.
Posted on Saturday, November 16th, 2013.
Printed Terrain Model
Here’s a physical print of the sample scene from my heightmap to STL program!
Posted on Tuesday, November 5th, 2013.
Mobile Mouse 3 and mmserver
Interested in the news regarding my stewardship of mmserver, the unofficial Mobile Mouse server for Linux? Changes since the last release include partial support for clipboard sync (pull computer clipboard to phone clipboard with a hotkey), support for modifier keys applied to mouse clicks, a workaround to ignore duplicate click events, support for “keystrings” (text input when shift lock is applied – unclear what it’s for, but at least now it works), and last but not least, compatibility with the recently-released Mobile Mouse 3 apps. No easy installer yet, but anyone who actually uses mmserver has presumably already figured out how to pull updates from Github – so just do it again!
Posted on Thursday, October 31st, 2013.
Heightmap to STL
Hacked together a little tool called hmstl
. It converts a heightmap – a grayscale image in which brighter pixels are interpreted as higher elevations – to STL, a format suitable for 3D printing.
Posted on Wednesday, October 30th, 2013.
Bitmap Bikes
Drawn on my telephone, just the way Picasso did.
Posted on Wednesday, October 30th, 2013.
Mobile Mouse Server for Linux 1.4.0
Bundling up a bunch of little tweaks to my fork of Mobile Mouse Server for Linux and calling it version 1.4.0. Get it here. Main changes include:
- Support for gesture commands (configured like hotkeys)
- Added option to ignore keyboard input
- Using
xdg-open
to edit config file for greater compatibility across systems - Changes to icon and config file loading, towards goal of simpler external dependencies
- More detailed log messages and config file comments
At present mmserver
must still be compiled manually. A goal for the next release is to make use of some package management system to take care of setup automatically.
Posted on Friday, September 27th, 2013.