VCG简介与安装

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 of texture coordinates)
  • Hausdorff距离计算(Hausdorff distance computation)
  • 测地路径(Geodesic paths)
  • 网格修复能力(mesh repairing capabilities)
  • 等直面抽取和前沿的网格划分算法(isosurface extraction and advancing front meshing algorithms)
  • 泊松圆盘采样和其他的网格点采样算法(Poisson Disk sampling and other tools to sample point distributions over meshes)
  • 细分曲面(subdivision surfaces)

3 安装

  VCG lib在github上的项目主页网址是http://github.com/cnr-isti-vclab/vcglib/;稳定版本的发布网址为 https://github.com/cnr-isti-vclab/vcglib/releases 。自己下载安装下来,解压到某个文件夹下就ok了,无需进行其他的设置。解压之后,开发版的目录结构如下:
  VCG简介与安装_第1张图片
  VCG Lib的大部分由头文件组成,我们在项目中,只要将vcglib文件夹路径设置到项目的“include”目录(包含目录)中。然后使用时,只要包含其中需要的文件即可。主要文件夹简单介绍如下:

  • vcg:这是整个库的核心,其中定义了所有的算法和数据结构。该部分所有的C++代码都是STL支持的普通数据结构和算法,不包含任何其它标准库之外的库,而且可以发现,该部分只包含头文件(.h)
  • wrap:这里包含一些针对特定需求/上下文/库的VCG概念的封装。例如,所有的用于计算机硬盘上很多格式的网格数据的导入和导出;用OpenGL渲染三角形网格的代码;普通GUI工具如跟踪球
  • apps:这个文件夹包含一些用VCG Lib开发的命令行程序,很多例子都能在meshLab中找到,apps/simple文件夹包含的基础程序,简洁明了,很我们初学者看。
  • eigenLib:线性代数的eigen库最近的稳定版本的一个副本(相当于就是借用第三方库了),VCGLib中的高级矩阵操作都是基于这个库的。
      

你可能感兴趣的:(VCG,meshlab与vcg)