Creating Animated Robots in Maya, ZBrush, and Unreal Engine

Denis Daraban takes us through the process of creating the robot army all the way from creating basic shapes in Maya to texturing in Substance Painter and rendering inside Unreal Engine, explains how to make baking quick and easy, and shares some other tips on optimizing the process.


Hello, my name is Denis Daraban, and I am a CG Generalist from Balti, Moldova. I’ve finished such courses as the online "ZBrush course" created by Nikita Tabatchikov and the "3D Sculpting course. Anatomy for characters in ZBrush" by Ilya Tyomin.

The idea of creating robots came spontaneously. I wanted to practice hard-surface modeling to test a new pipeline, which was new for me. And that’s exactly the topic I will talk about further: the idea of creating a robot that would catch the viewers' attention. So, I took the concept art created by my friend, Eldar Safin.

I thought it would be great to use it to make something of my own. I took Eldar's work as a reference, just like it is for many other works created by other artists. I also love Droids from Star Wars. And there were so many ideas that I realized that I wouldn’t be able to do just one. So everything I needed was to sit down and work on them. For that purpose, every single minute of my free time was devoted to creating art. I asked Andrey Panchenko and Konstantin Golubkin for advice several times.

Getting Started With Etasphera05

So, finally, let me introduce you to this pipeline and explain how I made my mechs as an example. Let's start. You will need ZBrush and Maya or another similar polygonal modeling package such as Blender, 3ds Max, etc. As for me, I did it in Maya. The first step is blocking or looking for nice shapes and interesting silhouettes, testing ideas, because not all of the ideas are as good as they might look inside your mind. And that's okay! So, I did the basic blocking in Maya not worrying about the topology (N-gones, etc.). 

After blocking the main shapes and proportions, I checked how it would all move in the future. And Maya has an excellent HumanIK tool for this purpose.

At this stage, you can check what needs to be corrected, primarily in the joints. 

After making several improvements and corrections, I started to crease the mesh parts to see how they would work being smoothed.

At some places, I added edge loops, so that low poly and high poly were close enough to the same shape. I also carefully checked that there were no N-gones, because of ZBrush which works only with quads. At this point, the large and medium forms were done, so the only thing left was to add nice and small details to a mech.

I created everything in low poly with the crease tool (ZBrush supports the creases made in Maya) using the GoZ plugin I transferred to ZBrush. Oh, by the way, I put everything in one folder. ZBrush has a great tool called Live Boolean. And that's how I did all of the detailing stuff. There are two steps here: the first is to create the high poly after using the Live Boolean. The second stage is to create a low poly mesh right after.

Then comes the process of creating high poly with details. First of all, enable the Dynamic Subdiv.

The next step was creating meshes which I would subtract or add to the main surface.  

You can add boolean meshes in Maya, or you can create new ones in ZBrush. It's just a matter of convenience. So, when I was finally satisfied with the result, I made a high poly for each item. After that, I converted them into DynaMeshes and ran a Smooth brush over the edges so they were not that sharp and would bake well creating a nice Normal map.

The next step was to create a low poly mesh by doing exactly the same thing but without the Dynamic Subdiv.

And here we go, the low-poly model was ready. Almost ready, it still needed to be cleaned up due to completely unnecessary triangles. So I exported it to Maya and cleaned the topology there. 

UVing the Model

High-poly and low-poly meshes were ready. The next step was the UV. I set the smoothing of the normals of the material to 180 degrees in material settings. I applied hard edges where I needed to use them to make cuts on the UV surface. On a hard surface, it is important how the low poly meshes will shade because you don't want any strange gradients in the baking process. 


I usually bake using Marmoset Toolbag. Just send high-poly and low-poly meshes to Marmoset and it will do most of the stuff for you. 

I just choose the desired settings and click "bake".

The weapons were made using the same method.


Next, I send the low-poly mesh to Substance Painter with all maps baked beforehand. Before texturing, I collected references of metals so that I had something reliable. Next, I either create materials myself or take standard Substance smart materials and rework them. Sometimes I take base textures from Megascans. Since I wanted my robots to look similar, I made the smart materials for my purposes and modified them a little, and then applied them to each robot.


For the presentation purpose, I wanted to make a short video. Since I'm not an animator or a rigger I used the standard Maya HumanIK rig. For creating animations, I retargeted using mocap, but I had to change it significantly for each robot.


The character I’ve made was rendered in Unreal Engine in real-time because I like this game engine. As the purpose there was to render the character at the highest quality possible, I made some adjustments to all of the assets. First, texture mipmaps and compression were disabled.

I used 16 bits per channel PNG textures so as to have the possibility of displaying more details, except base color textures, once they were in sRGB color space I had to use 8 bit. 16 bit doesn’t sample the right colors.

No RTX or other methods were used to calculate real-time raytracing during rendering.

Here are my post-process adjustments.


I like this pipeline of creating a hard-surface model, it creates both high-poly and low-poly meshes at the same time. It's much faster than working with Subdiv models (no need to do all of that dull retopology stuff).

Denis Daraban, 3D Artist

Interview conducted by Arti Sergeev

Join discussion

Comments 3

  • Daraban Denis

    In Zbrush, I detail with a Boolean and get high-poly and low-poly. Then I exported the low-poly into Maya and cleaned up the topology there.  I bake in Marmoset because it has a dynamic cage and can paint Skew.


    Daraban Denis

    ·a year ago·
  • Anonymous user

    so u import your blocking into z brush , subdivied it and use boolean to do detail , after u finish , u just lower your subdiv level to get you detailed low poly ?


    Anonymous user

    ·a year ago·
  • Lemasters Dennis

    So you did all of the work in Zbrush twice? One with DynaMesh turned on so you get a nice high poly model, then one with just the models from Maya that you made or did I miss something? Also why go to Marmoset to just bake the maps when you can bake them in Substance Painter is Marmoset better at baking maps then Substance?


    Lemasters Dennis

    ·a year ago·

You might also like

We need your consent

We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more