When I was working on my last animation, I came to realization that Shade layer is bare bones and not very useful for shading. You would be better off with Filter group, but it’s quite cumbersome and slow to use for shading.
So I made an improvement to Shade layer by adding ‘transformation’ type to it, you know, similar to the Group layer. It’s a pretty simple modification but it does allow for a much wider usage since now you can change angle, skew and scale of the shadow.
For example, now it’s possible to make cast shadows, like this:
It’s a pretty simple example, but should be enough to illustrate new capabilities.
Or have this apple as another example:
All shadowing is done using new Shade layers with variant scale/angle/skew parameters.
The only thing I didn’t figure out is how to make GUI draw the handles of the ‘transformation’ widget for the Shade layer. Anyone has an idea where it is in the code?
My question is, do you want it in the mainstream Synfig? Or am I the only one who needs it? If enough people agree, I will make a pull request after I figure out how to properly incorporate it in GUI.
The handles are named “ducks” in code.
You can work on synfig-studio/src/gui/duckmatic.cpp. There is a laaaarge method (badly) called add_to_ducks(). Search for type_transformation there.
Dang, that is so cool!! Yeah, I’d like to give it a shot too, since I can’t build Synfig from source (it’s a bit too much for me). Got me very curious and kinda wanna play around with it.
Also, I’ll be honest. I totally forgot that shade group layer and filter group layer actually exist. I’m so used to just using shapes and lines to make my artworks. Probably because I find it much simpler to focus on things that I already know how to handle and tweak, and trying to incorporate those two group layers into my workflow means I might have to take quite a setback. This includes the one that I just made recently (and it was extremely messy ngl )
Edit: of course I’m still using group layers (that’s a must). But it’s just the plain, basic ‘Group’ layers
I changed the logic so that ‘transformation’ widget is no longer PasteCanvas specific but will accept any layer with the said type. Not sure it’s a proper thing to do, but this type is just a set of math formulas, so there’s no need to restrict it to one specific layer. Seems reasonable to make it generic.
Commit: Make transformation ducks applicable to layers outside of PasteCanvas · Svarov-RZM/synfig@2d7f341 · GitHub (I fixed whitespace in a separate commit)
It is a good technique. Quite tedious, but results are often better because you are free to shade characters/objects whatever way you want. Using tricks like Filter group or this new Shade layer will reduce your, let’s say, artistic freedom, but will speed up things.
I’ll wait a bit for some additional opinions. If no one disagrees, I will send a pull request and will work from there if something needs to be fixed.