My name is Kenji and I would like to thank Blender Nation for giving me the opportunity to present one of my artworks.
A few months ago, I started to learn Blender and I decided to commit myself to this amazing open source software. Over the years I have been trying different 3D creation softwares as a hobby, but only Blender brought me to the idea that I could make a living out of it and have pleasure working with this software and the community behind it.
100% amateur, I like self learning, and found that CGI could be an amazing way of bringing to life stuff I had had in my head since I was a kid. My main objective now is to polish both my technical skills and my artistic sense in order to create more striking artwork.
I want to thank Gleb and Aidy’s 13 hour long Hard Surface Modeling in Blender course that I followed from A to Z. Shortly after starting it, I did not feel like making a copy of their robot. (though, I must specify here that I used a lot of parts from their kitbash, which was a big time saver!)
Then, a very doubtful draft came up one morning... and it was on.
I wanted to challenge the workflow and myself by doing a spherical robot. In my experience, Boolean operations and curvy shapes (SubD modeling) giving some unwanted results; I wanted to try again with Blender.
Also, I wanted to make a functional robot design. So the proportions had to be realistic somehow: retractable legs, hydraulic system and actuator with realistic axis of motion...
Some elements of the design came up on the way, such as the arms, whose length was determined by the main spherical shell diameter (so that they can get back inside it). The arms and legs give the feel of a framework type of robot, whereas the spherical body is more like a shell type of robot. I think it’s cool to have both types of structures in one robot.
Originally I had no idea I would go for shading. As for the rubber duck, yeah, that also, was not a part of the plan! I let you guess “who” was the inspiration for that one! Hint: likes++ coffee.
Design & Hard Surface Modeling Key Points
Blocking out the bigger volumes... dividing them into smaller sections... and then adding more details/components into those small sections.
Those were my keystones. So in total there are 3 levels of details. When reaching the last third level, I tried to create areas of rest and areas of dense details. It would be a bit boring to have homogeneous details, wouldn't it? Also, some details are more functional than others, which are more cosmetic, with both being important but not interchangeable, in my opinion.
The Basic Shapes: Blocking Out Main Volumes/Parts
I started with a primitive ico sphere, added some edge loops where I wanted to cut the main panels. Then I simply separated (shortcut P) the pieces, created a small space between the panels and added the Subsurface modifier. The edges creased when needed and sometimes I let the Subsurface modifier smooth corners. The shading is set to smooth, and Auto Smooth (in the object data tab) was usually set at 60°. Later on and occasionally I was adjusting this value to solve some issues with the shading after applying the Bevel Modifier.
For the upper exhaust pipes/intakes (which look like sad dog ears), I used a Lattice modifier to bend them roughly.
At this early stage I also started to block the parts of the legs and used the Mirror modifier to get an idea of the overall proportions and the basic silhouette.
Then I started to take care of the legs in a different layer (or collection in Blender 2.8). So the axis of the joints are fixed, unlike the arms… Maybe I was a bit lazy on this one! Some little early kitbashing there too (in dark grey color). As you can see at this stage it’s pretty angular.
Refining the Main Shapes
More SubD modeling on all the base parts of the shell. Here I also started to join and attach some parts together, such as the ears with the upper shell. For this, I actually used a Boolean join operation, applied it, and manually fixed the topology as much as possible to get a smooth shading. Surprisingly, sometimes, it does not take much effort to fix the geometry and get good shading. Like here, it’s a bit dirty but the result is acceptable:
Of course, making quads and organized edge flow (knife tool is my favorite tool of all!) gives the best results, as shown here:
A quick note here: topology and good practices in 3D modeling are indeed important. But sometimes, you just need to know where and when you have to be picky….For instance, smaller details with Booleans will often generate some unorthodox geometry but it will often go unnoticed, simply because it’s too small. Though, it is more important, I think, to get a clean geometry for the biggest parts because they we will later be used as base to make numerous Boolean operations. The main shell looked likes this, and I was happy with it:
Minor Shading Problem Fixing
I noticed those pesky bumps and wanted to fix them (nothing better than Matcap shading in the viewport to track them. In Blender 2.8 this become even easier...)
Those often appeared when I creased edges to get a 90 deg. angle on a curved surface. I tried to move the edges/vertices manually to hide this issue a bit. In some areas I just added some edge loops to trap them (making them so small than it becomes almost invisible). Also I used the Relax function of the LoopTools sometimes to help smooth things out.
Secondary Level of Detail: Case of the Front Part (Face) of the Robot
The face of the robot is a center of attention. Since this might be the first thing you will look at when viewing the artwork, I started working on the secondary level of details of this part first. I checked that the SubD shell was good enough because I wouldn’t touch it anymore (not that I could not, but I wanted this to be clean to give the best results with the Boolean workflow). Here, the front part before and after the Booleans:
About Boolean Workflow
Once you have a nice SubD mesh as a base, it is time to add more details using the Boolean modifier. I used the BoolTool add-on which is a big time-saver. Most of the time I used the Difference Boolean operation. To create panels with Booleans, I use the classic combo of Difference-Intersect after duplicating the A and B operands. Well… for that method (and many others), again, I highly recommend checking out Gleb & Aidy’s Hard Surface Modeling course. It really makes sense when you see it. Finally, after adding those Boolean modifiers, I added the Bevel modifier to fillet all those edges.
Boolean modeling is non-destructive. I did not apply any modifiers at this moment in the modeling. And even on the final rendering, approx. 80% of the modifiers were still on! I only applied 20% of them to fix manually some edge and vertex problems, which were creating obvious shading issues. In some cases just moving the Boolean object slightly will fix any issues.
A typical modifiers stack in this project:
1) Subsurf 2) Solidify 3) Booleans operation (up to 10...15 on some parts!) 4) Bevel modifier
I made some exceptions for the very small Booleans operations, such as the screws and nuts, which sometimes can be placed after the Bevel modifier. In this situation the holes did not get smoothed edges but it would not be noticed on the render because of their size. This also greatly reduced the poly count as I did not have all those tiny polys generated everywhere. The cool thing is I could adjust this just with one click in the modifier stack….Aren’t non-destructive workflows awesome? And still, I could apply the mods to make manual fixes as much as I wanted… up to a perfect quad topology if I really needed it. 100% adjustable strategy.
The settings of the Bevel modifier are indeed important, almost the most important modifier settings of all. Sometimes, tweaking the value of the Width, or Profile, will simply fix some issues around the Booleans. I noticed that the higher the subdivision level, the higher the chance of ending up with Bevel modifier issues. Simply because there is a higher chance of creating pinched edges and overlapping polys on existing edge loops. A typical example of that situation here:
A non-destructive solution to this problem: adjusting the Bevel Width …(or the Profile in some cases).
OR (my favorite): moving the problematic edges far from the edge where the bevel will be generated by the modifier. For that just use G+G shortcut in Edit Mode to slide the vertices. Like so:
And in 5 seconds of editing the tearing is gone:
Another option, that I call Conan Slayer of Edge Loops, consists of selecting the whole edge loop that is too close to the edge that will get the bevel, and simply dissolve it. As long as you have enough control loops, this won’t destroy the shape of the base mesh!
Note that those methods work if you apply the Subsurf modifier. In my opinion, this is OK to do as long as you don’t apply the Bevel modifiers.
Also you can always keep a copy of the base mesh in a separated layer or file. I found that manipulating the vertices and edges of those very tiny bevels is troublesome. Therefore I preferred to adjust the edge loop of the base mesh rather than applying the Bevel or Boolean mod. For clarity, I only show a simple example, but with the same approach I fixed most of the little issues of the other Booleans + bevel modifiers. Depending on how much time you want to spend on it you can almost fix everything that way. Well, that’s what I did in this project.
Tertiary Level of Details: Small Booleans + Kitbashing
Actually I did not take care of fixing anything (minor) until the end. I was just adding Boolean mods to add some parts of the kitbash, or other custom parts. The goal is to feel free using the Boolean workflow in order to fill your model with cool details. The fixing is something you can do afterwards. I think it’s very important to separate technical tasks like that and creative steps. And this workflow really helps with that… So just focus on the creative part and add more and more details! Almost everything can be fixed afterwards, no need to get worried and stopped in your creative flow, or eruption…
And just like that.. I added all those details. If you look closely you will see some weird shading/crazy polys in some places. Those will be fixed later as previously mentioned.
From this point on, it started to be very cool modeling. As I got use to the workflow, very quickly and naturally I could add details… and it quickly looked great, right here in the viewport. Get some music and just keep it coming.
Adding cables with the Curve modifier greatly changed the silhouette of the robot. Also I added the feet (underneath) to improve details in this area. You can imagine when the main legs are retracted, the robot has to stand on those secondary legs. Cables break the regularity of the hard surface shapes, just like other parts that could be adjusted to look softer. I did not use this here, but you can use Sculpt Mode to add some variation of shapes, or the Displace modifier. Here are the cables on the legs and the lower feet:
I tried to avoid boring and empty areas as much as I could. For example, the protective shell over the legs was too simple. I started to add functional details (inspired by door locks!) and then non-functional details to make the overall shape more interesting. As shown here:
Ironically, I also wanted some areas of rest: not crowded with details. I believe our eyes will first look at 1) something that looks like a face (eyes, mouth,…), 2) check areas of details, eventually those you can barely see will make a great difference.. it lets you guess the complexity. And this is very attractive! (Camera aperture effect / camera blur is also very helpful for that reason I believe).
Addendum: The Robotic Arms
Finally I decided to make some arms for this robot. I used the same workflow 1) blocking the main volume/parts 2) refining everything with SubD modeling 3) addition of details with Boolean workflow. Let me show you quickly:
For those arms, I used Empties to materialize the joints which can rotate on different axes and make the corresponding part as Child of each Empty (whose motion will therefore influence the children). That way, I just made the pose with the base mesh to check the proportions and how those arms would fit with the rest of the robot. Also I carefully placed the ducky...
Then the empties rotation was reset, and I could work on the arm in a neutral position.
STEP 1: SubD modeling
STEP 2: adding details and using Booleans where necessary
As usual I kept on adding details and fixed minor bugs later (green arrows). All the modifiers are on. Details of the hands:
The cables were added after moving the arms into their final position. I used a Curve modifier in some cases, and in other cases I just made the cable geometry using the BezierCurve Bevel option (depth/resolution). It’s indeed better to make custom shapes for cables but the poly count goes pretty high this way. Clamping the cables, but not too tightly to allow motion, is also a good thing to consider.
Originally, I was just thinking to make a white material but finally I figured out that I had so much geometry that details from textures were not required to make it look complete.
I think it’s a very cool point to push the geometrical details that far: each detail really exist as actual geometry and therefore you just have to apply different materials to them. I simply applied the Principled BSDF shader, and later added some scratch and grunge maps over it to break homogeneity and increase realism.
In total, there are about 6 different materials. The hardest part was to find some good colors; it is a critical step in making artwork and I'm not so good with color matching. I tried a bunch of colors but I decided to stick to white-yellow-black which calls to mind typical industrial colors. This is not a military bot so I thought it would be fine.
Here is an example of the white material used for the shell. Scratch maps from Poliigon.com added in the Base Color + Roughness + Normals channels.
Lighting was made with a simple HDR! I also added a rectangular light in front of the robot to soften a bit the shadows in some areas. Later I added the headlights of the robot which also produce bluish light. The HDR I used is a studio HDR with just some rectangular lights distributed 360° around the model. I tried some more dramatic lighting HDRs but I thought it would be better to avoid areas in dark shadows to showcase the modeling.
Using Cycles I adjusted the materials, the cameras, etc. When it starts to look good in the viewport is usually means it will get even better after a render! It goes without saying that Color Management is set to Filmic, High Contrast look and slight correction on the exposure/gamma. Who does not want a better colors dynamic range on a render?
In the Blender compositor I only added the Glare effect, fog glow type, not too strong.
The headlights were creating a nice reflection on both the shell and arms:
Well and that’s it guys…
Then it was just about rendering all this. The post processing was made in Lightroom for simplicity (exposure, adjusting colors, add a light film grain and vignette effect)…
So yes, we can create stuff without detailed concept artwork or draft I believe. What matters the most is to get the ideas, the concept really. Sometimes, only four major ideas are enough to get something interesting both technically and artistically. Of course, here we are talking about robots and hard surface things, where you don’t have the same requirements for proportions as a character, for instance.
And well, sometimes, on the fly, more ideas are coming too!
The workflow is almost completely non-destructive so you can change a lot of secondary/tertiary details. Some may argue that the geometry generated by the Boolean workflow is questionable and that is true. But I think that for 3D concept art it is perfectly acceptable and that most of those micro issues won’t be visible.
I started Blender six months ago but I have some (too many) ideas for my next projects… Don’t hesitate to check out my ArtStation page.
I hope I can build an acceptable portfolio in the next six months and find some work to do. I am also open for collective work.
About the Author
Kenji Aito, 3D Artist