基于Meshlab的开发
(2014-12-20 21:05:25)
标签:
3dgeometrycgmeshlab |
分类: 计算机图形学 |
【Meshlab简介】
点类型CVertexO,面类型CFaceO,边类型CEdgeO,网格类型CMeshO(派生自vcg::tri::TriMesh)
MeshLab 是一个开源,方便携带,和可扩展的系统,用于处理、非结构化编辑 3D
三角形网格。Meshlab用QT开发,基于VCG库,当然还可基于其他的一些第三方库进行扩展。
源码及示例可在此处http://sourceforge.net/projects/meshlab/获取。
【Meshlab编译和运行】
编译的Meshlab是1.3.3版本,不同的版本需要的设置和出现的问题可能不尽相同,需要根据具体情况处理。
Meshlab1.3.3从http://sourceforge.net/projects/meshlab/获取,下载源代码的压缩文件,里面包括meshlab的源程序以及依赖的对应VCG库。将压缩文件解压缩,里面有meshlab、vcglib两个文件夹。
使用的QT 4.8.5,Visual Studio 2010
. 主要参照了http://blog.csdn.net/menglongbor/article/details/8942004里面的问题及解决方法。
1、src\external路径下的openctm.h头部添加: #define
OPENCTM_BUILD
2、用QTcreator打开external.pro文件对项目进行编译,得到MeshLab所需的外部库文件的静态链接库。
3、将编译生成的win32-msvc2010文件夹复制到路径src\external\lib中。
4、在QT
creator中打开Meshlab_mini.pro项目文件,然后执行qmake以及build后即可运行了。编译的是一个Meshlab的mini版本,主要的核心和网格处理的示例框架都包含了。
5、如果需要编译 Meshlab_full项目,则打开Meshlab_full.pro,将其中的meshlabplugins/io_3ds和meshlabplugins/filter_csg注释掉。(这两个插件要用到其他的库,而这里面没有。因为我并不用,一个是读写3ds格式的模型,一个是实体建模的,所以并不影响)。然后用VS2010打开后编译。
【Meshlab开发过程】
1.Meshlab_mini项目文件简介:
common:主要框架,其他的接口都基于它生成
meshlab:GUI框架
meshlabplugins/io_base: 基本的网格格式的文件读写
meshlabplugins/filter_meshing:一个插件的例子(网格简化处理的代码,其他插件可参考它的框架编写)
2.主要文件和类简介:
filterparameter.h :
数值类Value及其派生类型,用来管理插件中参数的设置和读取,例如:getFloat和isString等。
GLLogStrem.h :
日志类。通过它实时对日志文件进行读写。
interfaces.h:写插件最需关注的类之一了。所有插件从MeshFilterInterface类派生出来,里面定义了很多变量、常量和函数用来管理插件。
meshmodel.h:网格模型类。网格模型的访问和使用就需要基于它了。
mlapplication.h :
meshlab的应用程序类。
mlexception.h : 异常管理类。
pluginmanager.h : 脚本接口管理类。
其他略。
3.如何编写一个自己的插件:
可以参考meshlab源码网站的列子:http://meshlab.sourceforge.net/filter.html
4.如何遍历网格点和面
int CMeshO.sfn//The number of selected faces
intCMeshO.svn //The number of selected vertices.
5.如何给网格点、面着色
后一篇:一些算法

加载中…