So For this project i'm trying to achieve somewhat of a cel-shaded look. Cel Shading is an attempt to make 3D Art look 2D, But The Main problem I've found with Cel Shading effects is the shadows are "too perfect" so our pattern seeking brains immediately know it's really 3D.

The Problem: I need an object to Receive shadows from external objects, and cast shadows onto external objects, But not receive any self shadows.

The closest i have gotten to figuring out how to make it look this way has been to match the lighting using invisible objects, and use them as brushes, while everything else is a canvas. however i'm still looking for a better (preferably just node-based) way to create the effect cause using dynamic paint is a pain to setup and match for every light and sometimes impossible.

Example with Problem Areas enter image description here

Example of how it SHOULD look enter image description here

I Used EEVEE to Render this as it handles stylized shaders better, Although I am fine with a setup that only works in cycles too (Preferably EEVEE Though)

Another Example of this effect with a point lamp

Note: The wireframe is just a visualization of the light cutoff

enter image description here

I Think what i'm looking for is a way for the lights to ignore the normals of the object and allow the light to illuminate the backside of objects, while still casting shadows on everything but itself. I have no idea though, and there may be a better method. Thanks!

  • $\begingroup$ Would you be prepared to use OSL? $\endgroup$ – Robin Betts Dec 9 '20 at 10:29
  • $\begingroup$ Never used it before, and i wouldn't understand any of the code, but if it works then yeah $\endgroup$ – Marux Dec 9 '20 at 13:57
  • $\begingroup$ I should have mentioned, it's CPU only.. $\endgroup$ – Robin Betts Dec 9 '20 at 14:16
  • $\begingroup$ A h, yeah thats not super great.. I plan on using this for an animation so im not sure how well thats gonna work out $\endgroup$ – Marux Dec 9 '20 at 14:17
  • 1
    $\begingroup$ I think you'd need to be compositing multiple render layers, one where the object's materials cast shadows and one where they did not. It would not be pleasant to implement for multiple objects acting this way. Note that normals and occlusion of light are two different, unrelated things. $\endgroup$ – Nathan Jan 21 at 17:32

Your Answer

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

Browse other questions tagged or ask your own question.