mesh(三角面片)数据解析

mesh(三角面片)简介

Mesh是多边形网格,是计算机图形学中用于各种不规律物体建模的一种数据结构。在多边形网格的面片中三角面片是被分割的最小单位,且表示比较简单、灵活并且拓扑描述方便,所以被广泛使用,所以mesh常常指代三角面片。

mesh的一般组成:

mesh表示的组成部分:顶点,边,面。

mesh文件:

mesh文件是.obj(一种通用的三维模型的后缀) 和 .stl格式(一种标准的存储三角面片的格式)

mesh的另一种格式是pcl。但pcl除了能存储三角面片外还能存储四边形的面片等多种形状。

(注pcl生成的主要目标是建立一套又简单又灵活的文件格式,避免大家总是利用不同的格式,所以包容性很强,能够存储多中的三维模型,)

.ply:

.ply的数据存储形式是:文件头加元素列表。

头文件是可以自己进行灵活的定义的。

列表中存储具体的数值(可以ASCII码或者二进制数值)
在这里插入图片描述

.stl文件描述物体表面几何形状,(没有颜色),由表面的单位法向量和顶点组成。

.stl:
facet normalni nj nk
    outer loop
        vertexv1xv1yv1z
        vertexv2xv2yv2z
        vertexv3xv3yv3z
    endloop
endfacet

PCL利用VTK来对mesh操作:

PCL利用VTK的IO接口能够直接获取stl,obj,ply三种格式的mesh数据,

pcl读取mesh数据的接口函数:

pcl::io::loadPolygonFile (const std::string &file_name, pcl::PolygonMesh& mesh);

注:其中PolygonMesh是一种pcl中存储mesh的类。其中包括 三个主要成员:

::pcl::PCLHeader header;
::pcl::PCLPointCloud2 cloud; \\ 一种二进制的PCL的点云的数据存储格式。其中包含了点云的位置,颜色等信息,其中包含数据的size是正常点云size的20倍。
std::vector< ::pcl::Vertices> polygons;\\ 其中包含了面片之间的对应关系(既面片是由上面点云中的第几个点组成的面片)

将二进制的点云转换为ASCII码的点云的函数:

fromPCLPointCloud2(二进制点云,ASCII点云)

例子:

在这里插入图片描述
注:PCL操作部分参考:https://blog.csdn.net/liujiabin076/article/details/70242031#commentBox

推荐一个实现三维mesh数据转换的网址:

https://blog.csdn.net/liujiabin076/article/details/70242031#commentBox

  • 15
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值