Transfer Normals on Instanced Particles
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
Starting from a situation similar to this one:
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).
- 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
- 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.
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°.
Final test and blendfile for inspection: