透過 WebGPU 與 Rust 在瀏覽器中使用 Manim

透過 WebGPU 與 Rust 在瀏覽器中使用 Manim

在瀏覽器中進行即時 Manim 渲染

Manim 動畫引擎的一種全新實作方式,讓數學動畫能夠直接在瀏覽器中進行即時渲染。這是透過在 Rust 中重新實作 Manim Python API,並利用 WebGPU 進行硬體加速渲染來實現的,從而消除了對本地安裝或繁重伺服器端渲染的需求。

技術架構

該系統架構結合了高性能系統語言與現代 Web 標準,將基於 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 editor(VS Code 的基礎)來提供專業的編寫體驗。
  • 即時預覽: 系統具備即時預覽視窗,讓使用者在編寫 Manim 程式碼時,能即時看到動畫的更新。
  • AI 整合: 內建了 AI 代理,透過「vibe-coding」協助使用者生成動畫程式碼。

使用者回饋與技術限制

社群回饋強調了瀏覽器實作方案在技術成就與目前限制方面的兩面性:

  • 瀏覽器效能: 使用者回報不同瀏覽器間的效能差異,部分使用者指出在 M1 Mac 硬體上,Firefox 比 Chrome 提供更流暢的體驗。
  • 硬體相容性: 部分使用 Windows on ARM 的使用者遇到即時預覽無法啟動的問題,原因是儘管瀏覽器支援 WebGPU,但缺乏相容的 GPU。
  • 替代工具: 社群成員指出,對於尋求瀏覽器原生工作流的使用者,可以考慮 Motion Canvas 等原生瀏覽器動畫函式庫作為替代方案。

社群爭議

該專案在 Hacker News 社群中因其商業模式與授權問題面臨批評:

「看起來很有趣,但老實說,讓 AI 重寫別人的函式庫,然後利用他們的名字和品牌來推廣你基於他們作品所開發的每月 20 到 100 美元的工具,這點讓我感到反感。」

批評者表示擔憂,認為該實作是閉源的且收取月費,這與 Manim 專案原始的開源性質形成鮮明對比。

Sources