in today's video I'll show you how to create this
painterly 3d effect. I did it by painting over an object space normal map, which is not as scary
as it sounds. This technique allows us to capture the feeling of a 2d painting while maintaining the
flexibility of 3D. Also, compared to other methods it's not that hard. To start, here are my top five
favorite things about this technique. Number one, the brush Strokes react to the lighting. The
vibe of this scene is definitely morning tea, but if we wanted to make it midnight tea we can
just move the lights around change the colors and the image still feels painterly. If we want to
add a little more mystery, maybe some intrigue, we can do that too. Or maybe we want
things to feel more eerie and otherworldly. You definitely have to light with the brush
strokes in mind, but in general this tea kettle looks pretty good in any lighting setup. Number
two, you can move the camera. It's easy to add cinematic camera moves just like you would in a
more traditional 3D scene. You can also change the focal length, which is helpful for making
things look flatter or just weirder. Number three, it's artist friendly. Similar techniques require
dozens, even hundreds of nodes. For reference this is the node tree for our kettle. It's super
manageable because most of the effect comes from painting image textures and painting image
textures is a lot more intuitive for artists who have limited programming skills. Number four, it
works with metallic and glossy materials. Because we're using blender's default principled BSDF
node, we can make our brush strokes look metallic, rough, or glossy. There are also a lot of other
inputs we can experiment with to get unique effects. Number five, we have a ton of creative
control over the brush strokes. Since we have the option of hand painting our brush strokes,
there's an opportunity to create looks that are unique to our scene and authentic to our style. A
lot of other techniques just add brush Strokes to surfaces randomly. They treat the brush strokes
more like noise. And to be clear there are a lot of times when automating your textures is a
great option, but it's important to keep in mind that brush strokes can actually do things.
They can contribute to the mood, the composition, and the story. Real quick, this is my first full
video on this channel so you'd be helping me out a lot if you liked, subscribed, and left me a
little comment. Anyway, here's what you probably should know before you try this technique. Number
one, the basics of a 3D program. I use Blender, but Maya, Cinema 4D, Unreal, they should all work
fine. Number two, UV unwrapping. This is just because we're working with textures, but you don't
even have to really be good at it to get started, just the basics! Number three, Normal Maps. I'll
explain these later in the video but, in short, we're taking a normal map that looks like this and
making it look like this. So it helps to at least know a little bit about how Normal Maps work.
Alright, so there are three basic steps. First, you bake an object space normal map. Then you
paint over over it with brush strokes. Finally, you take your painted normal map and you plug
it into your shader. What's great is that you can build off of these steps and construct
a variation that works for you. So we start with our completed, UV unwrapped 3D model. To
make an object-space normal map in Blender, we'll start in the shader workspace where we'll
add an image texture node. From there, we'll add a new image. You can name it whatever you want
and you can make it whatever size you want. Next, under render properties, we'll make sure our
render engine is set to Cycles. Then a bit further down in render properties we'll open up the bake
section. Let's change the bake type to normal and the space to object. Make sure your model and
image texture are both selected then click bake. From the image editor we can then save it onto our
computer. Once that's done, we'll open the normal map in our painting software. We want to cover our
normal map with brush strokes, but we need to make sure that the colors of the brush strokes match
the colors of the normal map underneath. The most straightforward way is to color pick, then place
a brush stroke in the same area that you picked the color from. Then repeat. The software is up
to you, Substance Painter, Photoshop, Procreate. Completely depends on what you're comfortable
with. I made this little brush stroke generator in Substance Designer, which is a fun way to automate
things. You can also use some sort of filter like this one from Tradigital. As a last step, we bring
it on back to whatever software we started with and we plug it in. Here's the shader setup in
Blender. It's important that the color space on our painterly normal map is set to non-color and
that the normal map node is set to object space. I think of this whole process as just a weird way
of sculpting. If I sculpt facets into the base of our kettle the result has a lot of similarities
to our painterly effect. When we shine a light on it we get these big blocks of uniform color,
which is exactly how we want our brush strokes to behave. And if I move the light the big blocks of
color react accordingly. Of course, we have some problems. With the sculpting method we tend to get
this pattern of connected cells. It's kind of like a Voronoi pattern. But we want our brush strokes
to overlap. We also get pretty orderly edges, but we want the option to make our edges complex
and organic. So the facets give us the general behavior we want but they still don't look like
brush strokes. That's where normal maps come in. By painting our normal map we're making our object
look like it's covered in facets, and crucially, those facets are shaped like brush strokes. So
each brush stroke is being rendered as if it's a flat surface, which is why for the most part
each one ends up as a solid color. It helps a lot to understand how normals work. So in 3D,
normals tell us which way a surface is facing. To show this let's assign each direction
a color. We've got the Magenta Direction, the pale blue Direction, the cyan Direction,
you get the idea. And we've got this cube in the center so let's color the faces of the cube based
on which direction they're facing. We just created an object space normal map. Here it is flattened
out. Of course surfaces can face more than six directions, so let's bevel this cube and you'll
see we unlock a bunch more colors. If we round our bevel you'll see we get a gradient in our normal
map. As the surface gradually changes direction, so do the colors. This is the main takeaway. In
an object-space normal map, a gradual shift in color represents a rounded or curved surface,
while solid stretches of color represent flat surfaces. So let's sample the color from our
gradient here. Then let's paint over this rounded bevel with a solid color. You'll see that when
we render it, Blender treats the area I painted over as if it's a flat surface, even though if we
look look at the silhouette it's very clearly not. Adding a base color with brush strokes creates
some additional color variation. Also sometimes your 3D model needs to be more than one color.
Ideally the brush strokes in the base color are the exact same shape and positions as the ones
in the normal map. That way everything's lined up. otherwise it can feel sort of discordant. So
figuring out how to do this is kind of tricky. I like to use Substance Painter, where you
can paint two separate channels with two separate colors at the same time. I just set up
color jitter for the base color brush strokes, then focus on the normal map. If you're using a
2d painting software, you can try painting your brush strokes on several separate layers, then
use clipping masks to change the colors. I would love to work out a better method for this so let
me know if you come up with something. So a couple of things about conversions and compatibility.
If you want to use this on a moving character, you may need to convert your map from object space
to tangent space. You would do this after you did your brush strokes. I still haven't tested this
effect on an animated character so I have no idea if it looks good. Also, different programs use
different kinds of normal maps, so depending on your workflow you may need to convert them
by flipping the green channel. Alright, that's all I got for now thank you so much for
watching. Remember to subscribe here on YouTube and you can also find me on Instagram and TikTok.
So leave a comment if you have any questions. foreign