Clean up end scroll

This commit is contained in:
Grant Sanderson 2020-06-26 21:53:39 -07:00
parent 9a2b2ecd9e
commit 4910501ee0

View file

@ -1,11 +1,14 @@
import random import random
from manimlib.animation.animation import Animation
from manimlib.animation.composition import Succession
from manimlib.animation.creation import Write from manimlib.animation.creation import Write
from manimlib.animation.fading import FadeIn from manimlib.animation.fading import FadeIn
from manimlib.animation.transform import ApplyMethod
from manimlib.constants import * from manimlib.constants import *
from manimlib.for_3b1b_videos.pi_creature import Mortimer from manimlib.for_3b1b_videos.pi_creature import Mortimer
from manimlib.for_3b1b_videos.pi_creature import Randolph from manimlib.for_3b1b_videos.pi_creature import Randolph
from manimlib.for_3b1b_videos.pi_creature_scene import PiCreatureScene from manimlib.mobject.mobject import Mobject
from manimlib.mobject.geometry import DashedLine from manimlib.mobject.geometry import DashedLine
from manimlib.mobject.geometry import Line from manimlib.mobject.geometry import Line
from manimlib.mobject.geometry import Rectangle from manimlib.mobject.geometry import Rectangle
@ -13,12 +16,9 @@ from manimlib.mobject.geometry import Square
from manimlib.mobject.svg.drawings import Logo from manimlib.mobject.svg.drawings import Logo
from manimlib.mobject.svg.tex_mobject import TextMobject from manimlib.mobject.svg.tex_mobject import TextMobject
from manimlib.mobject.types.vectorized_mobject import VGroup from manimlib.mobject.types.vectorized_mobject import VGroup
from manimlib.mobject.mobject_update_utils import always_shift
from manimlib.scene.moving_camera_scene import MovingCameraScene from manimlib.scene.moving_camera_scene import MovingCameraScene
from manimlib.scene.scene import Scene from manimlib.scene.scene import Scene
from manimlib.utils.rate_functions import linear from manimlib.utils.rate_functions import linear
from manimlib.utils.space_ops import get_norm
from manimlib.utils.space_ops import normalize
class OpeningQuote(Scene): class OpeningQuote(Scene):
@ -83,7 +83,7 @@ class OpeningQuote(Scene):
return author return author
class PatreonEndScreen(PiCreatureScene): class PatreonEndScreen(Scene):
CONFIG = { CONFIG = {
"max_patron_group_size": 20, "max_patron_group_size": 20,
"patron_scale_val": 0.8, "patron_scale_val": 0.8,
@ -97,6 +97,19 @@ class PatreonEndScreen(PiCreatureScene):
} }
def construct(self): def construct(self):
# Add title
title = self.title = TextMobject("Clicky Stuffs")
title.scale(1.5)
title.to_edge(UP, buff=MED_SMALL_BUFF)
pi_creatures = VGroup(Randolph(), Mortimer())
for pi, vect in zip(pi_creatures, [LEFT, RIGHT]):
pi.set_height(title.get_height())
pi.change_mode("thinking")
pi.look(DOWN)
pi.next_to(title, vect, buff=MED_LARGE_BUFF)
self.add(title, pi_creatures)
# Set the top of the screen # Set the top of the screen
logo_box = Square(side_length=2.5) logo_box = Square(side_length=2.5)
logo_box.to_corner(DOWN + LEFT, buff=MED_LARGE_BUFF) logo_box.to_corner(DOWN + LEFT, buff=MED_LARGE_BUFF)
@ -165,28 +178,24 @@ class PatreonEndScreen(PiCreatureScene):
distance = columns.get_height() + 2 distance = columns.get_height() + 2
wait_time = self.scroll_time wait_time = self.scroll_time
frame = self.camera.frame frame = self.camera.frame
always_shift(frame, direction=DOWN, rate=(distance / wait_time)) frame_shift = ApplyMethod(
frame.shift, distance * DOWN,
run_time=wait_time,
rate_func=linear,
)
blink_anims = []
blank_mob = Mobject()
for x in range(wait_time):
if random.random() < 0.25:
blink_anims.append(Blink(random.choice(pi_creatures)))
else:
blink_anims.append(Animation(blank_mob))
blinks = Succession(*blink_anims)
self.add(columns, black_rect, line, thanks, self.foreground) static_group = VGroup(black_rect, line, thanks, pi_creatures, title)
for mob in [black_rect, line, thanks, self.foreground]: static_group.fix_in_frame()
mob.fix_in_frame() self.add(columns, static_group)
self.add(frame) self.play(frame_shift, blinks)
self.wait(wait_time)
def create_pi_creatures(self):
title = self.title = TextMobject("Clicky Stuffs")
title.scale(1.5)
title.to_edge(UP, buff=MED_SMALL_BUFF)
randy, morty = self.pi_creatures = VGroup(Randolph(), Mortimer())
for pi, vect in (randy, LEFT), (morty, RIGHT):
pi.set_height(title.get_height())
pi.change_mode("thinking")
pi.look(DOWN)
pi.next_to(title, vect, buff=MED_LARGE_BUFF)
self.add(title, randy, morty)
self.foreground = VGroup(title, randy, morty)
return self.pi_creatures
def modify_patron_name(self, name): def modify_patron_name(self, name):
modification_map = { modification_map = {