1 学习背景
最近在需要用到meshlab中的网格简化与平滑功能并要嵌到自己的项目中,虽然meshlab提供的meshlabserver插件可以用命令行的方式实现,但是在执行的时候会弹出窗口,这样很不友好,于是开始研究meshlab的源码,最后发现meshlab中的简化和平滑功能原来是依赖于VCG这个库的,并且VCG是可以单独使用的,于是就开始学习VCG,然后封装成项目需要的接口。
2 VCG简介
VCG Libary是Visulization and Computer Graphics Libary(可视化与计算机图形学库)的缩写,是一个开源的C++模板库,用于三角网格和四面体网格的控制、处理和OpenGL显示。其中包含了超过100 000行的代码。基于该库,Visual Computing Lab开发了几个著名的工具,如metro和MeshLab。
VCG Libary是专门为处理三角网格而设计的,功能强大,提供了许多最先进的处理网格的功能,如(个人只用到简化和平滑功能,其他名词可能翻译不准哦):
- 基于边坍塌二次误差的高质量网格简化(high quality quadric-error edge-collapse based simplfication)
- 高效的空间检索数据结构(efficient spatial query structures)
- 先进的网格平滑算法(advanced smoothing and fairing algorithms)
- 曲率计算(computation of curvature)
- 纹理坐标优化(optimization