加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

基于Meshlab的开发

(2014-12-20 21:05:25)
标签:

3d

geometry

cg

meshlab

分类: 计算机图形学
【Meshlab简介】
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_3dsmeshlabplugins/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:网格模型类。网格模型的访问和使用就需要基于它了。
      点类型CVertexO,面类型CFaceO,边类型CEdgeO,网格类型CMeshO(派生自vcg::tri::TriMesh)
mlapplication.h : meshlab的应用程序类。
mlexception.h : 异常管理类。
pluginmanager.h : 脚本接口管理类。
其他略。
3.如何编写一个自己的插件:
可以参考meshlab源码网站的列子:http://meshlab.sourceforge.net/filter.html
4.如何遍历网格点和面
int CMeshO.sfn  //The number of selected faces
int CMeshO.svn //The number of selected vertices.

5.如何给网格点、面着色




0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有