Skip to content

[BUG] next-terminates-loop flag results in quite non-smooth animations #500

Open
@melyso

Description

@melyso

Terms

Describe the issue

When I set the next-terminates-loop-flag in order to let looping animations run their course smoothly before switching slides, the result is quite choppy. To be clear, it seems like it's (at least almost) doing the correct thing, but it stops the animation for a split second when the next-button is pressed (and sometimes it almost seems like it 'skips backward' a bit before playing the rest of the animation?). I'm guessing this could be a result of the animation being interrupted and then replayed for the final time from where it was first interrupted?

This may be a bit of a nitpick, but given that the idea behind the flag is to let loops finish smoothly, I think it could be important enough to open an issue on it.

Everything else (including skipping from loops to new slides without the flag) is being very responsive on my laptop, so I would be a bit surprised if it were a performance issue.

Command

manim-slides present Test

Issue Type

Visual bug when presenting (manim-slides present)

Python version

Python 3.11.11

Python environment

Manim Slides version: 5.1.10
Python executable: /Users/madserlendlyso/opt/miniconda3/envs/presentation/bin/python3.11
Manim bindings:
	manim (version: 0.18.1)
	manimgl not found
Qt API: pyside6 (version: 6.8.1)

What is your platform?

macOS

Other platform

No response

Manim Slides Python code

from manim import *
from manim_slides import Slide

class Test(Slide):
    def construct(self):
        self.play(Wait(1))
        self.next_slide(loop=True, auto_next=True)
        c = Circle()
        self.play(GrowFromCenter(c))
        self.play(Wait(1))
        self.play(ShrinkToCenter(c))
        self.next_slide()
        self.play(Wait(1))

Relevant log output

No response

Screenshots

No response

Additional information

No response

Recommended fix or suggestions

Sadly I have no concrete idea of how to fix this, but I suppose that if the issue is in fact that the animation itself gets interrupted and stitched together with the "remaining animation", maybe it could be possible to alter this behavior when the flag is set, for instance checking and potentially interrupting only when a looping animation has finished playing?

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghelp wantedExtra attention is neededpresentRelated to the main "present" feature

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions