aboutsummaryrefslogtreecommitdiffstats
path: root/scenes/overlay.py
blob: 0a3eb713b7459d9473543f662f9d4579b6c37cae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# -*- coding: utf-8 -*-
"""Capa de interfaz del canal (chip, barra de progreso y subtitulos) para los
videos renderizados en Blender. Se renderiza con --transparent y se compone
encima del 3D, asi el estilo sale del mismo codigo que los videos de Manim.

  NAME=bolapeluda CHIP=Topología CHIPCOL=celeste manim --transparent ...

Tambien escribe out/<name>_timeline.json, que es lo que despues leen el script
de Blender (para animar) y build_video.py (para colocar el audio).
"""
import os, sys
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from manim import *
from tiktok import *

COLORES = {"ambar": AMBAR, "verde": VERDE, "rosa": ROSA, "celeste": CELESTE}


class Overlay(TikTok):
    NAME = os.environ.get("NAME", "")

    def backdrop(self):
        return VGroup()          # el fondo punteado va aparte, debajo del 3D

    def construct(self):
        self.prepare()
        chip = self.chip(os.environ.get("CHIP", ""),
                         COLORES[os.environ.get("CHIPCOL", "ambar")])
        self.add(chip)
        for i in range(len(self.segs)):
            with self.beat(i) as b:
                b.wait(b.floor)
        self.finish()


class Fondo(TikTok):
    """Un solo frame con la trama de puntos, para usar de fondo."""
    NAME = "fondo"

    def construct(self):
        self._sub = None
        TikTok.backdrop(self)
        self.wait(0.1)