开源项目

brush

brush

基于 Gaussian Splatting 的 3D 重建引擎,原生支持训练、查看和 CLI,能在桌面、移动端和浏览器上运行,利用 WebGPU 兼容技术和 Burn ML 框架实现跨平台。不同于依赖 CUDA 的方案,它生成无依赖的二进制文件,支持 AMD/Nvidia/Intel 显卡,训练时可实时交互查看进度。注意:非官方 Google 产品,来自 google-research 仓库的公开 fork。

README

Brush

展示Brush多种功能和场景的视频

特别感谢 @GradeEterna 提供的精美场景

Brush 是一个使用 高斯泼溅(Gaussian splatting) 的3D重建引擎。它适用于广泛的系统:macOS/Windows/Linux、AMD/Nvidia/Intel 显卡、Android 以及 浏览器。为此,它使用了兼容 WebGPU 的技术和 Burn 机器学习框架。

机器学习在实时渲染方面潜力巨大,但大多数 ML 工具并不能很好地与之配合:渲染需要实时交互,通常涉及动态形状和计算,无法在大多数平台上运行,而且携带大量 CUDA 依赖的应用可能难以发布。相比之下,Brush 生成的是简单的无依赖二进制文件,几乎可以在所有设备上运行,无需任何设置。

尝试网页演示 chrome logo 注意:目前仅适用于 Chrome 和 Edge。希望很快支持 Firefox 和 Safari。

功能

训练

Brush 可以接受 COLMAP 数据或 Nerfstudio 格式的数据集。训练完全原生支持,可在移动设备和浏览器中运行。训练过程中你可以与场景交互,实时观察训练动态,并在训练进行时将当前渲染结果与输入视图进行比较。

它还支持图像遮罩:

  • 带有透明通道的图像。这将强制最终 splat(高斯椭球)匹配输入的透明度。
  • 一个名为 'masks' 的图像文件夹。这会忽略被遮罩覆盖的图像部分。

查看器

Brush 也可以作为 splat 查看器,包括在网页中。它可以加载 .ply 和 .compressed.ply 文件。你可以通过 URL 流式传输数据(对于网页应用,只需附加 ?url=)。

Brush 还可以加载包含 splat 文件的 .zip 压缩包,以动画形式显示,或者加载包含 delta 帧的特殊 ply 文件(参见 cat-4D 和 Cap4D!)。

CLI

Brush 可以用作 CLI(命令行工具)。运行 brush --help 获取概览。每个 CLI 命令都可以与 --with-viewer 一起使用,同时打开 UI,方便调试。

Rerun

https://github.com/user-attachments/assets/f679fec0-935d-4dd2-87e1-c301db9cdc2c

训练过程中,额外的数据可以通过出色的 rerun 进行可视化。要在你的机器上安装 rerun,请按照他们的 安装指南 操作。在查看器中打开 ./brush_blueprint.rbl 以获得最佳效果。

构建 Brush

首先安装 Rust 1.88+。你可以使用 cargo test --all 运行测试。Brush 使用出色的 rerun 进行训练期间的额外可视化。如果你要使用它,请运行 cargo install rerun-cli。

Windows/macOS/Linux

使用 cargo run --release 从工作区根目录构建优化版本。使用 cargo run 运行调试版本。

Web

Brush 可以编译为 WASM。运行 npm run dev 启动使用 Next.js 的演示网站,查看 app/brush-app/web 目录中的 web 目录。

Brush 使用 wasm-pack 构建 WASM 包。你也可以在没有打包器的环境中使用它,参见 wasm-pack 的文档。

WebGPU 仍然是一个即将到来的标准,因此目前仅支持 Windows 和 macOS 上的 Chrome 134+。

Android

作为一次性设置,请确保已安装 Android SDK 和 NDK。

  • 检查 ANDROID_NDK_HOME 和 ANDROID_HOME 是否已设置
  • 将 Android 目标添加到 Rust:rustup target add aarch64-linux-android
  • 安装 cargo-ndk 以管理库构建:cargo install cargo-ndk

每次更改 Rust 代码后,运行:

  • cargo ndk -t arm64-v8a -o crates/brush-app/app/src/main/jniLibs/ build
  • 注意:为了获得最佳性能,请在发布模式下构建。这与 Android Studio 应用的构建配置是分开的。
  • cargo ndk -t arm64-v8a -o crates/brush-app/app/src/main/jniLibs/ build --release

现在,你可以通过 Android Studio 运行项目(Android Studio 不会编译 Rust 代码),或者通过命令行运行:

./gradlew build
./gradlew installDebug
adb shell am start -n com.splats.app/.MainActivity

你也可以在 Android Studio 中打开此文件夹作为项目,然后从那里运行。注意:在 Android Studio 中运行 不会 自动重新编译 Rust 代码。

基准测试

渲染和训练通常比 gsplat 更快。你可以使用 cargo bench 运行某些内核的基准测试。

致谢

gSplat,感谢其内核的参考版本

Peter Hedman、George Kopanas 和 Bernhard Kerbl,感谢他们的多次讨论和指点。

Burn 团队,感谢一路以来的帮助和对 Burn 的改进。

Raph Levien,感谢 GPU 基数排序的原始版本。

GradeEterna,感谢他们的反馈和场景。

免责声明

这 不是 官方 Google 产品。此仓库是 google-research 仓库 的一个分叉公开版本。

开源项目ArthurBrussee2026-05-13原文

相关内容