Autoremesher:自动四边形重网格化工具
原标题:huxingyi/autoremesher
C++★ 1,859 stars+292 今日
速览
huxingyi/autoremesher 是一个基于 C++ 的自动四边形重网格化工具,能够将输入的三角网格或非结构网格转化为高质量的纯四边形网格。它适用于计算机图形学、游戏开发、CAD 和有限元分析等需要规则四边形网格的场景,处理速度快且输出网格拓扑规整。
AI 深度解读
这是什么
AutoRemesher 是一个跨平台的开源自动四边形重拓扑工具,由开发者 huxingyi 基于 C++ 编写,主仓库在 GitHub 上获得 1800+ Star。它能够将高多边形网格(high-polygon meshes)自动转换为干净的四边形拓扑结构(quad-based topology),广泛应用于 3D 建模、游戏资产优化、数字雕刻拓扑清理等场景。项目底层依赖 Geogram、libigl、isotropicremesher 等多个成熟计算几何库,并提供了 CLI 命令行模式,支持无图形界面的批处理。
解决的问题
在 3D 内容创作中,高精度雕刻模型(如 ZBrush 导出的数百万三角面模型)无法直接用于动画、游戏引擎或实时渲染,因为其拓扑结构混乱、非均匀、包含大量三角形。手工重拓扑(retopology)耗时且需要专业技巧。AutoRemesher 自动化地解决以下痛点:
- 将高多边形三角网格重构成低多边形但高质量的四边形网格,减少面数同时保持形状特征。
- 生成均匀、规整的四边形拓扑,便于后续 UV 展开、细分曲面、动画蒙皮等流程。
- 支持命令行调用,可集成到自动化管线中,替代手动操作。
核心功能
- 四边形重拓扑:输入高多边形 OBJ 或类似格式,输出指定目标四边形数量的干净网格。通过参数控制四边形密度和分布。
- 可调节参数:
--target-quads:设置目标四边形数量(如 50000)。--edge-scaling:控制边缘缩放因子,影响网格密度分布。--sharp-edge:锐边角度阈值,保留硬边特征。--smooth-normal:平滑法线权重,影响表面光滑度。--adaptivity:自适应度,控制局部细节保留程度。
- 跨平台支持:提供 Windows 预编译 exe、macOS DMG 安装包、Linux AppImage 三种主流分发格式,也可通过源码编译(支持 GCC/Clang/MSVC)。
- CLI 模式:无需 GUI,适合服务器或批处理脚本。示例命令可一键处理 armadillo.obj 模型并输出报告。
亮点 / 与同类相比
- 开源免费:基于 MIT 许可证,可自由使用、修改和商用,这在自动重拓扑工具中较为少见(同类工具如 Instant Meshes 虽开源但已停止维护,或如 ZBrush 的 ZRemesher 为商业软件)。
- 纯四边形输出:与许多输出混合三角/四边形的工具不同,AutoRemesher 专注于生成全四边形网格,这对细分曲面和动画绑定更友好。
- 高效且可脚本化:CLI 设计使其易于集成到 DCC 工具链(如 Blender、Maya 的自动化流水线),而同类开源工具如 QuadriFlow 或 Instant Meshes 的 CLI 支持较弱。
- 跨平台一致性:同一套算法在 Windows、macOS、Linux 上表现一致,且所有版本可离线运行,无需联网。
- 社区关注:被 CGChannel、80.lv、BlenderNation 等多家 3D 行业媒体报导,并在 Blender 社区中被推荐为独立于 Blender 的自动重拓扑解决方案。
适合谁用 / 上手
目标用户:
- 3D 建模师、数字雕刻艺术家:快速将高模转换为低模拓扑,用于游戏、动画或 AR/VR。
- 技术美术 (TA) 和工具开发者:需要集成自动重拓扑到自定义管线的开发者。
- 研究者和学生:研究网格处理、重拓扑算法,可参考其源码实现。
上手方式:
- 直接下载预编译包(Windows 为 zip,macOS 为 dmg,Linux 为 AppImage),解压后运行即可。
- 命令行快速体验(以 Linux 为例):
./autoremesher \ --input model.obj \ --output remeshed.obj \ --target-quads 10000 \ --sharp-edge 90.0 - 源码编译:需安装 Qt 5.15.2、TBB、CMake 等依赖,项目提供了 Linux/macOS/Windows 的详细编译步骤(见 README)。推荐 Windows 用户使用 Visual Studio 2022 并借助 CMake 构建 TBB。
- 首次在 macOS 运行可能被 Gatekeeper 阻止,需在“安全性与隐私”中手动允许。
查看原文 →github.com
