6
$\begingroup$

I'm experimenting with CELL SHADED fur. The thing is that it doesn't look that great... I'd like for the hair particles to just take on the flat color of the surface where they're placed, after the emitter's been shaded.

I've experimented with the 'shader to RGB' node and geometry normals. Also, I thought about baking the shadows as a texture and then coloring the hair based on UV, but I think that it wouldn't work with animations, because the shading would change with each frame.

Here's how the emitter/ object looks after shading, without hair: enter image description here

Here's what I wish it looked like with hair (based on the shaded sphere): enter image description here

Here's what a normal cell shaded fur ball looks like: enter image description here I think that the hair casting shadows is a big problem too...

Any tips would be appreciated. c:

$\endgroup$
2
  • $\begingroup$ Welcome to Blender.SE. Thanks for the interesting and well made question. Are you using PATH hair particles? Or custom instanced object? $\endgroup$
    – Carlo
    Jan 16 at 19:28
  • $\begingroup$ I'm using path hair. Then I'm rendering it as strips in eevee. $\endgroup$
    – BlenderKP
    Jan 16 at 19:29
7
$\begingroup$

Transfer Normals on Instanced Particles

Theory: Currently I don't think there's an easy way to pick the value of the shaded surface of another mesh and transfer to the built in hair strand, but we can copy it's normals orientation and use the same material and transfer them to another object.

We basically just neet to create a separate Object that will work as a particle system, but it's actually a mesh, so we can tweak it's shading.

If you want to know more, there's a YT video about the same technique used for making NPR trees foliage by David from Lightning Boy Studio:https://www.youtube.com/watch?v=DEgzuMmJtu8


Practice:

Starting from a situation similar to this one:

enter image description here

You need to create a particle system using an Object as Render instance.

Don't put any actual object in the Instance Object field, as we are going to use a Particle Instance modifier on another object.

Create a new object containing a custom strand shape mesh and add a Particle Instance modifier to the object pointing to the mesh with the particle system we created before (system_mesh in my case).

enter image description here

  • Enable Children and "Size" options if you are planning to take advantage of these features.
  • Pick Local in the coordinate system so your particles object will follow the main object.
  • Also enable Create Along Paths to make your strand following the hair curve.
  • You may want to disable Keep shape for more control, but it really depends on your particle system settings.

Now duplicate and assign the same material of the base mesh, we'll get rid of the shadow casted from the hair object by setting None in the Shadow Mode option. That's the only difference between the materials.

enter image description here

Note: you can obtain a great effect by actually leaving the shadow on and using the Soft Shadow fature an playing with the Cube Size and other light/shadow related parameters

Final step is to add a Data Transfer modifier to replace the shading normals of the instances with the ones from the nearest face. Remember to enable autosmooth and to set it's value to an appropriate value, in this case 180°.

enter image description here

Final test and blendfile for inspection:

enter image description here

enter image description here

$\endgroup$
2
  • 3
    $\begingroup$ Oh, wow... Thank you so much! I wasn't expecting such a thorough answer or help. Thank you for spending the time, means a lot. :) $\endgroup$
    – BlenderKP
    Jan 17 at 0:56
  • $\begingroup$ I actually saw the video you recommended before, and tried applying it somehow. But I messed up somewhere along the way... Again, a big thank you! $\endgroup$
    – BlenderKP
    Jan 17 at 1:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.