通过 WebGPU 和 Rust 在浏览器中运行 Manim
通过 WebGPU 和 Rust 在浏览器中运行 Manim
浏览器中的实时 Manim 渲染
Manim 动画引擎的新实现使得数学动画可以直接在浏览器中实时渲染。这是通过在 Rust 中重新实现 Manim Python API 并利用 WebGPU 进行硬件加速渲染来实现的,从而消除了对本地安装或沉重的服务器端渲染的需求。
技术架构
系统架构将高性能系统语言与现代网络标准相结合,以在浏览器中提供基于 Python 的 API:
- 核心实现: 底层引擎用 Rust 编写,保持与 Grant Sanderson (3Blue1Brown) 创建的原始 Manim 库相同的 Python API。
- 互操作性: Rust 通过 PyO3 连接到 Python,使引擎能够与 Python 语言进行交互。
- 渲染管道: Rust 代码使用
wgpu,这是一个跨平台图形 API。当编译为 WebAssembly (Wasm) 时,wgpu目标为 WebGPU API,使得动画可以通过浏览器在用户的 GPU 上实时渲染。 - 执行环境: Rust 组件被编译为 WebAssembly,以便 PyO3 扩展可以在 Pyodide(浏览器的 Python 发行版)中加载。
集成开发环境
该平台提供一个基于云的编辑器,专为快速迭代而设计:
- 代码编辑器: 环境使用 Monaco 编辑器(VS Code 的基础)提供专业的编码体验。
- 实时预览: 系统具有一个实时预览窗口,使用户能够在编写 Manim 代码时实时看到动画更新。
- AI 集成: 内置的 AI 代理被包含在内,以通过“vibe-coding”帮助用户生成动画代码。
用户反馈和技术限制
社区反馈突出了浏览器端实现的技术成果以及一些当前的限制:
- 浏览器性能: 用户报告在不同浏览器上的性能有所差异,有些用户指出在 M1 Mac 硬件上,Firefox 提供比 Chrome 更流畅的体验。
- 硬件兼容性: 一些在 Windows on ARM 上的用户遇到了问题,即由于缺少兼容的 GPU,实时预览无法启动,尽管浏览器支持 WebGPU。
- 替代工具: 社区成员指出,原生浏览器动画库如 Motion Canvas 可作为寻求浏览器原生工作流程的用户的替代选择。
社区争议
该项目因其商业模式和许可证而在 Hacker News 社区中受到批评:
"看起来很有趣,但老实说,我对你使用 AI 重写他人库的想法感到反感,而现在你正在使用他们的名字和品牌来推广基于他们工作的 $20-$100 per month 工具。"
批评者表达了担忧,认为该实现是闭源的并且收取月度订阅费,这与 Manim 项目原本的开源性质形成对比。