The 8th Dwarf, Snatchy

First time participating in a FlippedNormals challenge, so I am excited!

I enjoy fairy tales, especially old ones, so I gave some thought to what kind of character I would create.
My first thought was to create a character with a mix of two fairy tales, mainly Snow White and the Seven Dwarves and Rumpelstiltskin.

I wanted to bring the kind of sinister tone from the imp in the fairy tale of Rumpelstiltskin…

… along with the cheekiness from the dwarves in Snow White.

So I came up with the idea of another dwarf for the Snow White universe:

The 8th hitherto unknown dwarf, Snatchy, who takes gleeful pleasure in stealing the other dwarves belongings, their diamonds from the Dwarf’s Mine, and other trinkets and valuables.

To get more ideas and inspiration, I scoured for cool fantasy characters, and one of my favourites I came across was the Gnome Thief, by Filipe Pagliuso.


I asked Filipe if I could use the concept and he very kindly agreed!

The concept Filipe made is so great, so I aim to be as accurate as possible.
Since I am not a great character designer and more of a character modeller, I decided to base my character on this artwork specifically.

I might make a few changes or add some things to make it fit more with my idea of “Snatchy, the 8th Dwarf”, but we will see later on.

For now, that’s all folks!

9 Likes

So I finished the base sculpt of the character. There are a few parts of the clothes which proved a little more tricky to do in ZBrush - mainly the paned shoulders and coif.

Paned Coif

I started by modelling the panes in Blender on a single plane to get the perfect shape.

Using an array modifier, I made them repeat seamlessly. I didn’t worry too much about poly count as it would be a high poly anyway.

Using a bend modifier, I could get the basic circular shape that would go around the neck of the character.

After filling in the centre and with enough subdivisions, I could then apply another bend modifier that would sort of slouch the piece over the back and front of the character.


Paned Shoulders

For the shoulders, each of the panes had to have raised edges, so I modelled a simple pane in a straight line.

Using a curve modifier, I could get the smooth curved shaped at each end of the panes, so they could tuck nicely into the circular sleeve bit.

With a pivot in the centre of the circular sleeve bit, I could duplicate and rotate each individual pane 30 degrees until all were filled in.

After importing these new pieces into ZBrush, I tweaked them a little more according to the concept.

4 Likes

Thanks for sharing this, just learnt a new technique

1 Like

Wow! This looks great!

1 Like

Cool, glad it was useful!

Thank you!

Another cool part of the character that needed another approach, are the lots of support ropes that help hold together the sack filled with various stolen valuables.

The easiest way I could think of creating them, was with the use of bezier curves and arrays in Blender.

I will probably go back and forth between tweaking the ropes to adjust their appearance of tension around the sack, and to tweak the sack itself for indents made by the rope.

The simpler tube-like red ropes are supposed to be more of a cotton-made rope, while the bigger coiled ropes are supposed to be a sort of messy hemp-made rope.

Creating Coiled Ropes

To start with, I created the basic shape that would be at the end of a rope. This would be basically 4 circles, since each rope ends in a circle.

I then positioned them in a cross-shape with the pivot in the center.

rope 4 _ adv crosscircle

The rope had to be a little less dense in polygons to be able to stay within the tricount limit of the challenge, so I deleted vertices until it was low poly enough.
rope 4 _ adv crosscircle1

I then applied a Screw modifier. I tweaked the settings until I got something I liked. The important thing is that the angle setting of the Screw modifier has to be 360 degrees, so the shape wraps around itself for one segment.

rope 6 _ settings360 W

With a rope shape finalised, I could then do the UVs as well. I did this because the rope texture will be the same across the entire rope.

Here’s how a single tube in the coiled rope was layed out on the UV map:

Now that a segment of the rope was ready, I could then apply an Array modifier. This modifier simply repeats a segment seamless with an offset from the original, with however many segments you need.

This is useful because this replaces the need to add segments manually in edit mode, and it works seamless with other modifier such as the Curve modifier.

With a Curve modifier applied finally, the rope can then be used however you like.

If more length is needed, simply extrude the bezier curve and add a segment through the array modifier.

3 Likes

Hey nice tutorials :smiley:
I was just thinking about how I can model the ropes on my character

1 Like

Cheers, glad it was useful! :+1:

Some more detail sculpting. It’s been tricky to make more detailed skin for this character since the concept doesn’t really show super close-up details of the character, but I’ve been enjoying sculpting those anyway. The detailing was also a bit tricky because of the anatomy of the face.

Dwarf-type characters usually have a big nose that takes up a lot of real estate on the face, so wrinkes and such have to be affected by it in some way. In my case I mostly went by the concept and a couple refs that had heavy wrinkles with orc and goblin-like features.

The beard and eyebrows are basically just as a guide for the volume of the beard. I’ll be creating hair cards for those later.

2 Likes

Just a quick retopology update. With the sack included, the character is now at 83k triangles, so I still have a fair amount to add the beard, including other bits and bops. Everything was retopologised in Maya - love the quad draw tools!

I wanted pretty clean topology, so everything was retopologised by hand rather than using something like ZRemesher in ZBrush.
ZRemesher can be effective sometimes but I thought I’d brush up on my retopologising skills again by making clean topology with nice loops.

The ropes were made from curves, so the topology is a little denser.

2 Likes

Texturing Update

Been chipping away at textures in Substance Painter. There’s still a few things to tweak which I will get back to later, but I will leave it for now while I get on to making hair cards.
I’m planning on using XGen to make the hair/beard textures, which I have never used before. I’m interested in learning it so seems like a good opportunity to combine it with.

Some of the more laborious parts of the model were the sack and the skin, including the tattoos.

I’ve only just noticed now while posting these screens that there’s a missing patch on the upper part of the sack :dizzy_face:

In any case, here are some screens from the texturing I’ve done so far.

1 Like

I prefer to retopologize by hand too. You get a cleaner topology and have a lot more control of the polycount. :slight_smile: I think for the ropes, just a cilinder shape would work for the lowpoly model. I’d count on normal map for the twist details and save some polys for the beard, like you said. Good job so far! :smiley:

1 Like

Definitely! Oh yeah, good shout! I think I’ll remake the big rope to a tube if I’m struggling on the tricount for the hair, but if I can manage it I might as well use the polys allowed instead of making it too lowpoly. Thanks! :+1:

1 Like

Wanted to share a little bit about some of the texture work.

Tattoos

A major feature of this character is the tattoos on his face and fingers. I knew I wanted the tattoos to look like they were under the skin rather than painted-on and also aged, so I had to find some good reference.
Here are a few of the tattoos I wanted to emulate the look of - mainly the faded, blurry and spotty look.

I started by sketching out the facial tattoo using a dark saturated gray colour, referencing the concept as best as I could. For this base layer of the tattoo, I painted directly on the mask. I would only use the Diffuse option since the tattoos didn’t need any height, specular or gloss information.

There were a few places were the distances between the symbols didn’t match so well since my 3D intepretation of the concept doesn’t add up 1:1, however, I made up a few symbols as I went along to compensate.

After finishing up the base layer on both face and hands, I added Levels to fade out the tattoo a little bit, and Blur to get the smudgy appearance around the edges.

5

Next, I duplicated this Tattoo layer and changed the diffuse colour to a slightly darker gray. This new duplicate tattoo layer would be used to add darker splotches and more randomness.
In this same layer, I then added another Fill and switched out the grayscale with the Dirt1 alpha texture.

dirtrand

Easier to spot and adjust the random splotchiness when viewing the Mask.

If more tweaking was needed, I could always add a to each of these tattoo layers to fade out or add more randomness to the tattoos.
The final look of the tattoos.

Since I still needed to add hair to both face and fingers I did not erase too much of the tattoos. They still needed to look old but not as old as they were illegible when the hair would be added.

Patched Layers

I’ve found a lot of use from the same layering method I used on the tattoos - mainly using a darker colour for the second layer with added Blur and Levels. I decided early on that making the patched-together layers would be easiest in Substance Painter.

I probably could’ve used ZBrush to get a similar result but considering how powerful Substance Painter is, in terms of all the layering and adjustment filters, I thought it would be easier to do it while I was texturing.

The flat diffuse look.

I started by adding a leather material to a folder and paint out where I wanted the overlaying leatherpiece to be. I used the folder’s mask to paint it out.

It’s important that this layer also uses the Height channel, since it has to appear like it’s above the rest of the geometry/texture beneath.

Once I had this painted out, I copied the mask on the LeatherOverlay folder which I had just painted out.

I then added a new layer beneath the LeatherOverlay folder. With this new layer, I added a black mask and pasted the previously copied mask into this new mask so both this layer and the LeatherOverlay folder above it use the same mask. This layer should only use the Diffuse channel with a black colour.

sack_4
sack_6

To simulate ambient occlusion, I then added Blur and Levels to the mask of this layer, to control the blurriness, opacity, and tightness of the spread.

sack_4

Together, this simple two-layer trick can be effective. I woulden’t recommend it for larger things, though.

The same process was used for the other patterns around the sack.

Hemp Rope

Last bit I wanted to share is about my process for creating the hemp-rope.

Even though I didn’t have much resolution for them, the ropes are still readable as rope from a distance.

To start, I created a layer which uses most of the channels available. This would be the space between each fiber of the rope, so a darker colour and a bit of lowering of the height was needed.

rope00

In the mask of this layer, I then added Fill with a Lines Wave alpha texture. This texture adds lines which you can control however you like.
For me, it worked perfect as a repeating bunch of fibers along the texture.

How it appears on the UV. The fibers will follow diagonally along the mesh.

How it appears in mask-view in 3D.

To get more variation in the fibers, I added a Blur Slope which is a sort of randomised-blur filter. On top of this I added Levels to adjust the intensity.

fiberslower

To make it appear like the fibers actually have depth and sort of bulge slightly over the base, I needed to have a layer on top of the base that would simulate the actual fibers.
I duplicated the Fibers_Lower layer and added a Height channel with a little bit more added height than the previous layer.
This new layer also has a lighter diffuse to make the fibers stand out more.

newlayer

I renamed this new layer to Fibers_Upper. I then inverted the Lines Wave Fill component in the mask to make the fibers appear where the previous layer didn’t have fibers.

View in mask.


To add more of a disheveled appearance to the rope, I added a “strays” layer which has random painted fibers going in different directions.
This helps to make the rope look more used. This is another layer added on top of the fiber layers.

Exaggerated for visual clarity.

How it looks in the mask.

I also added dirt layer to add a little more colour variety to the rope, but since it’s a repeating pattern across several meshes linked together, I can’t have too much variety, otherwise the rope will look strangely repetitive.

It’s also a quite simple way to put together a rope texture yourself, so I am pleased with the result.

Thanks for reading!

1 Like

Placing hair cards!

Beard

To start creating the textures, I made some simple clumps in Maya, using XGen. Since the majority of the beard is messy clumps, I only used a few guides and relied mostly on modifiers to add noise and variation in the clumps.

I had some great feedback and help with determining how I should plan my set of clumps for the character based on the concept, so special thanks to Jansen Turk for helping me out!

I placed XGen guides on an angled plane for each clump, so I could simulate having depth on the card textures without having to place a ton of cards in the same spot.

I made sure to keep the clumps within an even 4096x4096 plane.

I’ve made it this way so I can keep the cards in a different UVset, but to stay within the challenge I’d probably have to distribute the cards unto the same UV set as the Sack. This means I’ll probably have to manage with a 1k resolution for the hair cards rather than 4k.

Since my Arnold renderer in Maya was broken, I’d have to manage baking the textures in Marmoset. I could get a similar result with Marmoset by baking out Normals, AO, ID, and Alpha.
I made sure to include a plane that fitted all of the clumps so I could bake the textures onto this plane. By making the cage on the lowpoly plane offset enough, the bake would include all of the strands.
To get better a better normal bake for the strands, I added a Solidify modifier in Blender to the exported XGen geometry and then added a Subdivision Surface modifier so they became tubes rather than the normal XGen single-side planes.

After this, I blended the baked ID texture as a lighter colour map on top of a darker orange colour in Photoshop, which helps each strand in the texture stand out as its own.

Back into Blender, I then added subdivided planes to each clump in the texture and a Bezier Curve going through from the Root to the Tip on each card.

Using this method, I have full control over the card’s length, thickness, and rotation of the card at each control-vertex.

I then made a couple of clumps to make the process of placing cards a bit faster.
Earlier this year, I was taught some cool things regarding creating good hair clumps from Andreea Scubli.

The main gist of creating nice reusable clumps was that the hair-cards/clumps have to look good from all angles. So if the cards are at an angle where they are flat/disappear because of the angle to the camera, then cards should be changed so they create a sort of triangle from the top view.
Less dense cards should be mixed with denser cards to create a better effect.

Similar clumps to this were used in creating a good base for the beard.

I blocked out the most of the beard, sideburns, and eyebrows with thicker and denser cards and clumps and then mixed those with fewer and less-dense cards for the transitions between the beard and the skin.

3 Likes

Awesome work with the hair cards, thinking to bake them in marmoset is super intuitive! :0

1 Like

Ah thanks! Yeah marmoset is great - is super easy to use as well!

1 Like

Posted in the final submission thread already so just posting here for closure. :slightly_smiling_face:

Final tricount came out at 99,775 triangles!
Had to scale the 4k hair texture down to 1k to make it fit onto the same UV as the sack.

Finals renders!

Marmoset Viewer





1 Like

wow… this is crazy good work! And the effort you put into the documentation is amazing. Truly inspiring :slight_smile:

1 Like