概要
最近,結合視頻剪輯工具剪映制作短視頻時,
如果不是數學相關的內容,使用視頻剪輯工具配置字幕,添加圖片等等比 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/545283.html
標籤:Python
上一篇:Linux安裝PHP8 新版筆記
下一篇:使用默認pypi源出現連接超時