Crosshatching with Eevee
Blender 2.8 isn’t even Beta and it already has me hooked! Eevee will (IMHO) open the floodgates for NPR and all kinds of cool styles. This time I worked on a cross hatching material.
The technique is based on this paper from Princeton/Microsoft Research. The gist of it is making several textures to represent the different levels of shading and map them to the lighting in the object. Well, guess who has a shader-to-rgb node now? We can grab the illumination data from a diffuse or glossy BSDF, plug into several colorramp nodes and get masks for each step. I changed one thing from the paper though. In the paper they use textures that have the cross hatching already combined and then mix them. I think keeping them separated and multiplying them in a mix node is more efficient/flexible for Eevee.
I hope you like UV unwrapping :). You will need it to make the lines flow in a uniform way. Other texture coordinates can cause strange or unrealistic results. There is one exception though. Large flat areas that are on grazing angles to the camera look weird, like a blurred mid-90s repeating texture. I haven’t found a good solution yet. One way is to use the Window texture coordinates. But these bring a different problem: they look awful the moment you move the camera and make the objects flatter.
Don’t forget to scale UVs properly to make the lines have roughly the same size. Also, since this effect depends on colorramp-ing the diffuse shader it’s a little illumination specific. Particularly in high-contrast places. You can see for yourself by moving the sun in the blend file and watching the effect on the shadows in the walls.
Subtle paper textures really help sell the effect. You can grab some at Pixabay or Lost&Taken. Since the textures are black and white you can take the render and multiply it on top of the texture. Another important part of the effect is using masks and leaving empty spaces to suggest details. Even more so if you are repeating the textures a lot, since the repetition will look artificial.
Speaking of textures. They are very easy to make using Krita’s wrap mode (press w
). Just grab a good brush and start making horizontal lines, then make another layer and make some more lines in other places. Repeat to get three horizontal layers. Then do the same for the three verticals and export each layer as a separate PNG file. For these textures I used the ink-7-Brush Rough brush and drew the lines freehand.I also have another set of textures I made with the Basic‑5 brush and the line tool. These look more clean and organized, but I kinda like the rough look better.
When making your own textures keep in mind it’s important to keep the thickness and spacing of the strokes even. Otherwise you can create local details that will show up when repeating the texture and ruin the effect. You can zoom out while in wrap mode to check this.
You can download the blend, textures and the source krita file. The whole thing is CC‑0 so feel free to use it for anything without attribution.
(I wouldn’t mind a link back though!)