Guy Shoshan talked step-by-step about the production of Mariachi, a character with strong Pixar's Coco vibes made in ZBrush, Maya, and Substance Painter.
In case you missed it
You might find these articles interesting
My name is Guy Shoshan and I’m a freelance 3D artist from Israel. I got into 3D art around 2016 while attending a course in game design. This quickly became an obsession and immediately after graduation, I joined a 2-year program at IAC (Israeli Animation College), focusing on modeling and texturing.
I had received my first couple of freelance job opportunities during my studies at IAC. Some of the companies I worked with include Snowball Studios and VOLTA Studio.
I also began working at IAC as a teaching assistant, and shortly after graduation I started giving lectures about texturing with Substance Painter, and cloth modeling with Marvelous Designer.
In 2019, I was approached by MPC Film and accepted an offer to move to Montreal to work with them as a CharacterFX artist. My main responsibilities were to deliver cloth and hair simulations, as well as other character finishing tasks. It was definitely a challenge as I had little experience in that field beforehand, but MPC welcomed me very kindly and I enjoyed my time there very much, even when it was challenging and demanding. I most certainly learned a lot more than I could ask for in that period, and it's in no small part thanks to the work of my amazing colleagues and supervisors, who managed to be both super professional and fun and outgoing.
This was a great experience both professionally and personally. During my time at MPC, I got to work on projects such as the 2019 Visual Effects Oscar winner ‘1917’, ‘Maleficent: Mistress of Evil’, and a few other cool not yet released projects I cannot discuss at this moment. Better yet, I got to meet and befriend some of the most talented artists out there. Unfortunately though, my job there fell victim to Covid-19, so I went back to freelancing for the time being.
Mariachi: Start of the Project
This project started almost impulsively. I would never categorize myself as strictly a сharacter artist, but when I stumbled upon this amazing concept by the talented Nicolas Bara I just told myself, ‘alright, this is your next project’. It was a pretty tough and long process as I had been still adapting to MPC’s schedules at the time I started it, working long hours and having little energy to do much else. Nevertheless, I chipped away at it slowly, taking big breaks in between phases until I ended up with this final result.
As far as references go, I was eyeing the concept art as the general goal in terms of the overall look but opted for somewhat cleaner and smoother shapes in certain areas and rougher, more detailed textures.
I began by gathering references for most of the pieces, and explored ideas in terms of the materials, level of detail, and overall style I was going for. It was difficult finding references for the exact thing I had in mind for some of the pieces here, but there are always images with interesting ideas and details to borrow for specific spots, for example how the texture can be broken up, wear and tear, etc. So that’s something to always keep an eye out for, even if the overall image doesn’t match your idea of the entire piece.
Once I had enough material to get started, I picked the main images I wanted to work from and put them in a PureRef scene. This eventually ended up being my main reference sheet:
An important part of starting a project for me is to really analyze the concept art I’m following. I think it’s generally good practice whenever starting a new project to deconstruct its elements and think about how to tackle each one. I find it very helpful to know what the major challenges are going to be and to form a step-by-step road map before actually starting to work. It saves a lot of time in the long run in preventing issues that would arise from a lack of proper planning.
I started out by blocking out every element in Maya, with the intention of later refining everything in ZBrush. It was particularly important to get the curves and silhouette right from the get-go since it’s such a big part of the appeal of this character. The main goal here was to get something rough quickly to work from. For me, doing this in Maya is a very comfortable way to get rough shapes in place and to make quick adjustments while exploring how each piece is placed and shaped in relation to everything else, but this can just as easily be done in ZBrush. At this point, I also don’t care about things being welded together or other more technical aspects of the modeling process.
It was relatively quick to create, gave me some feel of the character, and helped me get an idea of how to move forward. This went into ZBrush, where I Dynameshed pieces together (teeth with skull, fingers with palms, etc) and began sculpting and refining the shapes further. Some of these parts were left out to be remodeled in Maya, it really just came down to personal preference for each piece I had to deal with. For example, I’d felt it would be more comfortable for me to go back and create a refined model of the banjo in Maya, so in that case, I decided to model it in Maya and keep ZBrush for smaller details at later stages.
In terms of brushes, with the exception of the excellent Orb brush pack, I usually stick to the basics - the standard brush, clay buildup, trim dynamic, dam standard, polish, flatten, etc.
Initial blocking non-welded mesh to final rendered mesh:
Once I was done with sculpting, I went on to retopology. For this, I used the standard Maya Quadraw tools, with some light use of the Shrink Wrap deformer, which I find to be very handy in certain cases for retopology.
The unwrapping process was also done using Maya’s unwrapping tools, which are great for automating a large portion of the UVing process. Straightening out the clothes UVs was a bit of a pain, but with some help from the Straighten Shell tool and some manual adjustments, it fell into place. Once I was happy with my UVs, I used the UV Layout tool to get a nice head start with optimizing my shells.
Substance Painter was the main software used for texturing purposes here, with Photoshop being used for final touches. The process involved a lot of trial and error and many iterations. I usually bring over my models into Substance Painter with some automated UVs when I feel I am about 90 percent done with the modeling/sculpting stage. This is just to create a very basic smart material, usually, just a base color and some break up layers with generators, to see how the models bake and receive the material. For me, it’s a good way to become aware of all the necessary tech fixes I would have to do for texturing and to solve those issues as I’m finishing up the modeling process. Once I’m happy with the result, it’s very easy to replace the models inside the Substance Painter scene and go deeper into texturing from there, since it’s all still procedural at this point.
I spent most of my texturing time looking at the Base Color channel. This helped to make sure there was enough interest in terms of coloration and contrast in the color maps independently of the other channels and lighting. My general workflow, whenever I use Painter, is to start by creating a base color layer with a base roughness value. From there I break up the color and roughness maps with fill layers and generators, going from big details to small. The Mask Editor is usually my go-to generator as it gives me the most control, but I also like to use dirt, edge wear, and light occasionally, depending on the situation. Once I feel like I’ve achieved what’s possible using procedural methods, I start painting by hand, editing, and refining things manually.
The bones were a lot of fun to texture. I looked at frames from Pixar’s ‘Coco’ for inspiration but also wanted to take a bit more of a rough and dirty approach with it, so I added some cuts, scratches, and other imperfections both in the ZBrush sculpt and in the heightmap inside Painter.
Once I was done texturing the bones, I connected the maps to a VrayFastSSS2 material to get a subtle scattering effect going.
For the clothes and especially the poncho, I wanted to have a nice soft look. My good friend Alex Maslinka, a Lead Shading Artist at Snowball Studios, helped by sharing her method of using a VrayFalloff node to achieve a smooth color transition that’s based on the object’s faces’ angle in relation to the camera.
Here’s how it’s set up in the shader:
The second image shows how the Mix Curve is set inside the VrayFalloff node, which dictates the behavior of the falloff.
Here’s a quick demonstration of how to get different results with the curve, using a simple Vray Material coupled with a VrayFalloff node with 2 colors:
At the end of the texturing process, I also checked if adding a Baked Lighting Stylized filter in Substance Painter can help push the textures a bit more, which was mostly the case here. This is an easy way to get a bit of a gradient and some baked shadows going, which I think can really help sell the overall look of a stylized piece. This should be used carefully and it is very dependent on the goal of the project, as it can create a conflict in different lighting setups. I usually keep it at a relatively low opacity, and in the case of this project, it was kept below 40%.
Here’s an example of how it affects the base color channel:
Another cool little trick that’s particularly useful in unlit environments but can also push renders like this quite a bit (although it is very contextual) is to use the information from your normal map and to apply it to your color map. This can easily be done by importing the normal map into Photoshop and overlaying its green channel on top of the color map.
Here’s a quick example of a before and after GIF, using the banjo maps:
As you can see, the details from the normal map now really pop and are very emphasized in the color map. The overlaid map in this GIF is at 100% opacity for the purpose of demonstration, but I usually keep it at around 50% or even less. Using levels to avoid some washing out in the color map may also be needed.
For rendering, I chose to use Vray. The lighting setup for this scene was made exclusively with Vray area lights. I didn’t follow the concept art as closely in this aspect so I had to experiment quite a bit to hit the mark. Generally speaking, I like to set up a rough first pass for the lighting in my scenes early on, to have a better sense of the overall feel of the piece as I work.
I wanted to emphasize the curves and silhouette of the character, so getting that continuous thin rim light going along the silhouette was important. With the way the poncho and some other parts get in the way, I ended up adding a dedicated extra rim light source for the legs. Additionally, I set a subtle area light on top with a high directional value to get a subtle feeling that there’s a spotlight aimed at him. My lighting setup for this scene ended up looking like this:
The backdrop is a simple polygonal slope, coupled with a ramp texture for the color. To complement the idea of having a spotlight feel, I created a gradient with a bit of a wave. Here’s how it’s set up:
This is of course the final result, but it has been adjusted many times to complement the changes in the textures and lighting made throughout this project.
Final touches with Photoshop were not very heavy but definitely helped to make everything pop. This was done with a combination of some curves, levels, color corrections, and a bit of sharpening using the Smart Sharpen tool. All of these were applied very subtly but these small changes add up to a big difference in terms of presentation.
To conclude, here’s a GIF showing how this guy evolved with time from blocking to final render. Definitely enjoyed working on this dude and learned a lot from it!