VCG笔记-如何定义mesh

VCG lib提供了很多对mesh进行编码的方式,最常见的就是由一个顶点(vertices )集合和一个三角形(triangles )集合构成,(即三角形构成三角形网格,四面体构成四面体网格)。如下面这行代码就是VCG中定义mesh类型的一个例子:

class MyMesh : public vcg::tri::TriMesh< std::vector<MyVertex>, std::vector<MyFace>, std::vector<MyEdge> > {};

其中vcg::tri::TriMesh是三角形网格的基本类型,结合如下模板参数进行具体定义:

  • 包含顶点的容器,通常是一个std::vector,用我们自定义的顶点类型来确定vector中的元素类型。
  • 可随机访问的包含面(face)的容器,同样地我们需要用自定义的面类型来确定该容器的元素类型。

也就是说,定义一个网格类型的时候,我们只需要继承vcg::tri::TriMesh,并提供包含编码网格元素的容器即可。在下面这个例子中,我们仍然使用元素类型为MyEdge(顾名思义,就是我们自定义的边的类型)的vector来表示边的集合。注意,VCG中并没有预先定义一个顺序来传递顶点,面,边容器参数,也就是说我们上面这样写只是惯例而已,也可以不按照这个顺序来传递参数。

#include <vector>
#include <vcg/complex/complex.h>

class MyVertex; class MyEdge; class MyFace;
struct MyUsedTypes : public vcg::UsedTypes<vcg::Use<MyVertex>   ::AsVertexType,
    vcg::Use<MyEdge>     ::AsEdgeType,
    vcg::Use<MyFace>     ::AsFaceType>{};
class MyVertex : public vcg::Vertex< MyUsedTypes, vcg::vertex::Coo
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值