- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于三维网格模型数据在Matlab中输入与处理
基于三维网格模型数据在Matlab中输入与处理
摘要:利用Matlab强大的图像处理功能,实现了对三维网格模型中数据的输入与绘制。与用其它语言编程来实现这个目标相比,在Matlab中更加简单易行,并且对编程者的编程技巧要求较低。为三维图形在Matlab中的后续处理奠定了良好的基础。
关键词:三维网格模型;Ply格式;Wrl格式;图形处理;Matlab
中图分类号:TP391文献标识码:A文章编号2012)009011803
1Ply格式文件和Wrl格式文件
1.1Ply文件及其格式
Ply格式文件是Stanford大学开发的一套三维网格模型数据格式,如Dragon、Happy Buddha、Bunny等著名模型数据都是属于这个三维扫描数据库。作为一种多边形模型数据格式,Ply只用于描述一个多边形模型对象,该模型对象可以通过诸如顶点、面等数据进行描述,每一类这样的数据被称作一种元素。它允许以ASCII码格式或二进制形式存储文件,结构简单但能满足大多数图形应用需要的模型格式。Bunny.ply文件的格式如下:
大型企业非结构化数据管理平台建设提供了可借鉴的成功经验。
1.2Wrl文件及其格式
Wrl是VRML的场景模型文件的扩展名,是一种基于网络的虚拟现实纯ASCII的文本格式文件,主要是用来描述三维立体布局,可用文本编辑器打开和编辑。这种文件对计算机硬件要求较高。nefertiti.wrl文件格式如下:
2三维网格数据在Matlab中的输入、处理
在Matlab中,scatter3函数的格式为:scatter3(X,Y,Z,S,C),功能是绘制向量的散点图,有5个参数,其中X,Y,Z为具有相同长度点的向量;S确定点的大小,也可以是一个向量;C确定点的颜色,也可以是一个向量;参数S、C是可选项。
函数patch有一种patch(FV) 格式,功能为利用顶点和面数据在三维坐标中生成一个曲面图。其中格式是patch(faces,表示面的数据(三维矩阵),vertice,顶点数据(三维矩阵),facecolor,[R ,G, B])。
2.1数据预处理
对这两种文件格式的数据进行预处理时,除了文献[5]提到的方法外,还可以采用以下方式更加快捷地进行。由于Ply和Wrl的格式文件都可以用记事本打开,但Ply文件打开后数据很密集,很??看出顶点数据和面数据,所以可以全选-复制,将其粘贴到Word文档中,这样数据格式就很清晰了。Matlab可以直接打开Txt格式的文件,分别把Ply和Wrl格式中顶点和面数据拷贝到Txt文件中用Matlab打开就可以了。由于点面数据中还包含其他信息,比如法向量、颜色等,对于数据量小的文件,可以通过Matlab矩阵运算去掉不需要的数据,但对数据量特大模型,这样做使得程序运行很慢,所以可以通过Load命令打开原始数据Txt文件后,在Workspace窗口中,将需要的数据列选中复制粘贴到另一个Txt文件中,就省去了每次运行程序都要对原始数据进行运算的时间,加快了程序的执行速度。
2.2程序实现
以顶点为34834,面为69451的bunny. ply为例来编写的程序如下:
(1)生成曲面图形程序:
load F:matlab三维图形1bunnyver.txt //打开相应路径下的顶点数据文件ver.txt;
load F:matlab三维图形1bunnyface.txt //打开相应路径下的面数据文件face.txt;
face=face+1%patch函数中面数据不能为0,故给向量+1;
patch(faces,face,vertice,ver,facecolor,[0.4804,0.4804, 0.9804])//绘制平面图
view(-10,80)//视图
light(position,[0.1,0.5,5])//灯光的位置
lightangle (90,-90)//灯光角度
lighting gouraud//光照模式
(2)生成散点图程序:
load F:matlab三维图形1bunnyver.txt
ver=ver//ver矩阵转置
x=ver(1:1,:) //将ver第一行的所有向量赋给x
x=x//将行向量x转置成列向量
y=ver(2:2,:)
y=y
z=ver(3:3,:)
z=z
scatter3(x,y,z,*)//绘制散点图
view(-10,80)//视图
对Wrl格式文件中的数据处理跟Ply文件类似,这里就不再重复了。下面分别给出了两个常见Pl
文档评论(0)