通过 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 项目原本的开源性质形成对比。

Sources