I’m glad to show you some progresses I’m achieving during this summer.
As you know, Synfig has a new Advanced Outline Layer since 0.63.00.
When I released the Advanced Outline I knew that not all the issues of its development were solved but as the main goal was achieved we decided to release a basic version and improve and refine its features in upcoming updates.
The Advanced Outline layer has a list of width points. Each width point holds the width on a particular position of the curve as well as other things. The position of the width point is a real value in the range of [0.0, 1.0]. When the position is 0.0 the width point is at bline start and when the position is 1.0 the width point is at bline end.
When I coded the Advanced Outline, I reused the Link to BLine feature that was added some time ago to place the width points and calculate the interpolation. It worked fantastic and saved me a lot of code!. But as it is commented here, the speed followed by a object along a general blline is not constant due to the different tangents and lengths of each bezier which forms the bline.
That draw back is also obtained in the Advanced Outline since the widthpoints and the interpolation is based on the same code.
So I decided to fix the problem of the non constant speed modifying the code of the Link to BLine feature. It allowed me to kill two birds in one shot, because looking for the Advanced Outline solution I solved the wanted feature for the Link to BLine.
Let me show some visual examples of the problem and its solutions:
Video that shows the difference between homogeneous and standard on Link To BLine:
Video that shows how to solve a render artefact produced by the non homogeneous width calculation.
The homogeneous option does a lot of calculations to place the width interpolations and the width points positions on the right place. It is due to the fact that the length of the bline up to the position of the width point or one intermediate interpolation is calculated several times. Maybe it might slows the render a bit but I don’t know other quicker solution to the problem.
I hope to release this code on September. Thanks for reading!