Another little project to help get some workflows down in Blender. I was inspired by the poodle moth. I really like the stocky structure to the insect and thought it would be a great basis for a robot.
Sketching and Blocking
After an initial sketch, I started blocking out the form, built mostly from modified spheres and cylinders. Eager to try out the rigging tools in Blender, I jumped right in and started adding bones, assigning weight maps and setting up IK and constraints. I found the process pleasantly smooth, being able to feel out a lot of the settings via trial and error. Thankfully, the test rigging setups helped inform how I was to model the hi-res mesh, as certain parts had to be reshaped to allow more rotation of the leg elements without having mesh clipping occur.
Modelling with modifiers
Modelling the final mesh in blender started off slow for me. In the past, I’ve modelled in Lightwave 3D’s modeller and, while the process is quite destructive, it’s very fast for me to put together Sub-D geometry. However, the time I lost was soon made up by being able to mark an edge for bevelling by a non destructive modifier, allowing for quick and easy tweaks without compromising the integrity of the bevel.
The next step was UV unwrapping, which, similar to bevelling, involved marking edges ‘seams’ to define the UV islands. I’m still not sure this is the best method but had to apply the bevel modifier and then choose the seams as the bevel would split edge, causing errors. I also found ‘radivarig’ add-on for straightening UV edges very handy when creating UV’s that would respond well to having thin texture lines applied.
With things working out so well while testing the rigging features I thought, now I had all the geometry built out, I’d jump straight into the rigging. I worked on one leg, setting up the IK chain and pole. Creating an IK goal empty with another parent ‘ground’ empty with four further child empties with rotation constraints on two axes, parented to act as goals for the toe bones to point at. This setup, allows for toes to automatically splay when nearing the ‘ground’ empty. I then went about duplicating and mirroring that leg setup for the remaining legs which, apart from some normals issues, work surprisingly well.
Time to create some PBR texture sets. I exported an obj from Blender, which handily collapsed the modifiers and armature pose, leaving a posed, reasonably high poly model. To begin with, I wanted to create a faceted, brushed metal-like texture as the base so I used noise and angled directional blur in photoshop, masked with a cloud generated layer that was put through the ‘stained glass’ filter to create the facets.
While in Photoshop, I did a quick paint over of the some of the detailing I thought would look nice, then briefly jumped back into Blender to model and create depth maps to use as brushes and stencils when painting.
I find painting texture massively rewarding, having not previously has access to tools with such an instant level of feedback. I imported my brushes and stencils into Substance Painter and started drawing out lines to signify the separate panels from which the robot is constructed. Using the base, faceted map to effect the roughness and slight height of the material and the stencils to add the more designed details. As well as using smart masks and hand painted parts for some aging. Finally exporting all the texture sets for import into Blender.
When back in Blender, the process to set up the material was mainly just plugging the matching image channels into the inputs of the principled BSDF shader, adding an emission shader on occasion.
While creating this character, I was using the photogrammetry software ‘Reality Capture’ for another job and thought I would be quite nice to be able to capture the terrain, in part to save time, but also to see how much detail could be achieved on a relatively flat surface which may have significant occlusion issues with smaller rocks.
After capturing 20 or so images of a somewhat rocky area around the base of a tree on the way to work (I’m sure people thought I was a bit odd) I loaded the images into Reality Capture and ran through the fairly automated process for aligning and reconstructing geometry, which spat out a detailed, if a little too heavy, mesh, with accompanying, texture and UV coordinates.
The resulting mesh was heavy but still loaded fine into Blender and just about rendered in the GPU’s, coming very close to filling the 8GB of VRAM on the GTX 1080’s. Even so, I created a comparatively low poly mesh to bake in the texture and normal maps so as to have something a little more lightweight to both have viewable while animating and to ultimately use for an Eevee render and a SketchFab export.
Animation was immensely fun, treading the line between insect and robot-like movement. I planned to have it find something in the terrain, but it wasn’t until quite late that it turned out to be what was supposed to resemble the skull of an advanced humanoid being. The skull was very quickly sculpted and surfaced within Blender using SmartUV unwrapping. I found the f-curves editor a little tricky to navigate around initially but was soon happy to find that many of the viewport navigation methods were mirrored in the f-curve editor.
After refining the materials a little, I set up the lighting and imported a 360 cloud environment as well as a cloud background plate that I had photographed previously, these are available on supertextures.co.uk. They’re not amazingly sharp images but feel free to use them for anything with or without credit. I switched colour management to ‘Filmic’, increased the strength of the ‘Sun’ light and started producing to test renders. I was particularly interested in getting a multi-EXR sequence into the newly released DaVinci Resolve 15, which now has a Fusion compositing tab. I was able to import the EXR’s, separate the channels and, with a little help from Maxime Roz’s filmic .ocio file, reproduce a filmic like curve within Resolve. Ultimately I ended up exporting 16bit PNG’s as the EXR’s were quite slow in Resolve. In Resolve I adding a bit of atmospheric mist, a few lens effects and a some colour grading, then exported.
Realtime and SketchFab
As a final workflow exploration, I adapted the animation into a loop and baked FK animation into the rig. I removed unnecessary geometry and converted PNG textures to a more manageable JPG format, apart from the normal, which tend to show any compression artefacts quite a lot. After exporting FBX and Collada files I eventually realised that SketchFab accepts Blender ‘.blend’ files, which worked perfectly. Ah well, lesson learnt.