分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

zeux/meshoptimizer

多媒体与设计

优化、压缩并简化 3D 网格与 glTF 资产,让渲染更快、占用空间更小。

8,722
740
C++
MIT
创建于 10 年前

meshoptimizer 是一组面向实时 3D 渲染数据侧的 C/C++ 算法库:重排与压缩顶点/索引缓冲、简化网格,并为现代光栅化和光线追踪构建 cluster。它面向图形程序员和引擎/工具链开发者,处理 glTF 或自定义几何格式,而不是寻找点点点式网格编辑器的人。头文件兼容 C(实现是 C++),因此也可通过 FFI、Rust crate 或部分算法的 JavaScript 包在其他语言中使用 文档。

工作流中的实际变化

库把工作组织成有序的核心管线:索引化(去除冗余顶点)、顶点缓存优化、可选的 overdraw 优化、顶点 fetch 重排、顶点量化、索引过滤,以及可选的 shadow indexing。顺序很重要——例如顶点 fetch 优化必须作用于最终索引缓冲,shadow indexing 要在其他顶点/索引优化之后进行 管线文档。此后,无损的顶点与索引编码器期望输入已优化且已量化的数据;喂入未优化的网格会得到很差的压缩率 压缩文档。

简化是另一条主要路径。meshopt_simplify 返回复用原顶点的新索引缓冲;变体支持属性感知的误差加权、跨属性接缝折叠(permissive 模式),或原地更新顶点位置——最后一种会覆盖原顶点缓冲,若仍需原网格必须先复制 简化文档。

Cluster、mesh shader 与光线追踪

面向 meshlet 管线,库可构建并划分 cluster,用于 mesh shading 或 clustered 光线追踪,并提供专门的 meshlet 与点云编码器,以及用于 DXR2 风格压缩位置编码的 position exponent 辅助函数 cluster 文档。文档明确说明:对静态几何,clustered 光线追踪相较传统 BLAS 会降低性能,其价值在于可为形变或分层 LOD 单独更新 cluster 光追章节。

要求与限制

  • 可用 CMake 构建,或只把需要的 src/*.cpp 加入工程;发行版也为多个 Linux 发行版、vcpkg 和 Conan 提供包,GitHub 上有当前发布分支 安装。
  • 随附的 gltfpack 命令行工具可自动优化 glTF 文件;文档指出 npm 版本比原生二进制效率低且不支持纹理压缩 gltfpack。
  • 非实验 API 在更新间保持源码、二进制和行为兼容,但算法输出不保证完全一致;实验 API 可能变更或被移除 实验 API。
  • 旧版本编码的数据可用新版本解码;正确设置或固定格式版本时,新版本编码的数据也可在旧版本上解码;meshlet 数据没有内嵌版本头 版本兼容。
  • 自定义分配器在内存不足时必须抛出异常或中止——README 明确指出 malloc 不满足这一约定 内存管理。
  • MIT 许可证;README 要求在面向用户的文档中署名 许可证。

HotRepo 点评

2026-07-10 至 07-12 以及 2026-10-30 有每日榜观察记录(星标从 7,985 到 8,718),但样本太稀疏,无法判断趋势;项目本身自 2016 年就已存在 仓库。

本文由 AI 根据项目 README 生成,更新于 2026年10月30日,以项目官方文档为准。

Hacker News 讨论

Meshoptimizer Version 1.3 Released
▲ 1 · 0 条评论 · 2026年9月30日