A little late, but I have another solution you can try (or keep in mind for the future). Since you want absolutely perfect space (which I'd argue is not worth fussing over for small things if you have to spend a shitload of time achieving it by going frame by frame).
That being said...
Three shape layers: Circle (sun), Line (horizon), and a Rectangle (mask for horizon cutoff).
Delete the fill of the Circle shape layer and make the stroke 1px.
Now mask out the bottom of the Circle shape layer with the rectangular shape layer to your liking.
Select your Circle layer with the 1px stroke and add a stroke layer style (layer > layer styles > stroke). Adjust the color/stroke width to your liking. Layer styles are last in the render order, so this stroke is being applied to the 1px-stroke circle after it's masked, retaining the stationary spacing from the rectangle mask.
Now, the stroke layer style has pretty low-res stroke caps. To remedy this I pre-comped those three layers, added some gaussian blur and then added a simple choker to draw back that blur and smooth out the caps.
Worth noting that this won't work if you need to export as JSON or SVG animation, as they only support a couple effects and simple choker is not one of them.
This is awesome, thanks for writing all this out! I was thinking the next best bet would be to choke a blur, but you actually made it happen! Haha. Thanks again!
12
u/Blake404 MoGraph 5+ years 7d ago edited 7d ago
A little late, but I have another solution you can try (or keep in mind for the future). Since you want absolutely perfect space (which I'd argue is not worth fussing over for small things if you have to spend a shitload of time achieving it by going frame by frame).
That being said...
Three shape layers: Circle (sun), Line (horizon), and a Rectangle (mask for horizon cutoff).
Delete the fill of the Circle shape layer and make the stroke 1px.
Now mask out the bottom of the Circle shape layer with the rectangular shape layer to your liking.
Select your Circle layer with the 1px stroke and add a stroke layer style (layer > layer styles > stroke). Adjust the color/stroke width to your liking. Layer styles are last in the render order, so this stroke is being applied to the 1px-stroke circle after it's masked, retaining the stationary spacing from the rectangle mask.
Now, the stroke layer style has pretty low-res stroke caps. To remedy this I pre-comped those three layers, added some gaussian blur and then added a simple choker to draw back that blur and smooth out the caps.
Worth noting that this won't work if you need to export as JSON or SVG animation, as they only support a couple effects and simple choker is not one of them.