【manim】之目录动画
2023-03-31 10:38:10 时间
概要
最近,结合视频剪辑工具剪映制作短视频时,
如果不是数学相关的内容,使用视频剪辑工具配置字幕,添加图片等等比 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()
如果不是第一个标题,会有一个简单的过渡效果。
测试效果
manim -p ./sample.py
相关文章
- 数据科学界华山论剑:R与Python巅峰对决
- Jmh基准测试,看我怎么用它来测试Mongodb的数据加载性能
- 6月份Github上热门Python项目排行
- 如何运用Python绘制NBA投篮图表
- TIOBE 7 月编程语言排行榜:C、Java 和 Python 争夺第一名
- 我为什么说 Python 是大数据全栈式开发语言
- 利用Python实现卷积神经网络的可视化
- 机器学习编程语言之争,Python夺魁
- 未来是人工智能的时代,更是Python的时代!
- Web 开发员 vs 数据科学家:谁将统治 Python?
- 核心代码从Python换成Go语言,提速30倍!
- 如何用Python解析HTML?
- 5种使用Python代码轻松实现数据可视化的方法
- 如何用一个Python示例入门TensorFlow?
- 小200行Python代码做了一个换脸程序
- 用Python构建你自己的RSS提示系统
- Python爬虫实践:《战狼2》豆瓣影评分析
- 3月编程排行榜:Python第四,R第20
- 全球删链?谷歌须在各国执行欧洲遗忘权
- 用Python构建一个极小的区块链