Hi Sketchfab! My name is Nils Henning Deitmers. I’m a 3D artist from Hamburg.
When I was 16 years old I decided I wanted to work in the games industry. I’ve always been passionate about both gaming and creating art, so I started learning Photoshop and 3ds Max, being the industry standards, according to the internet. After I finished school, I studied graphic design and illustration, making a case of using 3D renders whenever possible.
For my diploma work, I created an interactive viewer (similar to Quicktime VR) and presented a morphing turntable that showed a baby girl morphing into a mature woman. I recently learned that Sketchfab supports morphing. Now I’m excited about the idea of making the project available to the community, if possible.
Right after my graduation I joined Bigpoint GmbH and became a professional 3D artist. Today, a good 10 years later, I’m still there. 42 years old. An appropriate age for any serious Douglas Adams fan!
Since my day-to-day mostly demands family-friendly casual game content, I was looking for some cool sci-fi concepts for inspiration. Eventually, I remembered a game I played on my PS3 (it’s also on the Switch now): “The Bug Butcher”. I love the dark, ironic vibe and the “attitude”.
The scope of the project spontaneously evolved. Initially, the “caterpillar bug” caught my attention and I started modeling it. When considering possible ways to present the creature I realized that the humor was actually in the interaction between the two main (life) characters, while the carcass in the front provided equally important eye candy, so I decided to do the whole scene.
Blocking it out
My goal was to maintain as much as possible of the layout from the original “shot” while arranging the rather horizontal composition on a circular footprint so that it would look appealing on a turntable.
Here’s the first block out I created with simple primitives. At this point, I was mostly looking to achieve a balanced composition that would work from most angles. The purple planes on the ground served as guides to help me get a feel for the camera FOV.
The opening in the ceiling releasing the small creatures, which were walking towards the character as a secondary threat to amp up the drama, was a part of the concept I did not want to miss.
Since I also liked the flair of the room with its steel panels and piping, I experimented with some walls around my scene. But the result was not quite working for me. After lots of testing, I found ways to prevent the room from clipping but even with the most extreme distortion tricks it was not possible to achieve the “over-the-top” frog perspective (certainly not from multiple angles) while still keeping the walls reasonably close.
So I decided to create a sphere with flipped normals to indicate some kind of generic wall and thus had to move the hole and creatures to the floor instead.
This actually came in handy, because there was an area between the carcass and the end of the dust trail that felt a bit unresolved and could use an exciting detail. The little creatures (I named them crawlers in my scene) were also a nice way to tie together the open areas and create a sense of interaction between scene elements.
The decision to move the character to the center of the scene was made rather late in the process, when I started turning the table more often to identify weak spots. While I liked the drama of the Butcher standing right in the mess he created, I found it more appealing to make him the focal point the camera would orbit around. Instead of being obscured by the carcass from most angles, this opened up three little stages, framed by interesting shapes.
Cell shading R&D
While I had done the first bug without the help of a cell shader, I started researching the cell shading capabilities of both Sketchfab and Marmoset Toolbag 4.
I’ll admit I was not prepared for the result: No cell shading in real-time.
I’ll also admit that the headline “Real-time comic art” on the Marmoset site didn’t exactly help me make that realization. From what I understand there is nothing “real-time” about the scene they are featuring, other than the preview in the viewport on the artist’s home computer….
When it became clear to me that the only cell shaders in existence were exclusively suitable for rendering but not supported by real-time viewers, I decided to create my own cell shader in 3ds Max and bake it into the diffuse texture.
This was the setup I used:
To eliminate any diffuse shading, I set the Diffuse slot to black and assigned a map to the Self-Illumination slot.
To be able to combine a flat color texture with my own cell shading, I chose “Composite” as the map type.
In 3D-Coat I painted a flat texture with the unlit colors and black lines and assigned it to the first layer of the composite map. For the cell shading effect, I created a second layer and assigned a gradient ramp to it, setting the type to “Lighting”.
Now, this gradient ramp offered great control over the hue, value, number, and size of shading levels, responding to lighting in the scene.
I created separate materials for the blue and red parts of the carcass model and for the dust cloud, to be able to control the shading colors individually.
Real-time 3D outlines are usually created by flipping the normals of a duplicate mesh, scaling the vertices outwards along the normals, and applying a black, unlit material.
In 3ds Max there are two easy ways to do this that produce identical results with closed geometry.
- Create a reference of the original mesh, apply a push modifier and a normals modifier, apply the outline material. The advantage of this is the flexibility of a separate outline object. You could apply vertex paint to it, or distortion, etc.
- Add a shell modifier to the original mesh and set the shell material ID to 2, apply a normals modifier, apply a multi-material with the original material and the outline material.
(If you’re dealing with open geometry, the shell modifier will create geometry around the open edges that you may or may not see, depending on the thickness of the shell versus the size of the opening.
Also having to deal with only one object in the scene makes editing a bit easier, so in most scenarios I prefer this second solution.)
I usually like to apply the outlines early on while modeling. Not just because I enjoy seeing them, but because the polygon angles have a direct impact on how likely they are to produce a visible outline. Also, there are usually some tight spots that require fixing.
Modeling and UVs
The “caterpillar bug” was quite straightforward to model, since except for the head it consists entirely of repeating elements. I started modeling the individual segments from a cylinder and created some more instances along the length of the body.
Instead of a taper modifier, which provides too much of a linear result I used a freeform deformer to taper the body towards the more massive middle.
For the front teeth, I created geometry, the smaller teeth worked well enough in the texture.
The pose was achieved with a path deformer, which is a nice way to control this type of geometry with the benefits of a control spline but without the hassle of setting up a spline IK.
The “stretch” and “percent” values offer control about how much of the object will fit along the control spline and how far it will move along the spline. You can think of it as the equivalent to UV tiling and offset.
Getting these settings and the curve of the spline just right was crucial to me, since it would make or break the impact of the main narrative element: the interaction with the butcher.
Much later in the process when the pose was final, I revisited the model and compensated for the distortion that typically occurs on the inside bends of path deformed objects. (Technically it does on the outside too, but it’s usually less apparent) In this case, I spent some time restoring the volume of the squashed feet.
The caterpillar bug’s UV layout is unique for the head and first segment; the rest of the body shares a handful of variations.
The darkening of the segments near the ground was done with vertex paint to keep it independent from the texture.
The carcass started out from simple poly spheres and a cone. I created three individual objects for the head, middle and tail, so they could have their individual symmetry and rotation in the scene.
The modeling was done underneath a turbosmooth modifier set to smooth by smoothing groups.
This is a nice way to create both organic shapes and hard edges, without introducing extra edge loops, which would make the model much heavier.
While texturing, I came back and introduced some deeper cuts and volumes in some places, to improve the results of the cell shader bakes.
All pieces of the carcass share one unique UV layout to support baking the apparent directional lighting.
The connecting intestines were made from geospheres and the liquid on the floor started from a plane with a shell modifier to add the volume.
In the shell modifier, I checked “select inner faces” and “Override Edge Smooth Grp”, with a value of 1. This caused the turbosmooth to create hard edges where the liquid meets the ground. This setup kept editing the base level simple without having to worry about the bevel.
The UVs of the liquid I collapsed into a single point, and moved them to the white reflex of the eyes in the bug’s texture, to be able to reuse the same material and draw the color information from vertex paint.
The Butcher started from a box and was modeled in a t-pose with skinning in mind. Surprisingly enough, the most challenging part was the helmet. It is such a simple design that even small changes to the shape make a big difference when seeing it from various angles. I referenced lots of original concepts. They all looked appealing in their own right but quite different from each other, cheating on perspective to flatter the depicted angle.
So I tried to find the ideal average that would accommodate my taste and work best from most angles.
For the hose connecting the helmet and oxygen tank, I actually used (…you guessed it!) the dynamic hose object that comes with 3ds Max, along with a push modifier to make the cycles on it look a bit chunkier. The cool thing about this object is that you can bind it to dummies to control the start and endpoints. Much like a bezier curve between two points. (Any modifier on top of the hose prevents it from refreshing, so you may want to keep it disabled most of the time.)
Since the earpieces and the connection on the back of the helmet looked identical to a certain part of the gun, I decided to just reuse the texturing here.
For the rest of the geometry, I used an automatic unwrapping plugin called “Unwrella”, which does a great job of unfolding the mesh with a minimum of distortion and decent use of UV space.
The rigging and skinning were done with CAT. I did a quick weighting pass for the complete body, created the desired pose, matching the illustration, and reacting to the caterpillar bug. Then I dialed in the weights in the shoulder and waist areas to specifically support that pose.
The dust cloud started out as a ZBrush dynamesh. I sculpted the shape to the point that it was producing the kinds of shadows I had in mind, doing some quick auto unwrapping and texture baking. When I was happy with the results, I cut away the invisible parts of the geometry that would be hidden by the bug and the floor object and unwrapped the final UVs with the Unwrella plugin. All I cared about was efficient use of UV space since this texture would be baked only and even re-doing the UVs later on would not be an issue.
The texturing process for the carcass and the butcher was pretty much the same—a combination of flat paint with black lines and baked cell shading.
In areas that were not affected by light but could still use some detail, I simply painted the shading into the flat texture.
The dust cloud was the most complex object in terms of light baking and will serve as an example for the process.
I wanted a more or less even distribution of light, defining most of the cloud’s volumes, only leaving a few slightly bigger shadow areas.
I arranged lights all around the object, each with a similar attenuation and falloff, coming in at a flat enough angle to only illuminate a section of the cloud mesh and produce individual shadows for the majority of bulges in the area.
Differently from a realistic light setup, this is more like painting with light, relying on computed accuracy and artistic freedom.
The “caterpillar” bug didn’t need any texture baking, since it is quite exposed to the light but does not show hard shadows. For the gun, too, I decided to simply paint whatever shading I needed in the texture. Additionally, I created a lower resolution texture for the emissive slot to control the glowing parts. The smoke coming out the front is using vertex alpha for opacity.
For the floor, I created a tileable pattern in Photoshop, with a density of detail that would not look busy or draw too much attention. Doing some quick tests with highlights around the lines I decided that it looked cool but did not fit the style. I simply wanted it to connect the scene objects and provide a sense of perspective.
For a more complete look, I applied the same texture to the walls of the room as well, and after dialing in the tiling I was happy enough with it to keep it.
Using close foreground elements to frame the scene and create interesting overlaps is a classic technique that I find extremely effective. I love how the original illustration does it. Here it is with a Levels filter to make it more obvious:
So as a finishing touch I created a few pieces of geometry and placed them along the perimeter of the floor object. While providing foreground elements for low camera angles this also came with the benefit of breaking up the clean border between the floor and the wall when seen from higher angles.
It took a bit of tweaking to find a good rhythm for the chunks of foreground to pass by in moments that ideally would not steal the spotlight from other objects but rather overlap the mid and background in a meaningful way.
Before exporting I merged all objects into one and double-checked the material assignment.
The 3ds Max FBX exporter from 2012 produces smaller files than most newer versions, so I got into the habit of using it whenever possible.
In the Scene tab I chose “shadeless” and enabled vertex color. I chose a purple color as the background to match it to the pseudo-fog color of the scene.
The Materials setup was fairly straightforward. Since the textures had originally been created for a slightly different environment, I darkened the albedo value for some materials and used a purple color in the emission slot to mimic the volumetric fog I had set up in Toolbag. Despite not being quite the same, I am quite happy with the result. After dialing in the final color of the “fog” I went back to the Scene tab and adjusted the background color for a seamless transition with the floor object.
The opacity of the gun smoke uses vertex alpha information, and the liquid on the floor has a simple slider value of 0.35, both set to “blending” as the Opacity type.
The outline material simply uses a black albedo and “Faces Rendering” had to be set to “Single Sided”. I did this for all materials, since I was not using any double-sided geometry anyways.
In the Post-Processing Filters tab, I used Tone Mapping for a little color correction and Bloom to create the nice glow around the energy capsule of the gun.
And finally, the Vignette effect helped to get a sense of light attenuation and create a more intimate mood for the scene.