【OpenMesh】概念类层次结构

因为这里没有OpenMesh类和大量采用C++模板的类库,我们展示了OpenMesh::TriMesh_ArrayKernelT继承图,作为所有网格类型的代表。

请注意!大多数继承关系已经实现了模板参数化!因此有一些继承关系没有在参考继承图中文档化。


构建内核

  1. BaseKernel定义了基础的属性操作比如 add/remove/access。
  2. 接下啦,AttribKernelT添加标准属性相关联的所有方法。
  3. 最后,ArrayKernelT提供add/remove/access 网格顶点、边、halfedge和面的方法。基础类作为参数传送,因为这取决于底层存储类型的AttribKernel可能会改变。

构建网格

  1. PolyMeshT继承自内核,并提供所有使用多边形网格的方法。
  2. 最终我们从PolyMeshT派生TriMeshT,使得拥有特定的三角形网格的类。
看下面简单但是有一点难懂的代码:
template <class Traits>
struct TriMesh_ArrayKernel_GeneratorT
{
typedef FinalMeshItemsT<ArrayItems, Traits, true> MeshItems;
typedef AttribKernelT<MeshItems> AttribKernel;
typedef ArrayKernelT<AttribKernel, MeshItems> MeshKernel;
typedef TriMeshT<MeshKernel> Mesh;
};
为了生成实际的网格类型帮助模板类TriMesh_ArrayKernel_GeneratorT被使用。它需要在一个模板参数的特征并将其传递到FinalMeshItemsT得到最后的类型的网格项目(MeshItems)。这个MeshItems定义了类型为点,法向,颜色,纹理坐标,顶点,所有的网格项目。MeshItems的帮助下创建AttribKernel的类型,它为项目定义了合适的标准属性。最后使用AttribKernel和MeshItems创建网格内核类型MeshKernel。那是一种获得内核的方式。只要创建的内核是符合内核的概念的(网格内核),我们可以很容易地创建网格。现在我们使用TriMeshT创建最终的网格类型。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值