logo80lv
Articlesclick_arrow
Professional Services
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
Order outsourcing
Advertiseplayer
profile_loginLogIn

Creating Mortal Shell-Inspired Tomb Guardian in Maya & Unreal Engine

Cosimo Bonechi showed the working process behind the Tomb Guardian project, explained how clothes were done in Marvelous Designer, and offered some tips on lighting and rendering.

Introduction

Hi, my name is Cosimo Bonechi, I am a 3D and VFX Artist, a kind of 3D Generalist. I think I started looking into this world when I was a kid, playing old games like Dune 2000, Diablo 2, StarCraft, and Halo with my brother. I was really young, so these experiences influenced me a lot. Growing up, I started playing with Blender and Photoshop, nothing serious, but it gave me a better idea of what to do with my life. Soon after I finished high school, I signed to the digital school Rainbow CGI's academy, which gave me a solid generalist base. 

Since then, I have studied a lot and worked on different VR and AR projects at Rainbow CGI as a 3D generalist, Godfall and Tony Hawk's Pro Skater at Art Bully as a 3D Artist, and for Batora: Lost Haven as a Lead VFX Artist at Stormind Games. 

The Tomb Guardian Project

I remember that I got inspired after I looked at the Mortal Shell artwork by Vitaly Bulgarov and the team. I really liked the high-poly result, so when I saw the artwork by Morten Solgaard Pedersen on ArtStation, I decided to try it myself. I started gathering some Mortal Shell references that I used later in the process and started cropping different areas of Morten's concept to better understand the shapes and silhouettes. When I started, I worked only with the Morten concept in Maya. I used mostly PureRef application over Maya while modeling, and at other times I used a custom camera with an image plane projected over the model on my second screen. 

Modeling

My workflow depends on the kind of shape I have to create. For all the armor parts that I consider hard-surface, I started in Maya, for the mask, I started with ZBrush, and for the clothes – with Marvelous Designer.

So for the armor, I started with blocking in Maya. I covered a base mesh to better understand the depth of some elements. Then I defined some shapes. I polymodeled it with simple shapes, then deformed it with deformers such as Lattice or Bend. It’s important to leave the geometry low and clean, sometimes I use the quad draw over the live surface mesh and draw what I need. It helps to also assign different colors to the meshes to match the concept. While modeling, the most important tool I use is the Crease Maya tool, which is faster than modeling with the support edge technique. 

One “hack” I use is a custom script that selects all hard-edge models that I can convert to Crease. So I made sure to harden the edges as well using the threshold soften/hard command or manually. This will come in handy later too. 

MEL script: 

  • ConvertSelectionToEdges; 
  • polySelectConstraint -m 3 -t 0x8000 -sm 1; // to get hard edges 
  • resetPolySelectConstraint; 
  • Then I add some final details and adjust a little bit. I used also the Maya bonus tool such as Curve to Ribbon and Curve to Tube mesh for other golden ornaments, which you can download from their website. I have no idea why it isn't already in the software. 

With the Maya model finished, I exported everything in the MA format to ZBrush for the sculpting phase. 

The MA file exports the Crease information to ZBrush. There are some differences between the two creases, the Maya crease has float information which means that you can slide the value of the crease itself from 0 to 1. In ZBrush, the crease has only integer information which means it just goes ON or OFF, even though you can control which level of subdivision goes OFF. So when modeling in Maya, with the smooth preview, be sure to have the full crease. 

In ZBrush, I dynameshed all single pieces with low density, subdivided them, and projected them to the creased geometry. Before sculpting, I projected some detail and pattern to the high poly. I used the "decal" technique, which consists of using a spline mesh with color embedded to project color to the high poly and then used this information as a mask (for inflating or other purposes). Remember to flip the V of the subtool before applying the texture to the vertex.

For the sculpt, I mainly used Standard, Move, Clay, Chisel, Slash, and Trim brushes and added some noise and grunge for micro detail. After this stage, I used a final layer of fine detail with ZBrush's Surface tool, with noise projected to the high poly UV (unfolded in ZBrush). I recorded all stages with the layer tool.

For the golden areas, I used an insert mesh with the curve function enabled and then used the Crumple brush to add noise.

For the mask, I first worked in ZBrush since it is more organic. I started by extracting an area from the base mesh, dynameshed, and then sculpted using a low-density mesh. When I reached a decent level, I sent the optimized mesh to Maya, where I retopologized it.

Then, I sent it back to ZBrush, subdivided it, and started to sculpt the final detail, using the same workflow explained before.

The face is part of the body that I edited during the final part of the project, and I made it closer to Morten's concept. 

Clothes & Weapon

In Marvelous Designer, I didn't use any complicated workflows, and the patterns are really simple. I worked with layers, first the internal bandage over the base mesh, then I hid them and moved on to the next one. 

For the correct simulation, I used proxy geometry, much simpler than the one I exported to ZBrush, which I animated to help with cloth compression.

I used a value of 10 for particle distance for the simulation and played a bit with the materials. For the low-poly version, I exported another, less-dense version that I edited a bit later. 

I imported the meshes into ZBrush and started to sculpt some folds with the Standard and Slash brushes. I used some fold textures that I generated in ZBrush with the "Grab Doc" tool from a simulated plane in Marvelous Designer for extra noise and added micro detail with the Surface tool. 

Afterwards, I textured the concept pattern in Substance 3D Painter and used it to extract nanomeshes created in Maya for detail.

For the weapon and the flail, I used the same workflow as the rest of the armor. For the flail, I modeled with radial symmetry, while for the weapon, I just mirrored some sides using the "Set Pivot/Clear Pivot Point" tool.

For the weapon holes, I created another decal that I used to extract a mesh which I subtracted from the dynameshed one. 

Retopology

Thanks to the workflow for the hard surface models, retopo was fast. I imported the decimated version of high poly in Maya and then adjusted and added some tris to the low poly to follow the shapes better. I used the hard-edge technique for most of the
model. 

For the UV, I also used Maya. With the same shared MEL script, I selected all the hard edges of the model and cut the UV. Then I unfolded and laid out, and made other adjustments as usual. The only important thing, besides optimizing the layout, is to use the same pixel density for all the meshes.

I messed up.

At this point, I started to do the initial bake to check for artifacts. I baked with the average normal check disabled since I'm using the hard edge technique and didn't need any cages. 

However, at this moment, when I started to play with the engine using the baked low-poly model, I noticed that I messed up some model proportions. I think one of the problems was focusing only on the micro detailing, and I should have sent the model to Unreal Engine and played with cameras earlier.

I sent the low-poly model to ZBrush and started to adjust it with the high poly itself. I used the Transpose Master plugin, which lets you use the latest subdivision level and modify all visible subtools together without merging them. It was also at this moment that I edited the mask to match the concept better and added other parts such as the eye and inner face.

Texturing

For texturing, I didn't use Megascans or similar resources, but I created a smart material that I then adjusted for each part. I start with a pure material fill layer, such as for "pure gold" and "pure iron", and then I begin to stratify other dirt layers, wear, and rust. 

Technically, I didn't do anything in particular; for the most part, I chose the correct noise and then edited it with some painting layers manually, adding some rough variation and rust where needed, working only inside the fill layer/folder mask.

For the clothes, I changed the shader properties to cutout and created a fast mask to erode the dress, then I used the anchor technique to give an easy emboss color. 

For all these parts, I used different references, but regardless of the PBR theory or other factors, the most important thing is the final Unreal result. So, don't focus too much on the Substance result.

In the low-poly model, before starting rigging, I created additional details for the clothes and the inner belt. I exported these parts to ZBrush and then used the Fibermesh tool on the edges to add more noise to the silhouette. I used a plane with two edges, not more. I tweaked the fiber a little bit and when I was satisfied with it, exported it back to Maya.

To optimize it a bit, I deleted all the mesh shells with an area smaller than a threshold, and for this, I used Maya's Cleanup tool.

Then, I projected the UV and the normal information using the Transfer tool and the world as sample space, from the dress to the fiber. I added a vertex color set that I used to override mask information for these planes.

Lighting & Rendering

In Unreal Engine, I started to set up materials. For the low poly, they are basic: I just used a Fresnel for the clothes (not using the cloth shading model). For the high poly, I used some noise projected with world position to add more micro and variation. I edited color, roughness, and normal itself. Also, I used a curvature function to add more detail. You can check it from Mark Serena's work.

Then, I started to pose the rig model. In the beginning, I was interested in doing a short film with it, so I fully rigged it, but in the end, I just did the concept loop and the turntable pose.

For lighting, it's important to study other works and understand light sources; even films are good references. For the single pieces and the high-poly render, I started using Vitaly Bulgarov's renders, and then I played with the rect, spot, and point lights, using an orange/purple fill light and a teal rim light. One rule that I feel always works is to use a warm fill and a cold rim, and it's important to use a low-intensity value.

For the concept pose, I used the lights to help me match the reference, so I used a lot more lights, and I also used light channels (in Unreal Engine, there are only 3).

For the engine version, I used UE 4.27 with ray tracing, but with GI and AO disabled. I also disabled the post-process lens flare and motion blur and didn't use any color correction.

Another thing I advise when rendering a portfolio piece is to remove the texture compression from the Color and ORM textures and remove the UV compression from the model. 

Using the Full Precision option will help avoid having some normal artifacts and weird stretching on the model (from 16-bit to 32-bit). In Substance 3D Painter, for example, the UV is not compressed by default (32-bit); that's the reason sometimes patterns are not displayed the same, in case you were wondering.

The VFX effect is a basic mesh effect, with some panner noise and flow maps that I masked with the V. I added some World Position Offset (WPO) with sine wave animation and then added some sprites with curl noise. You can see how much I didn't care about optimization.

For the render settings, I used the preset template available with the Movie Render Queue. To avoid noise in the image, it is important to disable anti-aliasing and use the spatial and temporal sample count. I lowered the samples to 4 & 4 and used 8 & 8 for the high-poly render; 16 is overkill.

For the wireframe, since Unreal Engine renders triangles and not quads, I use Maya, matching the camera with the Unreal one. I use Maya Hardware 2.0 as my render engine, which is basically a screenshot of the scene. Afterward, I make sure to set render settings and assign a white layer and a black material to the meshes. In this way, I can batch-render the shots and then composite them!

Conclusion

In the end, the model took me about four months, but I started it a long time ago. The first Maya file was created in August 2020, but due to work and other projects, I was able to finish it only last month. I wanted to change a few other things, such as using micro details in Unreal for metal/clothes, and add more fiber techniques, but I thought it was time to wrap it up.

Matching the concept was complicated, but it was my goal for this work to improve my skills. In particular, the chest armor part was really challenging, but I had fun framing all the areas together in Maya, and the most time-consuming step was the ZBrush one. I definitely wasted tons of time sculpting the character, and the most frustrating thing was the proportion issue realized in the end, but I fixed it in less than an hour.

I still need to improve a lot as a character artist, so I don't think I have the panacea for all ills. But personally, I think the key advice is to find a community to share the works with, listen to feedback, and be open to criticism, especially in the beginning. It is important to study other works and all aspects, including the lighting and the camera, because unfortunately, if the goal is to create a portfolio piece for recruiters or whatever, if you are not able to present your work well, it is time wasted. Additionally, I believe it is critical to aim to achieve the same quality as a senior's artwork and then iterate until that quality is achieved.

In addition to these guidelines, I can advise you to NOT make my mistake: if you're not going to sculpt a base mesh, be sure to use a scan, or otherwise, use a well-done base mesh. Don't focus too much on sculpting micro details and simultaneously model the whole body step by step. Detail only the areas of greatest interest, such as the face, etc., and for the rest, don't focus too much. Send the file to the engine, play with the camera often, and ask for other opinions before starting to sculpt details.

Thanks for reading the article, I hope I said something useful, and I wish you good work.

You can contact me through ArtStation or LinkedIn. Ciao!

Cosimo Bonechi, 3D Generalist

Interview conducted by Theodore McKenzie

Join discussion

Comments 1

  • Anonymous user

    This was one of the most helpfull breakdowns that I have seen lately. Also appreciated for the honesty about the failed areas.

    0

    Anonymous user

    ·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