
OpenMesh
文章平均质量分 77
织田信长
西安电子科技大学通信工程专业中国科学技术大学多媒体技术
展开
-
【OpenMesh】如何使用OpenMesh创建项目
在这篇指南中我们将会解释如何使用OpenMesh创建项目并且使用CMake构建系统。我们假定你已经下载了OpenMesh的源代码并安装了CMake构建工具。按照下面的几步添加你自己的应用到构造树中:到OpenMeshRoot/src/OpenMesh/Apps中创建一个新的目录,名为"MyPwnProject"现在创建一个新的文件名为"CMakeLists.txt"包含下列代码:翻译 2013-07-19 17:21:41 · 1541 阅读 · 1 评论 -
【OpenMesh】存储自定义属性
OpenMesh的专有OM格式允许存储和恢复自定义属性,以及标准的属性。我们必须使用指定的自定义属性,像下面的代码显示的一样。OpenMesh::VPropHandleT vprop_float;mesh.add_property(vprop_float, "vprop_float");我们给顶点注册一个浮点属性,名为"vprop_float"。属性的名字需要符合一些规定,如果我们想要长翻译 2013-07-22 22:16:40 · 1325 阅读 · 0 评论 -
【OpenMesh】删除几何元素
这个小例子演示如何移除网格中的面和顶点。我们使用第一个例子中的正方体。如果我们希望我们的网格能够移除顶点,面或者边,我们必须为网格类扩展默认特性。顶点,面和Halfedge需要OpenMesh::Attributes::Status属性,这个属性用于当一个元素被删除的时候保持其已删除标记。定义网格特性的结构如下:struct MyTraits : public OpenMesh::翻译 2013-07-20 19:07:17 · 1581 阅读 · 0 评论 -
【OpenMesh】使用IO::Options
这个例子展示了:如何控制Mesh::IO::read_mesh()行为,如何控制Mesh::IO::write_mesh()行为。OpenMesh::IO::Options可以用作读写网格。这个类通过开关相应的bit位实现控制读写器的行为。这个类提供接口实现开、关和修改相应的位。我们区分一下的控制位mode bit-控制二进制读写Options::BinaryOptions翻译 2013-07-20 22:56:24 · 1701 阅读 · 0 评论 -
【OpenMesh】使用特性扩展网格
原文出处:http://openmesh.org/Documentation/OpenMesh-Doc-Latest/tutorial_07.html例子显示:如何使用特性扩展实体的性能在之前的指南中我们使用属性和改变Point,Normal,TexCoord,和Color数据类型。但是我们可以使用特性(Trait)做更多。我们可以改变网格实体比如顶点,面,边和Halfedge的性翻译 2013-07-20 18:45:28 · 1199 阅读 · 0 评论 -
【OpenMesh】使用自定义属性
原文出处:http://openmesh.org/Documentation/OpenMesh-Doc-Latest/tutorial.html这个例子展示:如何添加和移除自定义属性如何取得和设置自定义属性的值再上一个例子中我们计算了每一个顶点的重心并将它们保存在Array中。如果我们将数据保存在网格中并由OpenMesh管理数据,这将会跟方便并且不易出错。如果我们连接这样的特性将翻译 2013-07-19 21:58:07 · 4358 阅读 · 0 评论 -
【OpenMesh】使用网格的属性和特征
例子主要展示如何改变位置,法向量,颜色和纹理的数据类型。在之前的指南中我们学习使用标准属性,通过调用适合的请求方法。不像自定义属性,用户通过传递数据类型到句柄来指定数据类型(比如,MyMesh::FPropHandleT),标准属性的数据类型定义为网格特征。我们可以和特征一起定制和扩展网格数据结构。我们通过两方面做到这一点。改变位置(Position),法向量(Normal),颜色(C翻译 2013-07-20 14:37:23 · 2122 阅读 · 2 评论 -
【OpenMesh】使用标准属性
这个例子展示:如何添加标准属性如何获取和设置标准属性的值正如之前所说,我们可以通过属性绑定数据到网格实体中。OpenMesh提供一连串的标准属性。不像自定义属性,标准属性有一些特定的功能和不同的接口,这就是这篇指南所要讨论的。下面的表格列举了所有可能的标准属性和能够使用这些属性适合的实体。 VertexFaceEdgeHalfedge翻译 2013-07-19 23:49:57 · 2232 阅读 · 0 评论 -
【OpenMesh】操作网格
介绍在这篇指南中你会学到如何使用OpenMesh类库操纵网格。在之前的一章中(参考Mesh Iterators and Circulators),你已经学了如何迭代顶点,边,halfedge和面,以及循环遍历某些结构比如1-ring。所以这篇指南中我们将会关注如何高效的使用halfedge数据结构和其中有用的特性比如说边界标志(boundary flag)。我们假定你已经熟悉OpenMesh中翻译 2013-07-15 16:45:48 · 3144 阅读 · 0 评论 -
【OpenMesh】使用STL算法
原文出处:http://openmesh.org/Documentation/OpenMesh-Doc-Latest/tutorial.html因为OpenMesh迭代器几乎与STL的迭代器一致,意味着可以对网格使用STL的算法。下列的示例代码展示了如何使用STL算法中的for_each,因为这样写可读性更好而比手写的循环效率更高。我们定义一个类提供平滑算法,因此定义一个可重用的组件。翻译 2013-07-19 22:15:14 · 1354 阅读 · 0 评论 -
【OpenMesh】网格的迭代器和循环机
原文出处:http://openmesh.org/Documentation/OpenMesh-Doc-Latest/mesh_iterators.html迭代器Mesh提供线性迭代(枚举定点,halfedge,边和面)。这些功能提供更加便捷的网格导航。每一个迭代器XYZIter迭代也存在常数型的迭代ConstXYZIter。所有的迭代器在名字空间OpenMesh::Itera翻译 2013-07-15 00:44:11 · 2603 阅读 · 1 评论 -
【OpenMesh】文件读取和写入
这一节讲的是从文件中读取网格数据和写入网格数据到文件的方法。响应的函数定义在名字空间OpenMesh::MeshIO中。这一节分成三部分。第一步给出例子讲述如何使用IOManager,第二步讲述IOManager的背景信息,第三步展示如何添加模块到IOManager。第一步IOManager快速开始复制以下代码到工程中。注意:如果你静态链接OpenMesh,你必须添加OM_翻译 2013-07-15 17:50:08 · 2662 阅读 · 2 评论 -
【OpenMesh】一些基本操作:翻转和折叠
这一节中你将学到一些OpenMesh中早已提供的基础操作。内容包括三角形网格边的翻转以及通过连接邻接的顶点边缘折叠。三角形网格的翻转(Flipping edges)考虑到两个邻接面的三角形网格中存在两种不同内部边缘设置。调用函数OpenMesh::TriConnectivity::flip(EdgeHandle _eh)将翻转特定的边到其相反的方向,如下图所述。下面的代码段翻译 2013-07-16 15:50:02 · 3085 阅读 · 2 评论 -
【OpenMesh】概念类层次结构
因为这里没有OpenMesh类和大量采用C++模板的类库,我们展示了OpenMesh::TriMesh_ArrayKernelT继承图,作为所有网格类型的代表。请注意!大多数继承关系已经实现了模板参数化!因此有一些继承关系没有在参考继承图中文档化。构建内核BaseKernel定义了基础的属性操作比如 add/remove/access。接下啦,AttribKernelT添加翻译 2013-07-16 16:31:56 · 1063 阅读 · 0 评论 -
【OpenMesh】指南(代码示例)
OpenMesh库是处理多边形网格强有力的库。因为OpenMesh的内在创建结构允许用户创建用户定制的网格类型,这种网格类型针对特定需求的应用。用户可以应用自己的数据结构来表示顶点,边,和面,或者便捷地使用预先定义的数据结构。另外,OpenMesh提供动态特性允许用户运行时连接或者中断一个数据。这篇文档介绍OpenMesh的基本概念。在这个指南中,我们通过代码示例介绍OpenMesh库翻译 2013-07-19 17:02:19 · 1192 阅读 · 0 评论 -
【OpenMesh】创建一个正方体
原文出处:http://openmesh.org/Documentation/OpenMesh-Doc-Latest/tutorial.html这个例程演示了:如何声明MyMesh如何添加顶点和面到Mesh中如何使用IO函数写入网格数据每一个程序第一步都是定义MyMesh类型。OpenMesh支持常见的多边形网格(面由可变顶点数的多边形组成)以及特殊的三角网格(所有面都是三角形的)翻译 2013-07-19 17:56:08 · 1585 阅读 · 0 评论 -
【OpenMesh】使用迭代器和循环机
原文出处:http://openmesh.org/Documentation/OpenMesh-Doc-Latest/tutorial.html这个例子展现:如何使用迭代器如何使用循环机这个例子是第一个版本的平滑器。我们将会介绍迭代器(iterators)和循环机(circulators)。这两个概念提供线性枚举的功能,比如网格中所有的顶点,围绕一个顶点循环,枚举所有的1-ri翻译 2013-07-19 18:20:31 · 1321 阅读 · 0 评论 -
【OpenMesh】Halfedge数据结构
这一节描述了下列用于存储mesh实体,定点,边,面和连接信息的数据结构。现在有很多种数据结构可以用来表示多边形网格。在这一节末引用的论文有详细的比较。在这个项目中使用的数据结构叫做halfedge data structrue。face-based数据结构存储连接信息在面上引用其中的顶点和邻接元素,edge-based 数据结构将连接信息放到边上。每一条边引用它的两个顶点,属于包含这条边的翻译 2013-07-14 00:40:16 · 2909 阅读 · 1 评论 -
【OpenMesh】Training:Getting Started with OpenMesh
内容出自236329 - Digital Geometry Processing, Spring2013 - Announcements上的OpenMesh Assignment感觉比较好,适合刚开始学习的同学。练习要求:这次的练习主要是写两个函数,calc_valences()和color_coding(),函数主要完成了计算一个Vertex的valence以及根据这个valence给图原创 2013-08-06 21:57:03 · 1852 阅读 · 0 评论