news 2026/9/16 14:33:50

manim 移动端适配完整指南:3步让数学动画在手机竖屏上完整播放

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
manim 移动端适配完整指南:3步让数学动画在手机竖屏上完整播放

manim 移动端适配完整指南:3步让数学动画在手机竖屏上完整播放

【免费下载链接】manimA community-maintained Python framework for creating mathematical animations.项目地址: https://gitcode.com/GitHub_Trending/man/manim

手机上播放 manim 渲染的数学动画,常遇到比例不对、字看不清、文件太大三类问题。manim 移动端适配就是在渲染阶段把这三件事一次解决。读完全文,你能定下全局参数、改好一个竖屏坐标系场景、并选对质量档位。

动手前的三个选择:设备、方向、播放场景

先做三个选择,它们直接决定后面每一步的取值:

  1. 目标设备:只投手机、只投平板,还是两者都要。两者都要时,物理宽度按 1080 起步,兼顾手机清晰度与平板放大。
  2. 方向:竖屏还是横屏。它决定 pixel_width 与 pixel_height 的比例关系:竖屏取 9:16,横屏取 16:9。
  3. 播放场景:视频站、网页内嵌,还是聊天软件直接转发。转发场景对文件体积最敏感,档位要压得比视频站低一档。

manim 移动端分辨率设置:全局参数怎么定

manim 默认输出 1920×1080 横屏,手机上这一帧有一半像素是浪费的。把输出尺寸和逻辑画幅都改成竖屏比例,是参数层唯一要做的两件事。

参数竖屏推荐值为什么这么取
pixel_width1080手机屏幕主流宽度
pixel_height1920保持 9:16 竖屏比例
frame_rate30手机播放流畅,渲染量减半
frame_width8.0缩小逻辑宽度,元素更大
frame_height14.22与 9:16 比例严格匹配

这里要分清两组参数:pixel_width、pixel_height 决定物理清晰度;frame_width、frame_height 是逻辑坐标系,决定一屏装下多大的坐标范围。逻辑画幅取 8.0 × 14.22 时,比例与像素严格一致,画面不会被拉伸变形。

下面这段配置写入工作目录下的 manim.cfg,对后续所有渲染全局生效:

[CLI] pixel_width = 1080 pixel_height = 1920 frame_width = 8.0 frame_height = 14.22 frame_rate = 30

临时覆盖某一次运行,用命令行参数即可,它的优先级高于 manim.cfg。

manim 竖屏布局改造:坐标系场景怎么写

像素分辨率管清晰度,逻辑画幅管一屏放多少内容。竖屏时画幅变高变窄,内容只能自上而下排,别把元素横向铺开。下面这个正弦函数坐标系场景演示竖屏排法:

from manim import * class PortraitSineScene(Scene): def construct(self): axes = Axes( x_range=[0, 2 * PI, PI, TINY], y_range=[-1.5, 1.5, 1, TINY], x_length=6.4, y_length=5.5, ) curve = axes.plot(lambda x: np.sin(x), color=ORANGE) title = Text("正弦函数 y = sin x", font_size=36).to_edge(UP) self.play(Create(axes)) self.play(Create(curve), Write(title)) self.wait()

三个要点:

  • Axes 默认撑满整个逻辑画幅,竖屏下会把 y 轴拉得很高、曲线贴住上边缘,必须用 x_length 和 y_length 显式限制尺寸。
  • 标题 font_size 从 36 起步。竖屏里一行能排的字少,字号再小就会在手机上看吃力。
  • 标题置顶、坐标系居下的顺序,符合手机上的阅读习惯。

manim 质量档位选择:-ql 到 -qk 怎么用

布局确认后选最终档位。manim 自带四档,数值如下表:

档位分辨率帧率适合谁
-ql854×48015布局快速预览
-qm1280×72030横屏移动端成片
-qh1920×108060大屏、横屏高清
-qk3840×2160604K 存档,手机用不上

注意一个冲突点:-q 档位会强制覆盖像素尺寸为横屏值,所以竖屏成片不要带 -q,直接用 manim.cfg 里的参数渲染即可,档位只在快速预览时用。

输出格式用 --format 指定,各一句话:

  • MP4(默认):手机播放器兼容性最好,首选。
  • WebM:同画质下体积更小,适合网页内嵌。
  • GIF:适合聊天软件里转发短片段,时长一长体积就爆。

踩坑对照:从现象到处理

  1. 现象:手机播放时画面被裁切或上下黑边。原因:pixel_width 与 pixel_height 的比例和手机屏幕不一致。处理:统一用 9:16 或 16:9,别取 4:3 这种中间比例。
  2. 现象:文字渲染出来比预期小很多。原因:缩小 frame_width 后没有同步调大 font_size,元素在更宽的坐标范围里被摊薄。处理:标题字号提到 36 以上再复查。
  3. 现象:文件大到聊天软件转发失败。原因:按 -qh 甚至更高帧率输出。处理:降到 -qm,体积通常减半以上。
  4. 现象:曲线超出屏幕上下边缘。原因:竖屏画幅里 Axes 仍默认撑满全幅。处理:显式传入 x_length、y_length 固定尺寸。

多设备验收:人工检查清单

成片后按这 4 项人工过一遍,不需要脚本:

  1. 在手机图库打开缩略图,确认画面铺满、无黑边、无裁切。
  2. 转发文件到真机播放,用播放进度条拖到首帧和末帧抽看内容完整。
  3. 核对文件体积,转发场景控制在 50MB 内,超标就降档重渲。
  4. 平板上放大查看文字边缘,发糊说明分辨率不够,升一档。

收尾

移动端适配的本质就两组匹配:像素比例对齐屏幕,逻辑画幅对齐内容。建议先用 -ql 快速验证布局,确认无误后再按目标参数出成片。

【免费下载链接】manimA community-maintained Python framework for creating mathematical animations.项目地址: https://gitcode.com/GitHub_Trending/man/manim

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 14:30:40

Node.js+Vue自习室预约系统架构设计与实践

1. 项目背景与核心价值自习室预约管理系统是当前高校和公共图书馆数字化转型中的刚需产品。传统的人工登记方式存在排队时间长、座位利用率低、管理成本高等痛点。我们团队基于Node.jsVue技术栈开发的这套系统,在3所高校实际运行中实现了95%以上的座位利用率&#x…

作者头像 李华
网站建设 2026/9/16 14:29:40

Android工业RFID开发:Java直驱HAL层实战指南

简介:这是一套面向Android开发初学者与RFID行业应用开发者的学习型实战源码,聚焦于仓储物流场景下的物料全流程追踪管理。项目基于Java语言开发,完整实现盘询标签、物料入托、托盘/物料入库与出库等核心业务功能,可直接部署到Andr…

作者头像 李华
网站建设 2026/9/16 14:29:40

亚马逊A9算法与领导者效应实战解析

1. 亚马逊商业生态中的"领导者效应"解析在亚马逊这个全球最大的电商平台上,"成为第一"绝非简单的营销口号,而是一个经过验证的商业法则。作为从业多年的亚马逊运营专家,我发现许多卖家对"领导者效应"的理解仅停…

作者头像 李华