Week 6: Fixing the Timeline issues and equipping it with more features

m-agour
Published: 07/30/2022

What did you do this week?

  • Improved the PlaybackPanel by adding speed control and the ability to loop the animation. Also, fixed the lagging issue of play and pause buttons and composed them into a single play/pause button.

  • Updated the old tutorials’ syntax to match the other tutorials and added a new tutorial on position animation using spline interpolation. Added unit tests for the PlaybackPanel and the newly added color converters in colormap.py.

  • Added more hooks to the 2D sliders to cover two more states:

    1. on_value_changed, which gets called whenever the value of the slider is changed without interacting with the slider.

    2. on_moving_slider, which gets called when the position of the slider is changed by user interaction. #634.

    • The reason for adding these two hooks is that there was only the on_change hook, which always gets called when the value of the slider is changed without considering how the value is changed, hence, the functionality of the slider was limited.

  • Provided the ability to add static actors to the Timeline, which might be needed in the animation part of Shivam’s glTF project #643.

    • If an actor is added to the Timeline as a static actor, it won’t be animated by the Timeline, but it will get added to the scene along with the Timeline.

  • Implemented a custom evaluator for the Timeline’s properties.

    • A custom evaluator uses a user-provided function that takes time as input and evaluates the property at that time. This feature is yet to be discussed more in today’s meeting.

  • Fixed camera rotation and the view-up issue when interacting with the scene.

What is coming up next week?

  • Make a tutorial on how to implement a new custom Interpolator to work with the Timeline.

  • Add motion path visualization feature for both position and color properties.

  • Add custom evaluation functions directly, without using the CustomInterpolator.

  • Implement an already existing complex interpolator using closures instead of classes.

Did you get stuck anywhere?

I didn’t get stuck this week.