|
概要
最近,结合视频剪辑工具剪映制作短视频时,
如果不是数学相关的内容,使用视频剪辑工具配置字幕,添加图片等等比 manim更加方便。
所以,用 manim封装一个目录的动画,用来配合剪辑工具中的其他资源。
代码封装
基于manim封装一个目录显示的 class。
主要属性就是 titles,也就是目录中的各个标题。- class CatalogDisplayer:
- def __init__(self, sc: Scene, titles: list):
- self.sc = sc
- self.titles = titles
- def _title(self):
- title = Text("目录", font_size=20, weight=BOLD).shift(UP * 3.5)
- line = Line(LEFT * 3, RIGHT * 3, color=WHITE, stroke_width=3).next_to(
- title, DOWN * 0.5
- )
- self.sc.add(title, line)
- def _get_paragraph(self, index: int):
- catalog = Paragraph(
- *self.titles,
- line_spacing=1,
- alignment="left",
- font_size=30,
- font="STLiti",
- weight=BOLD,
- )
- catalog[index].set_color_by_gradient(RED, BLUE, GREEN)
- for i in range(len(self.titles)):
- if i != index:
- catalog[i].set_color(GREY)
- return catalog
- def _start(self):
- catalog = self._get_paragraph(0)
- self.sc.add(catalog)
- self.sc.play(Indicate(catalog[0], scale_factor=1.5, color=GREEN))
- def display(self, index: int) -> bool:
- if index >= len(self.titles):
- return False
- self.sc.clear()
- self._title()
- if index == 0:
- self._start()
- return True
- pre_catalog = self._get_paragraph(index - 1)
- self.sc.add(pre_catalog)
- catalog = self._get_paragraph(index)
- self.sc.play(ReplacementTransform(pre_catalog, catalog))
- self.sc.play(Indicate(catalog[index], scale_factor=1.5, color=GREEN))
- return True
复制代码 调用的示例如下:- # -*- coding: utf-8 -*-
- from manim import *
- TITLES = [
- "· manim是什么",
- "· 多平台支持",
- "· 基于python",
- "· 重要依赖",
- ]
- class Example(Scene):
- def construct(self):
- catalog = CatalogDisplayer(self, TITLES)
- for i in range(len(TITLES)):
- catalog.display(i)
- self.wait()
- self.clear()
复制代码 如果不是第一个标题,会有一个简单的过渡效果。
测试效果
来源:https://www.cnblogs.com/wang_yb/p/17163051.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|