New blend method or shade layer improvement


I am gonna talk about shadows here. Synfig has ‘Shade’ layer which is a great thing and comes very handy when one need to add a simple shadow, I use it a lot in my animations. But when you make a complex animation (e.g. full human body) you can’t use it in a lot of cases and have to draw shadows manually, which is a pain.

The main problem is that the shade layer ignores alpha and applies right under the object. It’s good in one case and bad in another. For example, let’s draw a simple head and hat on it. Let’s add a shade layer to the hat and now we have something like this:

Of course, you can make a manual shadow for the hat object, but it is an ugly solution. At least I didn’t find a descent one.

I see two nice solutions here:

  1. (better variant) Make a new blend method that will act as Behind + Onto, so it’ll add shadow only to the non-alpha objects behind it.
  2. (acceptable one) Same thing as above, but as a checkbox in the shade layer’s parameters. I guess it’ll be easier to implement.
    So, what do you all think about it?
1 Like

Mmmmm. I actually never use the shade layer. In this case I would make a copy of the hat and mask it away with a copy of the head and put it between the original hat and head. Link a few vertexes here and there so that for instance, when you animate the bottom side of the hat, the shadow also animates the same way.

That what I was talking about - clumsy solutions. You see, making a copy of the object and masking it will add a huge overhead to the render if you work with big resolution or have a lot of objects that need a shadow.

Second thing, is that your source will turn into completely mess. Imagine a full body work where you need a shadow for the head/nose/arms/legs. With a corrected shade layer you’ll have a one additional layer per object and with copy/mask solution it’ll be a mess with copies and exported vertexes that slows rendering process.