A few weeks ago I cranked out a floral Seej bloxen. Bumping out geometry to make vines is easy and fun, and got me started down another path I’ve been waiting to tread for quite some time.
I’d been feeling the need for an art challenge. How complicated of a model can I make with the tools I have available? Can I keep an excruciatingly complex mesh manifold and, importantly, printable on a Replicator1?
The most complicated model I’ve released so far is the Barrow bloxen, but that thing’s a big honking mess of intersecting faces. It’ll print, but at the mathematical level it’s inelegant and causes me to feel an emotion somewhere between embarrassment and disdain.
I’ve been wanting to create a woodland player race for Seej, and a thicket seems like the kind of thing dryads might use to keep attackers out. So I’ll start fresh and create a tangle of vertices and faces, vine by vine, making sure the mesh remains manifold and printable as I go.
The first step is to start with a template bloxen and freehand draw a base for the model.
Then extrude the base, bevel the edges, and subdivide the mesh to get some sculptable vertices for the next step. Beveling the edges can introduce non-manifold geometry if one isn’t careful, so it’s important to visually inspect the tighter corners of the bevels to make sure edges aren’t accidentally intersecting before subdividing the mesh.
After a little bit of sculpting with Maya’s sculpt geometry tool to make the base a little bumpy, it’s a simple matter to punch out the bloxen’s mortises with a pair of cubes. If I’m careful with the placement of vines later on, this bloxen will stack handily with existing designs.
I’ve got digital skulls all over my hard drive: occupational hazard. Everything’s Better With Skulls, so I’ll add a little bit of art detail here. In hindsight I should have waited to add the rocks until later in the project because their extra geometry interfered with attaching some of the vines to the base.
The process for adding vines is in theory simple, but in practice increasingly difficult as the thicket gets more dense:
- draw a NURBS curve
- extrude a polygon along its length with a twist and a taper
- add some variation with the sculpt polygon tool
- smooth the mesh
- join the vine to the base, other vines, and neighboring geometry
I like to color different elements while I’m working so I can tell what I’ve worked on and what remains to be done. So I draw a gear-like profile for the first vine and extrude it a bit. Once the vine is smoothed those gear teeth will look like gnarly roots.
I don’t need all the extra geometry created by the gear teeth so I merge some of the vertices to turn my profile poly into an octagon, and then extrude it along a twisty curve.
I want to rough out the major volumes before I get too tangled up in vines, so I add a squirrel. Everything’s Better With Squirrels.
Kestenbaum the squirrel needs a vine to grip, so back to the NURBS curves it is to create a suitably convoluted path.
I’ll integrate Kestenbaum’s haunches with the skull’s parietal bones later, off-camera.
Every now and then a vine is going to branch off from the main trunk. The process is similar to extruding along a polygon along a path except I like to cut a hole in the main trunk first, round it off, and then extrude.
After much lathering, rinsing, and repeating I’m convinced the workflow I’ve got is mostly sound and maintains a manifold mesh. The viny bloxen is beginning to take shape.
I add vine after vine after vine over the next few days, and then get a little bored and decide to add something more interesting. A cylinder helps me block out where a bird’s nest is going to sit.
And after a little subdividing and sculpting the nest is ready to go in. It needs a few little vines to keep it supported inside the bramble, and of course it wouldn’t be much of a 3d nest without some elongated spheres for eggs.
Jumping ahead in time a bit, here’s a top-down view of the print before manual cleanup, showing the eggs in situ.
And then I’m back to meticulously adding vines a few at a time and running test prints to make sure the model’s as self-supporting as it can be. After a few weeks of working, an hour here, an hour there, I’m ready to begin adding thorns to the vines.
Moving all those thorns into place by hand (I think there are somewhere around 350 of them) would be way too time consuming, so I settle for a hybrid manual/scripting approach.
I manually go through the mesh and identify the polygon faces where I think a vine needs a thorn, and then write a short MEL script that constrains an instance of the thorn to those worldspace coordinates and then locks the thorn’s y-axis to the average of the faces’ surface normals. It sounds more complicated than it is.
Sometimes the surface normal average doesn’t make perfect sense for the thorn’s orientation, so there’s a little bit of manual tweaking for a good 30% of the thorns.
I’m running test prints every few days throughout this process, just to make sure the model was mostly self-supporting. Chances are I missed one or two overhangs, but the density of the vines is such that stray filament strands actually add to the look for the final print.
The almost-final mesh is looking quite gnarly.
Because I am a homonin of questionable morels, I add a few mushrooms hidden inside the bramble so that others can experience the joy of finding them. These 3d fungi are far more detailed than they need to be at this resolution, but I’m planning to make a Dryad battle flag in the same style later so my small extra investment in time won’t be wasted.
The mesh has dozens of tiny holes created by Maya’s boolean operations, mostly at junctions between vines. I fix these when I find them but allow netfabb to do the cleanup on most of them.
I could keep adding detail to this model forever, but in practice the mesh is getting too unwieldy to work with. Sometimes it’s like working inside an actual thicket, with vines obscuring my view and 3d thorns scratching up against my camera lens.
Here’s a final print at 200% scale to bring out the details:
Whew. Glad this one’s finished. Time to move on.