The Sockdolager

Disk Horse Logo

Magical

You just never know when someone who loves you is going to send you a URL that changes your life.

MagicaVoxel came into my life when my then-girlfriend, now-wife Molly showed me the work of a Japanese artist who goes by uevoxel. Enchanted by the legoishly miniature style of the imagery, I downloaded the tiny, free, cross-platform software mentioned in uevoxel’s profile as their primary tool. Molly herself can’t quite remember how she ran across uevoxel’s work, and it's thus easy for me to be sentimental about that little moment of happenstance.

Per the dry description from ephtracy—its pseudonymous creator—MagicaVoxel is “A free lightweight GPU-based voxel art editor and interactive path tracing renderer.”

The word “voxel” is a portmanteau of “volume” and “pixel.” 1 It’s to 3D space what a pixel is to a 2D plane. As a pixel is typically a square, a voxel is typically a cube.

MagicaVoxel is a computer program that lets the user create 3D objects and scenes by placing voxels. It provides a variety of tools for accomplishing this, letting the user do anything from placing individual voxels one by one to automatically filling a volume with an elaborate fractal shape.

Models and scenes created with voxels have an unavoidably blocky, sharp-edged nature, and the gestalt of the MagicaVoxel editor makes it feel like nothing so much as an infinite box of legos.

Creating a 3D scene with your computer is one of the most complicated things you can do with it, and most of the software that exists to do so is notoriously arcane. For a novice user to create something interesting or pretty in, say, Blender, they'll have to patiently work through several hours of tutorials before producing a single rewarding image. In MagicaVoxel, this takes minutes.

Modeling and rendering2 3D imagery is a laborious process—both in terms of user interface design and computational complexity—but voxels are a perfectly playful simplification of the task.

I've been enchanted by playful approaches to creation before, and I would not exactly be breaking new rhetorical ground to suggest that play is fundamental to creative production. Every medium needs (and most have) playful idioms, where learners and masters alike get to fuck around and find out. Every oil on canvas needs its crayons and construction paper.

The nature of voxels greatly simplifies the task of building a shape on the computer. MagicaVoxel presents a small handful of tools for adding and removing voxels from a scene, and they're easy to understand and experiment with. In practice, building with MagicaVoxel feels like a combination of drafting a blueprint and creating a mosaic. (I don't want to belabor it, but the comparison to Legos really can't be overstated.)

My favorite examples of voxel art are the pieces that contain the most apt and compact representations at the lowest possible resolution—pieces that work with the enforced blockiness of voxel modeling rather than against it. Taken together, the sum of a scene's individual choices allows for seemingly impossible visual leaps: Context might let a single red cube be read as a flower or an apple or a hat. There is something uniquely brain-ticklish about this kind of art, where the simple act of viewing it provides a flavor of cognitive satisfaction that feels related to the rush of solving a puzzle.

Voxel art is intuitive to make and feels good to look at3, but the art wouldn't be delightful in the way it is without MagicaVoxel's miraculous renderer.

When we look at the world around us, we are not sensing the shapes of the things that make it up. We sense only whatever light made it to our retinas after bouncing off (or being emitted from) those shapes. To take the mathematical abstraction of voxels and create from that an image you can look at with your eyes, MagicaVoxel has to render it—i.e., to calculate what color each pixel in the final image should have.

There are many ways to render in the 3D graphics world, varyingly expedient to a surprising degree—it’s a range with milliseconds at one end and fortnights on the other. Rendering methods at the former end are based on clever guesswork and outright lies, and the latter on unbelievably laborious bean-counting. Rendering with lies is important. It's how video games run at sixty frames per second without knowing what the player will do next, and how MagicaVoxel displays voxels as you work with them. But to make something look real, there is no substitute for counting beans, i.e., path tracing4.

Going to the enormous computational trouble of tracing the paths of billions of possible rays of light yields results that are very close to the way light works in the real world, and this is what gives MagicaVoxel's renders their delightful nature—the soft shadows, the creamy, glowing bokeh, the indirect illumination that suffuses its little world.

We get our first glimpse of the scene after sending in just one bug5 per pixel, and while the result is inevitably inaccurate, even a single sample (a "bug" in our footnoted metaphor) is enough to give us a rough sense of the the scene. Moving our point of view even slightly means we have to start the render over from scratch, but the immediate feedback means we often don't have to wait for the render is finished before there's enough visual information to make the decision about whether it's worth continuing.

Since MagicaVoxel knows ahead of time how many samples it's going to use to render an image, it also displays a progress bar across the top of the in-progress render. This progress bar is unlike nearly every other progress bar in the history of user interfaces in that it is a reliable indication of the actual time remaining in the render. The combination of the visible state of the render as it progresses and the accurate progress bar mean that you, the user, can make a well-informed decision about whether a render is worth the time to finish.

This thin, unassuming progress bar quietly exemplifies is MagicaVoxel's greatest and most subtle virtue: Its speed.

While its modeling tools are well-chosen and its renderer is exquisite, these strengths would be wasted if MagicaVoxel were not the most crisply responsive piece of software on my computer.

The MagicaVoxel download is less than four megabytes, which seems impossible6. When you launch the application, its interface appears so quickly it feels like there must be some mistake. There's no splash screen, no loading spinner, no progress bar—it's just there, as quickly as you might pick up a pencil or a chisel.

The only time MagicaVoxel makes you wait for anything is when it's rendering, and even then the interface itself remains completely responsive on my 7-year-old iMac. It stays uncannily snappy even dealing with scenes containing hundreds of millions of voxels. This speed is not just convenient. It inspires confidence and encourages play and flow. Craig Mod wrote an entire essay about why fast software is good, which opens:

Software that’s speedy usually means it’s focused. Like a good tool, it often means that it’s simple, but that’s not necessarily true. Speed in software is probably the most valuable, least valued asset. To me, speedy software is the difference between an application smoothly integrating into your life, and one called upon with great reluctance. Fastness in software is like great margins in a book — makes you smile without necessarily knowing why.

A few paragraphs later:

Speed and reliability are often intuited hand-in-hand. Speed can be a good proxy for general engineering quality. If an application slows down on simple tasks, then it can mean the engineers aren’t obsessive detail sticklers. Not always, but it can mean disastrous other issues lurk.

In the rare moments when MagicaVoxel betrays any sluggishness at all, it's when your scene has hundreds of millions of voxels and you're using them to render something truly perverse, like clouds. Until then, it is crisp and quick. Notably, it almost never crashes.

There are reasons why most of the software we use doesn't feel this good. Some of them are technical and others are bureaucratic, but in either case, when software is sluggish it is rarely because making it fast was impossible. It's because making it fast wasn't important enough to the people who decided how to make it.

MagicaVoxel shows us that it doesn’t have to be this way. It further demonstrates that software of sufficient quality does more than solve a problem—it sows the seeds of novel expression.

Voxel art certainly existed prior to MagicaVoxel's implementation, but its particular combination of focused design, gorgeous output, and cost (free) has made MagicaVoxel a central tool in the contemporary artistic idiom of computer graphics built out of little cubes.

Does MagicaVoxel's creator feel some pride at seeing uevoxel's delightful caricature-proportioned dioramas of suburban Japanese architecture? Do madmaraca's intricately fantastical isometric landscapes—and her recently-published book—inspire the glow of accomplishment in ephtracy's heart that it would in mine? What about Paul Riehl's work? Lina Ku's? dagseii's? Niklas Mäckle's ...Mine? I hope so.

It is MagicaVoxel's specific affordances and virtues that have given rise to this art. The particular choices ephtracy made in crafting this idiosyncratic masterpiece of software have unfolded through its users' tastes and interests and skills into expressions as diverse as their artists, all made out of little cubes.

Much of the software we use every day is desultory, at best, in its design. Worse, an upsettingly large fraction of it is deliberately and callously manipulative. But not all of it. MagicaVoxel is a reminder that computers can still be good. There's magic inside the machine you're reading this on right now. It—and we—can still be liberated.


1The word "pixel" is itself a portmanteau of "picture" and "element," making "voxel" a nested portmanteau, a fact which is obscurely delightful to a certain kind of person.

2Roughly: "Modeling" is the process of building a 3D shape, while "rendering" refers to the process of generating the image of what that shape would actually look like as seen from a given vantage point, under given lighting conditions, etc.

3It was thanks to MagicaVoxel that I finally understood something my mother and father have repeated to each other for as long as I can remember: "All art is abstract."

4This is path-tracing: Consider a team of highly trained bugs. When you point in a given direction, a bug flies in a perfectly straight line in that direction until it encounters some surface in the scene, where it lands. Once a bug has landed, you can ask it how much light is coming from the surface beneath it. To begin with, you'll have to dispatch one bug per pixel you're rendering, so just for starters, you loose just over two million bugs in order to render a 1080-line HD scene.

Our bugs, ironically, are totally blind. They check the properties of the spot they've landed on using their feet, which are so exquisitely sensitive that they can feel the smoothness, shininess, color, and brightness of the spot where they've landed.

But to accurately tell us what the color value for their assigned pixel should be, our bug needs to combine the color and texture of the spot they're on with all the light that's hitting it—and any amount of light could be hitting it from any direction. And so they call for reinforcements. We dispatch another bug to the same location as the first bug, and when it arrives, the first bug sends it in a random direction. The reinforcement bug heads out and lands, and when it arrives at a stopping point it reports back to the first bug what the color and brightness is there. We continue sending reinforcements, and as it dispatches them in random directions and gets their reports back, gradually our first bug is able to make a fairly accurate estimation of how much light is hitting its spot.

Of course, each of our reinforcement bugs has the same problem as our first bugs, and they're going to need their own reinforcements in order to estimate the brightness of their landing spots, and so on—and it now starts to seem as though we're going to need an infinite number of bugs. Path-traced rendering avoids this only by fiat—we decide in advance how many bugs we're going to dispatch and in how many waves of reinforcements.

To build a reasonable path-traced render of our scene, we'll need a few billion bugs. The miracle of modern graphics processing hardware means that in MagicaVoxel, this usually takes just a couple of minutes.

5"What?" —people who skipped the previous footnote.

6For comparison, visiting the front page of wired.com on December 17, 2024 involved downloading roughly twelve megabytes of data. Twelve!