[GSoC 2020] Improvements for Lottie Exporter Plugin

Thanks for the suggestions, I will update my timeline accordingly and let you know as soon as possible.

I am facing the same problem, I cannot edit the milestone.

1 Like

Hmm… That’s weird… let me check the permissions… :slight_smile:

2 Likes

For some some team settings were not correct. I have changed them now.
@AnishG @saurabh22 Please check if you can manage milestones now. :slight_smile:

2 Likes

Yup I am able to manage them. Thank you! :smiley:

1 Like

I have added the milestones that were present in my proposal but were not present in the milestones.
Currently I am working on finalising my timeline keeping the exam period in my mind. Will update you about it as soon as I am finished.

@AnishG, @KonstantinDmitriev

2 Likes

I have updated my work timeline with respect to my exam.
@AnishG, @KonstantinDmitriev

Pre-Coding Period
May 23 - May 30 - College Exam week
Coding Period
June 1 - June 17 (2.5 weeks) Implement Text Layer, this will be divided over the course of two and a half weeks as it is a relatively tougher layer because of factors like the presence of different types of fonts.
June 18 - June 26 (1.5 Weeks) Implement Blur Layer and Implement Power​ convert method.
June 27 - June 28 Implement Vector X,Vector Y convert methods.
Phase 1 Evaluation June 29 - July 3
July 4 - July 10 (1 Week) Implement Radial Blur Layer and Implement Not Convert method
July 11 - July 19 (1.5 Weeks) Implement Advanced Outline Layer
July 20 - July 26 (1 Week) Implement remaining convert methods
Phase 2 Evaluation July 27 - July 31
Aug 1 - Aug 7 (1 Week) Implement Shade Layer
Aug 8 - Aug 14 (1 Week) Export outlines without variable widths. By doing this we get native Lottie outlines and this will make animation playback much faster.
Aug 15 - Aug 21 (1 Week) Add animation to the addition/deletion of bline points.
Aug 22 - Aug 24 Rigorous testing of Tasks
Final Evaluation August 24 - August 31

1 Like

Yea seems great!
You have covered everything mentioned in the proposal. :smiley:

1 Like

I am missing export of skeletons/bones. This is a very important task for export…

2 Likes

What is meant by bones here? Does it mean bone convert method?

2 Likes

Yes, the bone convert method. It is used to control groups (this is how cutout animation created) or individual vertices of spline. There is also Bone Distortion Layer, which can distort images, but it cannot be implemented in Lottie.

So, it would be really awesome if we can export Bone Convert method attached to Transformation parameter of Groups. This way we can export cutout animation

I have sent you PM with a link to access our video course, which is explaining how bones work. :slight_smile:

2 Likes

Okay, I’ll need to look into how this particular method works as I don’t know much about it because I had not included this in my proposal. I’ll try my best to incorporate this feature but I might have to remove something else from the proposed schedule. Would that be okay with the mentors?
@AnishG @KonstantinDmitriev

2 Likes

I think, for now you can keep everything from the proposed schedule. But if and when time comes, that the work load is too much, then we can drop the least priority things. :slight_smile:
@KonstantinDmitriev your thoughts here?

2 Likes

I think it is perfectly fine to remove something, as Bones is a top-priority feature for export.
Or, instead of removing, make some thing optional, a “stretch-goal”, as @AnishG suggested. :slight_smile:

2 Likes

We can use this link to follow on the development work of lottie: https://github.com/airbnb/lottie-web/blob/master/CHANGELOG.md
I was reading this and found out that image sequence has been supported now :smiley:

So this will surely help to track new features that we can use!

2 Likes

@KonstantinDmitriev How are characters in a Text Layer rendered in Synfig? For example how does synfig use the data in text_layer.sif to render the characters in a text layer?
Lottie uses bezier curves to generate each unique character in the text present in the layer, but I could not understand how Synfig does it. I am attaching a snippet of the rendered lottie JSON file from After Effects 2020 to show the same -> text_layer.json

2 Likes

We discussed this offline and currently I don’t have knowledge as per how the characters are rendered. Can someone point as where this text layer rendering happens. :slight_smile:
@ice0 @rodolforg

2 Likes

You will find all the needed info in the source of the module lyr_freetype

Check also render.cpp

It’s rendered as surface, not as curves
Hint: see libs Cairo / Pango / FreeType

3 Likes

Yes, it looks like Lottie doesn’t supports exporting Text (as characters).
So, it converts all text to curves.

In Synfig we use freetype library to convert text characters to pixels and show them on screen.

Synfig has no function to convert text layer into splines (regions/curves).

Implementing this in Python (as part of Synfig plugin) is a very tricky task and I do not think it worth doing so.

It makes sense to implement conversion of Text Layer to curves directly in Synfig, but I have 2 doubts here:

  1. Text Layer is in process of rewriting and its code will be changed much in future.
  2. Even if conversion code will be written, I am not sure how to (properly) trigger it before executing a plugin.

So, I suggest to skip Text Layer and proceed with other tasks.

Can we dedicate this time on implementing bones? :slight_smile:

2 Likes

So we discussed this problem offline and I think Saurabh has found a way around and he will be able to implement this.
@saurabh22 can you add more to this?

I guess this might not effect the lottie export for text layer, as the conversion is independent of the Synfig code. Please correct me if I am wrong here.

This can be done, but I leave it up to you guys to decide on this. @KonstantinDmitriev @saurabh22

1 Like

Yes, Lottie allows exporting of text-layers using two methods:

  1. Directly including all characters in the json file as glyphs which ultimately leads to the json file becoming extra large in some cases.
  2. Directly using text data which does not require us to bundle all the characters inside the json file.

I am currently using the second method as it is easier as well as efficient size-wise.
I have made some progress in making the text-layer in lottie format as well. Here is a sample animation → lottie_text

I think you are right as I feel the important things needed to generate the lottie format file won’t be changed.

2 Likes