mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
Removed sync_animation_run_times_and_rate_funcs, and changed
the implementaiton of Scene.play and AnimationGroup so as to not change the run_time and rate_func of the animations passed in.
This commit is contained in:
parent
36a4aacdf9
commit
e632be304d
3 changed files with 11 additions and 21 deletions
|
@ -129,19 +129,6 @@ class Animation(object):
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
|
||||||
def sync_animation_run_times_and_rate_funcs(*animations, **kwargs):
|
|
||||||
for animation in animations:
|
|
||||||
animation.update_config(**kwargs)
|
|
||||||
max_run_time = max([a.run_time for a in animations])
|
|
||||||
for animation in animations:
|
|
||||||
if animation.run_time != max_run_time:
|
|
||||||
new_rate_func = squish_rate_func(
|
|
||||||
animation.get_rate_func(),
|
|
||||||
0, float(animation.run_time)/max_run_time
|
|
||||||
)
|
|
||||||
animation.set_rate_func(new_rate_func)
|
|
||||||
animation.set_run_time(max_run_time)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ from mobject import Mobject, Group
|
||||||
from mobject.vectorized_mobject import VMobject
|
from mobject.vectorized_mobject import VMobject
|
||||||
from mobject.tex_mobject import TextMobject
|
from mobject.tex_mobject import TextMobject
|
||||||
from animation import Animation
|
from animation import Animation
|
||||||
from animation import sync_animation_run_times_and_rate_funcs
|
|
||||||
from transform import Transform
|
from transform import Transform
|
||||||
|
|
||||||
class Rotating(Animation):
|
class Rotating(Animation):
|
||||||
|
@ -492,15 +491,17 @@ class AnimationGroup(Animation):
|
||||||
self.empty = True
|
self.empty = True
|
||||||
self.run_time = 0
|
self.run_time = 0
|
||||||
else:
|
else:
|
||||||
# Should really make copies of animations, instead of messing with originals...
|
for anim in sub_anims:
|
||||||
sync_animation_run_times_and_rate_funcs(*sub_anims, **kwargs)
|
# If AnimationGroup is called with any configuration,
|
||||||
|
# it is propagated to the sub_animations
|
||||||
|
anim.update_config(**kwargs)
|
||||||
self.run_time = max([a.run_time for a in sub_anims])
|
self.run_time = max([a.run_time for a in sub_anims])
|
||||||
everything = Mobject(*[a.mobject for a in sub_anims])
|
everything = Mobject(*[a.mobject for a in sub_anims])
|
||||||
Animation.__init__(self, everything, **kwargs)
|
Animation.__init__(self, everything, **kwargs)
|
||||||
|
|
||||||
def update_mobject(self, alpha):
|
def update(self, alpha):
|
||||||
for anim in self.sub_anims:
|
for anim in self.sub_anims:
|
||||||
anim.update(alpha)
|
anim.update(alpha * self.run_time / anim.run_time)
|
||||||
|
|
||||||
def clean_up(self, *args, **kwargs):
|
def clean_up(self, *args, **kwargs):
|
||||||
for anim in self.sub_anims:
|
for anim in self.sub_anims:
|
||||||
|
|
|
@ -17,7 +17,6 @@ from camera import Camera
|
||||||
from tk_scene import TkSceneRoot
|
from tk_scene import TkSceneRoot
|
||||||
from mobject import Mobject, VMobject
|
from mobject import Mobject, VMobject
|
||||||
from animation import Animation
|
from animation import Animation
|
||||||
from animation.animation import sync_animation_run_times_and_rate_funcs
|
|
||||||
from animation.transform import MoveToTarget
|
from animation.transform import MoveToTarget
|
||||||
from animation.continual_animation import ContinualAnimation
|
from animation.continual_animation import ContinualAnimation
|
||||||
from container import *
|
from container import *
|
||||||
|
@ -336,7 +335,7 @@ class Scene(Container):
|
||||||
return time_progression
|
return time_progression
|
||||||
|
|
||||||
def get_animation_time_progression(self, animations):
|
def get_animation_time_progression(self, animations):
|
||||||
run_time = animations[0].run_time
|
run_time = np.max([animation.run_time for animation in animations])
|
||||||
time_progression = self.get_time_progression(run_time)
|
time_progression = self.get_time_progression(run_time)
|
||||||
time_progression.set_description("".join([
|
time_progression.set_description("".join([
|
||||||
"Animation %d: "%self.num_plays,
|
"Animation %d: "%self.num_plays,
|
||||||
|
@ -422,7 +421,10 @@ class Scene(Container):
|
||||||
|
|
||||||
animations = self.compile_play_args_to_animation_list(*args)
|
animations = self.compile_play_args_to_animation_list(*args)
|
||||||
|
|
||||||
sync_animation_run_times_and_rate_funcs(*animations, **kwargs)
|
for animation in animations:
|
||||||
|
# This is where kwargs to play like run_time and rate_func
|
||||||
|
# get applied to all animations
|
||||||
|
animation.update_config(**kwargs)
|
||||||
moving_mobjects = self.get_moving_mobjects(*animations)
|
moving_mobjects = self.get_moving_mobjects(*animations)
|
||||||
self.update_frame(excluded_mobjects = moving_mobjects)
|
self.update_frame(excluded_mobjects = moving_mobjects)
|
||||||
static_image = self.get_frame()
|
static_image = self.get_frame()
|
||||||
|
|
Loading…
Add table
Reference in a new issue