logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_loginLogIn

Breakdown: Witch & Her Spectral Cats Made with 3D Tools – Part 1

Fernando Aguilera Reyes showed the modeling and texturing of the Morning Witch project, sharing tips and tricks for working with ZBrush.

Introduction 

Hello! My name is Fernando Aguilera Reyes, and I’m a 3D artist with a main focus in Feature Animation. I have worked as a modeler, texture, shading, lighting, and comp artist. Some of the shows I’ve worked on are TMNT Mutant Mayhem, Smurfs (2025), and Disney’s Iwájú.

Regarding how I started in animation and how I got into feature animation, it is an interesting story.

I studied animation, but I was really more interested in illustration. What really got me into 3D was not so much animated movies or video games, but rather illustrators and artists who used 3D as their main medium. Some of my favorites still are:

Grand Chamaco

Antoni Tudisco

Carlos Ortega

Adam Martinakis

When I was studying animation, I was often told that to make a 3D render, you needed a big team. Seeing the work of these artists and realizing that each piece was made by a single person was inspiring. It pushed me to try and do the same. Here are some of the renders I finished after graduating from college.

1 of 2

Now, as is obvious, my level was really low, and no studio that used 3D wanted to hire me. For my first year and a half, I worked in any job or contest that needed an illustration or design, while improving my 3D abilities with new projects and watching lots of tutorials from Digital Tutors.

Me, super happy that I got to do a render that was used as decoration in a design event. Totally not copying Antoni Tudisco’s style

Me, super happy selling renders and illustrations in a street art bazaar. Ignore the ZBrush cube in the first photo

Some renders I made for a fine arts contest and totally not copying Adam Martinakis

After some time, my renders were still very amateurish, but they started to get better reception.

A render I made in 2015

My biggest professional accomplishment: a bootleg t-shirt sold in the metro station of Mexico City

My second biggest and most recent professional accomplishment: a bootleg face mask I found during the pandemic

These kinds of small wins gave me the confidence to start applying to 3D studios and other 3D-related jobs again. I got my first opportunity in a design/infomercials studio and as a teacher. I had more opportunities during 2015–2017, and all of them told me the same: you don’t have a lot of experience, but you show potential; you show that you really love doing 3D.

During those years, my goal was to keep making personal renders on the side, learn as much as I could from my jobs, and send my renders to any studio that needed a 3D artist (my jobs were less random during this period). It was in 2017 that I finally got the opportunity to work on my first feature animation movie in Mexico at the Huevo Cartoon studio. In later years, I moved to Montreal to work at Cinesite.

I kept doing the same thing, making renders, but now with more direction than before. At Huevo Cartoon, I was able to learn and experience real production workflows, which gave my renders a more professional direction. I was still making personal renders, but now I could focus them on specific departments, whether modeling, lookdev, or lighting/comp. With this approach, I was able to move between several departments both in Mexico and Canada. Every time there was an opening in another department where I had renders to show to apply, I used the opportunity. I still do this to this day, while trying to keep the fun as the main focus in my personal work.

Morning Witch

I normally like to work on several projects at the same time, mostly thinking of special things that I would like to add to my portfolio, such as characters, environments, lighting scenes, and shader experiments.

All of these projects (except the Dinosaur) were planned around the same time

Last year, I wanted to get back into modeling since I had been focused for a while on look development and lighting. At the same time, I also wanted to experiment with NPR shaders. I had explored these workflows in my last job, and I wanted to see if it was possible to achieve something similar with a simpler pipeline, using the tools I already had: Arnold standard shaders in Maya, ZBrush, Nuke, and Substance 3D Painter.

I picked simpler scenes like Ramen, Freg, and Owl Girl to test the shaders and gradually increase the difficulty in both modeling and texturing. The other projects (except for the Dino) were selected with the idea that if the NPR shader tests didn’t work well, I could still finish the scenes with a more traditional rendering style. Either way, I would end up with strong portfolio pieces.

The Dino project was the only one picked recently, just to take a break from working only on big, complicated scenes.

SimzArt original piece

Something very important is that every project I choose for a render or study is based on the work of an artist I really admire and from whom I want to learn.

The Morning Witch is based on an illustration by SimzArt. I really love the theme he often explores, drawing witches doing daily and mundane activities. He creates very relatable scenes but always adds tiny details of magic (literally and figuratively). The hardest part of picking this scene was that he is a very prolific artist, so I often felt tempted to start a new render based on his art while I was still working on this piece.

Now, in terms of my portfolio as a 3D artist, I wanted to practice and learn the following:

  • This scene has lots of elements, but they are not overly complicated. It helped me practice my modeling fundamentals in both hard surface and organic modeling. It also served as preparation for a bigger scene I want to work on in the future with a similar vibe.

  • In terms of lighting and shading, what caught my attention is how well this piece works as a whole. The character is the main focus, but the scene succeeds because of all the small details that are well executed, balanced, and combined. You approach a piece like this by paying attention to every detail, but without the mindset of making each asset perfect on its own. The goal is to make everything work together. In other words, I couldn’t just make the girl model perfect and be lazy with the environment, or the other way around. I had to focus on the big picture.

  • In terms of NPR shaders, this render was tricky because there are no gimmicks. There is no heavy paper texture, watercolor splashes, or exaggerated brush strokes. The illustration works because of its incredible use of color and contrast, the good use of contour lines, the interesting shapes, and subtle details like the scattered dots that give it an organic feel. It only relies on strong fundamentals.

  • Lastly, even though this illustration was not made as concept art, it gives you everything you need in terms of modeling, texturing, shading, lighting, and comp. Most of the time, I was able to work directly from the drawing since everything is very well defined and works clearly.

Composition

Early blockout: exploring how much I can push the camera focal length

The composition work was pretty straightforward since I already had a strong reference in Simz’s piece. The most important step was to make the scene exist with simple objects, even meshes from other projects. Having a human model is super important for scale, since it helps measure the objects in the scene and also ensures the camera is placed well for the viewer to appreciate the facial expressions. Once the simple sketches were done, I started testing focal length to see how far I could push it.

Something important to keep in mind is that the focal length in the original drawing is very exaggerated, which creates interesting silhouettes and angles. A perfect translation to 3D was not possible without skewing some geometry and using optical illusions. If you look at the first image, you can see I was matching the silhouettes of the appliances and the room, but objects became distorted the closer they were to the camera (see the cube selected in the front). In the end, I sacrificed a bit of the cool angles of the 22 mm focal length and went with something more standard at 35 mm.

Modeling

Environments – Hard Surface

My modeling work is done in Maya and ZBrush. The environment mostly uses a Maya workflow, with some organic assets like the skull and wax done with a mix of both programs. Most objects are simple, so I modeled them directly in their final scene position. One of the tools that helped me a lot was the 2D Pan/Zoom attribute, which lets you work on close-ups of the camera without moving it or changing the focal length.

By pressing the highlighted button or the checkbox inside the camera attributes, you activate 2D Pan/Zoom.

After that, you just need to adjust the Pan and Zoom parameters. My goal here was to place the camera so I could work on the frying pan asset.

Once the main camera image plane was activated, I had the reference on top to match the asset, while using a normal perspective camera in another panel to move freely.

As you can see in the image above, not every object matches the art perfectly. I normally place the objects according to the drawing, then adjust their scale and position to make them work in 3D space. If I tried to replicate the silhouettes exactly as they appear in the drawing, I would end up with distorted objects all over the scene.

Organic Objects

For organic objects like the girl, the cats, and the skull, I usually start in ZBrush, blocking out symmetrical parts so I can do a quick retopo later in Maya. I like to practice character retopology in all my scenes to keep the topology muscle strong.

1 of 2

The objective of this pass is not to make the character perfect. Since the reference uses a difficult camera angle, it would be impossible to sculpt everything in T-pose and expect it to match. What I need is a simple base that captures the overall proportions and style of Simz’s characters. Once placed in the scene, I can push it further.

I add the reference image to the Spotlight tool in ZBrush and start adjusting the pose, silhouettes, and overall shapes. I aim for a middle ground that works in 3D but still keeps the important silhouettes from the art.

In the case of the girl, only the body was done symmetrically. The hair and shirt are chaotic elements, so they are much easier to work directly in pose. For the cats, only the heads were symmetrical. For the skull, I omitted the candle and wax.

1 of 3

For more complex organic elements like the hair, my workflow uses DynaMesh, Sculptris, ZRemesher, and Dynamic Subdivisions. A common issue for beginners in ZBrush is working everything with regular subdivisions, which quickly becomes heavy and hard to manage. Dynamic Subdivisions are like Maya’s smooth preview (pressing 3). This lets me sculpt organic models in ZBrush that can later work in Maya without displacement.

Normal geo

Same geo with Dynamic Subdivisions on (press D). To go back to normal geo, press Shift+D

My ZBrush workflow for hair looks like this:

Create a sphere with the Insert Sphere tool and separate it into another subtool

Using the SnakeHook brush with Sculptris Pro activated, extrude the sphere until it takes the shape of the hair

Turn off Sculptris and use DynaMesh with low values to start flattening and shaping it more

Use ZRemesher with a low value to get cleaner geometry. My focus here is to clean up silhouettes so the hair does not look like it’s melting

I repeat this workflow for other complex meshes in the scene. Normally, if the object is very important, will be animated, or needs very clean UVs, I would retopologize in Maya. But for this scene, the topology works fine for the level of detail since nothing will be animated.

Another example of this workflow

Tips and Tricks

After everything, here is a small list of tips I mentioned:

  • Use 2D Pan/Zoom to match the environment closely to the reference.
  • Only work in T-pose for elements that would be difficult to retopologize once posed (human bodies, faces, etc). Do not focus on making them perfect. When posed, you can push the appeal.
  • Do not work on all your objects with standard ZBrush subdivisions (Ctrl+D). Use Dynamic Subdivisions (D and Shift+D) to sculpt as if you were in Maya.
  • ZRemesher combined with Dynamic Subdivisions is an excellent way to handle complex meshes in ZBrush that fit easily into Maya’s subdivision workflow. These meshes would need adjustments for animation, but for static scenes, they work just fine.

Retopology & UV

My retopology and UV workflow is pretty simple! For retopology, I only use the basic Quad Draw tool in Maya. I take my decimated (or sometimes just normal) ZBrush mesh, set it as a live object, and then draw the topology with Quad Draw.

The green mesh means the skull is a live object, so we can draw our topology on top of it. When we move other objects in the scene, they will snap to the surface of the live object

For UVs, I use both Maya and ZBrush, but about 95% of the work is done in Maya.

As you can see in the image above, the sizes of the squares vary a lot between objects. This is because I group my UVs by material type, trying to avoid UV cuts as much as I can and based on the amount of detail the objects will need in the textures.

There are several ways to approach UVs. In VFX, you might end up with four UDIMs just for the face of a character. In video games, you try to optimize UV space as much as possible. I like to aim for a middle ground. I am not afraid of having lots of UDIMs, but I try not to go too crazy so I can keep everything inside one Substance 3D Painter scene.

This may look like a lot of UDIMs, but keep in mind this UV layout includes three cats, a character with hair, and an entire environment. For complex objects like tiles and hair, I try not to overdo it and keep them within 2-4 UDIMs. Going above that number makes it difficult for my computer to handle procedurals and tiles smoothly.

The hair is the only object I UV in ZBrush with the UV Master tool. I keep it simple: import the hair mesh into ZBrush, click Unwrap in UV Master, then export it back to Maya.

At this point, some UVs are done but not perfect. Some might be broken or oriented the wrong way. My main focus here is not perfection, but just to make sure of three things:

  • Enough resolution by splitting the geometry into different UDIMs.
  • All UVs flow in the same direction. This concept does not have visible hairlines or detail, but aligning UVs makes it easier to work later in Substance 3D Painter.
  • Fix only the bad cuts visible to the camera. Since this hair will not be animated, it does not need perfect UVs everywhere.

It ain’t much, but it’s honest work

There are still some imperfect UV cuts, but since they are hidden from the camera, we can move on to the next step!

Texturing

This is where the magic of the project begins! The first rule in NPR projects is deciding what elements you want to emphasize in the render and how you’re going to make them stand out. For this piece, I focused on:

Dots – Paper Noise

1 of 2

The entire illustration has a noisy paper-like texture that makes the drawing feel more organic. I applied this to all my materials and also kept it as a separate render layer for extra control.

My noise setup has two layers: one dark, one light. The noise is slightly bigger than in the original image so it reads more clearly at normal render resolutions.

Lines – Contours and Edges

1 of 2

Most objects in the illustration have contour edges and some interior lines that suggest volume and form (like the folds on the shirt).

Some of these will be handled later with aiToon and Nuke, but I added a dedicated pass for key edges I wanted to keep consistent in shape and size, without depending fully on aiToon. Examples: the cup rim, the wristband contour, and some shirt lines.

Toony Highlights, Specs, Shadows & Incidentals

1 of 2

The scene is filled with tiny stylized light specs, smudges, and shadows. These aren’t just for contrast; they’re a key part of the style.

For example, the yellow smudges on the coffee shop walls and the toaster, or the gray-blue ones scattered elsewhere. I’ll show a shadow example later. They’re very similar in approach to the specs.

By “incidentals,” I mean details unique to an object, like the scribble on the stove post-it or the girl’s tattoos. I like to keep these in separate render layers so I can adjust their look, animation speed, or even remove them if they aren’t working.

Process

For NPR assets, the really good thing is that almost all objects share a very similar process since the goal is always to push toward that “toon” look.

Painterly Base

Base color view and layers

For most of the assets, I start with a base color and then add two to three layers of painterly variations. The size and intensity of these strokes change from object to object. I always try to mix in some different colors instead of sticking to just one palette. A common mistake people make when starting out is going too monochromatic, which can look flat and boring.

Think of your textures like music: you don’t want to play the same note over and over. You want a chord, some variation.

My painterly base is made from a tileable paintstroke texture, a bit of slope blur, and, most importantly, some of my own brushstrokes painted on top. This breaks the monotony of tiling. You really can’t depend only on procedural textures if you want something that feels organic.

Mask view

Volume: AO, Curvature & Ramps

Mask view

This step works for both realistic and stylized texturing: adding a bit of volume always helps, as long as you don’t overdo it.

I use a simple ambient occlusion, a painterly tile to break the perfection, and often a quick paint layer just to fix things that look too rigid. The amount of volume depends on the object. For example, the frying pan doesn’t need much since it’s a small prop, but the body has a lot of volume work. You can especially see it in the reddish areas of the skin.

Dots and Lines

This is where I add the stylized details that will later be split into different render layers. The three layers I use for every single object are:

  • addNoise → light dots
  • multNoise → dark dots
  • Edges → contour edges and matte lines

The add and mult noise masks sit at the very bottom of my layers stack, and they don’t directly affect the rest of the textures at all. I save their mask information as an anchor point and use it later on my different materials.

To make the dot texture, I combine a Gaussian Spots procedural, Levels, and Grunge Concrete to break it up and make it feel more organic. I save that as a fill layer with the Anchor Point option so I can reuse it easily.

Going back to the layer in the frying pan material. You can see I have a fill:

I just need to go to my properties and change my fill color to the add noise mask I created at the bottom of my layers stack, which can be found in the anchor point section when clicking the grayscale box.

Edges are a bit more custom. For most inorganic assets, I rely on a curvature generator for the base, then I add a paint layer to clean things up, and a warp effect to keep it from looking too perfect.

Toon Highlights, Specs & Shadows

These layers are really straightforward. They’re mostly hand-painted details, stylized and fun. The frying pan, for example, has small highlight specs on the rim and one big stylized shadow painted across it.

Exports (Texture Sets)

I always export two sets of textures: one with all the stylized goodies turned on (dots, edges, highlights) and one that only has the painterly and volume layers.

This is super useful because I can keep a clean base material that looks more “normal” and then comp on top the stylized layers later on.

I also save two versions of my Substance 3D file: one with all the stylized layers (masks01 and 02) visible and one with them turned off. That way, if I need to re-export a specific texture, I don’t waste time turning on or off layers.

Extra pass: I also made an opacity texture to quickly handle the cats and glass materials in the scene.

Exports (Masks)

My most important layers also get exported as RGB masks for more control down the line. I divide them into three main groups:

Dots/Edges → paper noise and contour edges
Highlights → all stylized highlights and some shadows

Painterly → painterly + volume layers

Extras: Animated Light Pass

The concept has some extreme light shapes that are too stylized to recreate with normal Maya lights (unless you want to go wild with gobos and blockers). Since this was a major part of the scene’s contrast, I decided to paint a custom set of masks.

I painted three slightly different versions so that later I could play them as a sequence and give the light shapes a hand-drawn animated feel.

Main pass → controls the overall light shapes. If you notice solid colors that ain’t white on the edges, that’s because the three painted layers are stacked together(white parts) and there are some slight differences between each of them (colored parts).

Contour pass → just the outlines of the shapes. I keep this as a separate layer so I can add a little color bleed into the final render.

Lighting & Rendering

One of the most important tips I always give to anyone starting stylized rendering is this: set up your lighting the same way you would with normal shaders first. Stylized shaders usually don’t need as many lights as I have here, but it’s much easier to turn extra lights off later than to realize you need them and try to “fake” missing light info in Nuke. Better safe than sorry.

1 of 2

I try to match the values and light directions of the concept art. I don’t aim for a perfect match since the original image has local colors with different values, while I’m mostly working with one color. The goal is to get close enough while keeping the stylization consistent.

Here’s how I broke down my light setup:

  • Key → main light coming from the windows
  • Rim → a fake rim just for the hair
  • Incidentals → small light sources in the scene (in this case, the candle and the wand)
  • Incidental bounces → extra little bounce lights, since my incidentals don’t have indirects turned on
  • Fill → a big, soft light to lift the darkest areas
  • Bounce → one tiny bounce just for the shelf (it was way too dark)
  • Env → an HDRI light so materials always have something to reflect instead of just a pure black void
  • Env Flat → same HDRI, but with cast shadows turned off. In grayscale, it doesn’t look too special, but it creates something like a diffuse pass with a bit of volume. I use this to brighten really occluded spots in a way that feels more natural than just adding flat color
  • Indirects → not actual lights, just the bounces from lights with indirects enabled. I usually keep these off in low-res tests since they get really noisy
  • Emission → this one is key later. It’s just the shader’s emission attribute, but it helps flatten the colors in a way that makes the stylization work

As I mentioned earlier, only the Key and Env lights have their indirects turned on. Everything else in the scene produces no indirect bounces. This keeps my renders cleaner and faster at lower resolutions. Of course, if I wanted a realistic render, I’d need more proper bounce light setups, but since this project is going for a stylized look, there’s no need to stick to physical accuracy. Honestly, I’ve worked on projects like this where I didn’t even use indirects at all.

After setting up the lights, I make a render layer with my geo and lights and then render out a low-spec sequence. My sample settings look like this:

Please clap 🙃

Then everything goes into Nuke. My computer isn’t strong enough to handle heavy Nuke workflows, so I’m keeping it simple here. No Deep Images, no fancy Deep setups. Just plain EXRs with the passes split out, all merged together with standard merge nodes.

The fun part is that I don’t just split lights into their own passes; I also split each light into Diffuse and Specular. That way, I get some extra control later.

Diffuse produced only by the key light

Spec just from the key light

The Indirect pass tends to come out extremely noisy, so I leave it disabled for now until I do a higher resolution render later on.

Learn about shading and rendering in Part 2.

Join discussion

Comments 0

    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