一、配置
如果要自己编译什么的就按官网一步步来。
如果想直接用编译好的,就下载对应的版本。比如我下载了openmesh4.0的vs2010,64位版,是个exe文件,安装一下。
然后新建一个project,在include和lib目录里把openmesh的目录加上。在c++的附加依赖项里加上2个lib,debug的加debug版本,release的加release版本。在preprocessor里加上_USE_MATH_DEFINES
注意64位的project的属性也得是x64,不能是win32.
配置完了把官网的第一个教程贴上去,运行一下。成功的话会有一个output.off文件,里面就是一个立方体。
二、走教程
配置好了,下一步就是跟着官方的教程走一遍。
第一个教程是建一个立方体。过程挺简单,首先把8个顶点加进mesh里,同时抽出到VertexHandle里,然后通过handle把通过顶点定义的6个面依次加到mesh里。最后写入off格式的文件。这个教程是让我们了解了openmesh对顶点、面、网格的基本操作,灰常简单。
第二个例子是教你怎么遍历一个网格的所有顶点(iterators )和遍历某个顶点周围的邻居顶点(circulators)。然后举得例子是对每个顶点,都算出其邻居顶点的中心,然后用这个中心替换掉原来的顶点,这样就相当于做了一个均值平滑。这里主要是看看对MyMesh::VertexIter和MyMesh::VertexVertexIter的使用。
第3个教程是说明了openmesh支持给mesh加property。什么是property呢?这里的property支持用户自定义,也可以采用传统的网格的参数。比如顶点,其实就是一种property。这个设定可以很好地让用户实现自己对网格的扩展。
第4个教程是说怎么结合stl写代码。有时候这样写可以提升写代码的效率。这一节跳过。
第5个教程可以看做是对教程3的补充,列举了standard properties。包括颜色、法向量、位置等。这个例子首先假设read了一个有面法向量信息,而没有顶点法向量信息的mesh。然后通过update_normals()来计算顶点法向量信息。最后将顶点按其法向量平移一个单位。这里主要是看对标准property的request和update操作。
第6个教程是讲traits的。其实没怎么看懂。看实例是用traits来规定mesh里面的一些格式、数据类型之类的。
第7个教程接着讲traits。好像上一讲是讲类型,这一讲是讲traits定义函数和成员变量的样子。。。
第8个教程讲的是删除mesh的元素。主要是要删除face,然后可以选择在删face的时候自动删相关的vertex,也可以自己手动删。