docs: add teaching examples and video project
This commit is contained in:
parent
e93bc20b0a
commit
7a06f94577
42 changed files with 8022 additions and 0 deletions
65
show/video/README.md
Normal file
65
show/video/README.md
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
# 史莱姆搜索科普视频 · Manim / uv
|
||||
|
||||
以 `show/` 的教学实现与实测为基础。中文字幕、深色背景、16:9;绘图使用 Manim Community 的 Cairo 渲染器。
|
||||
当前版本是带字幕的动画初稿,没有配音或背景音乐;渲染同时输出口播稿和可用于剪辑的 SRT 字幕。
|
||||
|
||||
## 环境与运行
|
||||
|
||||
需要 Python 3.12、uv,以及 Cairo/Pango 开发库。Ubuntu 常规安装:
|
||||
|
||||
```bash
|
||||
sudo apt install build-essential python3-dev pkg-config libcairo2-dev libpango1.0-dev fonts-noto-cjk texlive-latex-extra dvisvgm
|
||||
cd show/video
|
||||
uv sync --locked
|
||||
uv run python render.py --quality preview
|
||||
uv run python render.py --quality final
|
||||
uv run python verify.py --quality final
|
||||
```
|
||||
|
||||
FFmpeg 由 `imageio-ffmpeg` 提供,渲染脚本会自动配置。数学公式使用 `MathTex` / LaTeX,中文说明使用 `Text` / Pango。
|
||||
公式采用 Computer Modern 数学字体,指数、下标、取整分式与集合符号均由 LaTeX 排版。
|
||||
渲染优先使用系统的 `latex`、`dvisvgm`;本环境的本地 TeX Live 已解包到 `.native/texlive`,随项目目录保留。
|
||||
也可通过 `SLIME_TEX_ROOT` 指向相同目录结构的本地 TeX Live,`tex_environment.py` 会配置路径并构建 `latex.fmt`。
|
||||
换一台机器时,请按上面的系统安装命令补齐工具链。
|
||||
中文字体优先使用 Microsoft YaHei / Noto Sans CJK SC / WenQuanYi Zen Hei。
|
||||
WSL 会尝试使用 `/mnt/c/Windows/Fonts/msyh.ttc`,也可设置 `SLIME_FONT_PATH` 为已有中文字体路径。
|
||||
工程不复制或分发 Windows 字体。
|
||||
|
||||
安装方法依据 [Manim 官方安装文档](https://docs.manim.community/en/stable/installation/linux.html);
|
||||
中文排版采用 [Text / Pango](https://docs.manim.community/en/stable/reference/manim.mobject.text.text_mobject.Text.html)。
|
||||
`uv.lock` 锁定 Python 依赖,系统开发库不由 uv 管理。
|
||||
|
||||
## 场景与输出
|
||||
|
||||
- `SlimeFilm`:七个章节的完整动画。
|
||||
- `ParallelEpisode`:问题、CPU、CUDA、固定坐标、outer sum。
|
||||
- `RandomEpisode`:Random 性质、高位解析、结尾。
|
||||
|
||||
```bash
|
||||
uv run python render.py --scene ParallelEpisode --quality preview
|
||||
uv run python render.py --scene RandomEpisode --quality final
|
||||
```
|
||||
|
||||
预览为 854×480 / 15 fps,正式画质为 1920×1080 / 30 fps。
|
||||
`output/` 中会生成 MP4、SRT、口播稿、章节时间轴、视频规格记录和章节缩略图。
|
||||
`verify.py` 会逐帧解码视频,并核对分辨率、字幕时间轴和源码/测速数据哈希。
|
||||
字幕已显示在视频画面中,SRT 另外供剪辑软件使用,导入时无需重复叠加。
|
||||
`output/`、`.venv/` 与 Manim 中间产物已忽略,不应提交大量渲染缓存。
|
||||
|
||||
## 编辑入口与数据口径
|
||||
|
||||
`scenes.py` 定义动画、字幕与停留时间。每个 `say()` 同时记录字幕时间轴,修改口播时请在这里修改。
|
||||
字幕支持中文与 LaTeX 行内公式混排:`say(caption, seconds, display=r"中文 $2^{48}$")`。中文使用 Pango,`$...$` 内的公式使用 `MathTex`;`caption` 保留口播文字,供 SRT 与配音稿使用。时间轴同时保存实际画面用的 `display`,便于核对。
|
||||
固定坐标与 outer sum 两章包含原始坐标公式分组、Java 回绕语义、广播相加的矩阵恒等式及 2×3 数值示例;完整推导见 [OUTER_SUM.md](OUTER_SUM.md)。
|
||||
Random 章节逐步推导 XOR 常量的 35 位边界、输出高位平移、模 5 条件与回绕区间,并用数值例子解释 upper13 求解。完整数学与 effective seed 的区别见 [RANDOM_PROPERTIES.md](../RANDOM_PROPERTIES.md)。公式独立核验:`uv run python check_lower35.py`(逐个核对全部 8192 个高位,另核对完整 25 格区间求交)。
|
||||
`data/benchmarks.json` 是渲染所用的固定数据快照,保留来源文件与 SHA256,避免一次视频渲染混入不同批次数据。
|
||||
A/B/C 来自 `../results/latest.json`。
|
||||
|
||||
- A:65536 seed ×257²,CPU 搜索时间 / GPU scan。
|
||||
- B:65536 seed ×4097²,只比较相同工作量的 02/03 kernel。
|
||||
- C:1 seed ×8193²,重新测量 03,再比较 04 kernel。
|
||||
|
||||
不同组不连乘加速比。GPU diagram 简化线程数量;outer sum 图示为 5×5,实际 block 为 16×16。
|
||||
Random 的高 16 位等价性质覆盖重抽路径,但后续首次输出候选模型仍可能漏掉依赖拒绝重抽的解。
|
||||
独立筛轴章节已删除,历史结果见 [试错报告](../../research/XZ_FILTER_TRIAL_REPORT.md)。含旧章节的渲染视频、字幕与口播稿已删除;需用当前源码重新渲染。
|
||||
最终视频须在配音、节奏审核后再作为发布版本。
|
||||
Loading…
Add table
Add a link
Reference in a new issue