PLY格式文件

2023-11-04

PLY是一种电脑档案格式,全名为多边形档案(Polygon File Format)或 斯坦福三角形档案(Stanford Triangle Format)。

该格式主要用以储存立体扫描结果的三维数值,透过多边形片面的集合描述三维物体,与其他格式相较之下这是较为简单的方法。它可以储存的资讯包含颜色、透明度、表面法向量、材质座标与资料可信度,并能对多边形的正反两面设定不同的属性。

在档案内容的储存上PLY有两种版本,分别是纯文字(ASCII)版本与二元码(binary)版本。

每个PLY档都包含档头(header),用以设定网格模型的“元素”与“属性”,以及在档头下方接着一连串的元素“数值资料”。

一般而言,网格模型的“元素”就是顶点(vertices)面(faces),另外还可能包含有边(edges)、深度图样本(samples of range maps)与三角带(triangle strips)等元素。

无论是纯文字(ASCII)版本还是二元码(binary)版本的PLY文档,档头资讯都是以纯文字(ASCII)编码编写,说白了就是你能直接看懂的文字,接续其后的数值资料才有编码之分。

PLY档案以此行:

ply

开头作为PLY格式的识别。接着第二行是版本资讯,目前有三种写法:

format ascii 1.0

format binary_little_endian 1.0

format binary_big_endian 1.0

其中ascii, binary_little_endian, binary_big_endian是档案储存的编码方式,而1.0是遵循的标准版本(现阶段仅有PLY 1.0版)。在档头中可使用'comment'作为一行的开头以编写注解,例如:

comment This is a comment!

描述元素及属性,必须使用'element'及'property'的关键字,一般的格式为element下方接着属性列表,例如:

element <element name> <number in file>

 property <data_type> <property name 1>

 property <data_type> <property name 2>

 property <data_type> <property name 3>

'property'不仅定义了数值资料的型态,其出现顺序亦定义了数值资料的顺序。

内定的数值资料形态有两种写法:

一种是char uchar short ushort int uint float double,

另外一种是具有位元长度的int8 uint8 int16 uint16 int32 uint32 float32 float64

例如,描述一个包含12个顶点的物体,每个顶点使用3个单精度浮点数 (x,y,z)代表点的座标,使用3个unsigned char代表顶点颜色,颜色顺序为 (B, G, R),则档头的写法为:

element vertex 12

property float x

property float y

property float z

property uchar blue

property uchar green

property uchar red

其中vertex是内定的元素类型,接续的6行property描述构成vertex元素的数值字段顺序代表的意义,及其资料形态。

另一个常使用的元素是。由于一个面是由3个以上的顶点所组成,因此使用一个“顶点列表”即可描述一个面, PLY格式使用一个特殊关键字'property list'定义之。 例如,一个具有10个面的物体,其PLY档头可能包含:

element face 10

 property list uchar int vertex_indices

'property list'表示该元素面(face)的特性是由一行的顶点列表来描述。列表开头以uchar型态的数值表示列表的项目数,后面接着数值资料为int型的顶点索引值(vertex_indices),顶点索引值从0开始。

最后,标头必须以此行结尾:

end_header

档头后接着的是元素资料(端点座标、拓朴连结等)。在ASCII格式中各个端点与面的资讯都是以独立的一行描述,而二元编码格式则连续储存这些资料,加载时须以'element'定义的元素数目以及'property'中设定的资料形态计算各笔字段的长度。

举个栗子,一个描述8个顶点,6个面的立方体的PLY文件如下:

ply
format ascii 1.0           { ascii/binary, format version number }
comment made by Greg Turk  { comments keyword specified, like all lines }
comment this file is a cube
element vertex 8           { define "vertex" element, 8 of them in file }
property float x           { vertex contains float "x" coordinate }
property float y           { y coordinate is also a vertex property }
property float z           { z coordinate, too }
element face 6             { there are 6 "face" elements in the file }
property list uchar int vertex_index { "vertex_indices" is a list of ints }
end_header                 { delimits the end of the header }
0 0 0                      { start of vertex list }
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 1
1 1 0
4 0 1 2 3                  { start of face list }
4 7 6 5 4
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0

参考资料

https://www.cnblogs.com/liangliangdetianxia/p/4000295.html

https://blog.csdn.net/lafengxiaoyu/article/details/72871570

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PLY格式文件 的相关文章

随机推荐

  • 信息安全技术 信息安全风险评估规范

    风险处理计划 对不可接受的风险应根据导致该风险的脆弱性制定风险处理计划 风险处理计划中明确应采取的弥 补弱点的安全措施 预期效果 实施条件 进度安排 责任部门等 安全措施的选择应从管理与技术两 个方面考虑 安全措施的选择与实施应参照信息安全
  • Figma实用小技巧

    1 介绍 原作 草帽 视频地址 文字版整理 岩鸣杨子 2 快速拖拽调整数值 按住option可在数值上拖拽调整 不按option时只能在X Y W H 旋转 圆角等的图标上拖拽调整 不能调整透明度的数值 3 属性粘贴复制 shift X 互
  • java web选择题_Servlet、JSP选择题

    Java EE软件工程师认证考试 试题库 选择题 一 选择题 包括单选和双选 1 A 对于B S架构的工作流程 以下说法正确的是 选择一项 A 浏览器接受用户的输入 gt 浏览器向服务器端发送请求 gt 服务器端数据处理 gt 响应数据至客
  • shell命令:在windows的git bash执行ln -s 无效

    在windows的git bash执行ln s 无效 网上的方法试过 但是没用 仍然是创建文件及目录的拷贝而不是创建软链接 windows n WINDIR function common link if windows then echo
  • ImageLoader简单使用

    1 导包 implementation com nostra13 universalimageloader universal image loader 1 9 5 2 权限
  • kafka多个消费者消费一个topic_Kafka 为什么使用消费者组?

    1 消费者组的特点 这是 kafka 集群的典型部署模式 消费组保证了 一个分区只可以被消费组中的一个消费者所消费 一个消费组中的一个消费者可以消费多个分区 例如 C1 消费了 P0 P3 一个消费组中的不同消费者消费的分区一定不会重复 例
  • qt中插入数据库的数据类型是float类型时

    一般正常的插入数据库的类型为varchar类型时 我们可以在程序中QString类型来直接进行插入 如下数据库类型 2 但是如果你想要插入的是float类型的数据时 就会发现单纯使用QString是没办法进行插入的 如下数据库类型 3 这个
  • format 修改matlab数据显示的位宽

    修改matlab数据显示的位宽 format long maltab浮点数据显示一般默认小数点后四位 如 如果需要扩大显示的精度 可以使用format long 对于双精度数据显示15位小数位 对于单精度数据显示7位小数位 如 通过help
  • Spring中同一个service调用方法不回滚的解决方法

    在java配置类上添加注解 EnableAspectJAutoProxy exposeProxy true 方式暴漏代理对象 然后在service中通过代理对象AopContext currentProxy 去调用方法 Service pu
  • echarts 渐变

    series name 电流 A type line showBackground true itemStyle color 437EE0 areaStyle color type linear x 0 y 0 x2 0
  • 【毕业设计】深度学习指纹识别算法研究与实现 - python opencv

    文章目录 1 前言 2 指纹识别方式 2 1 电容式指纹识别 2 2 光学式指纹识别 3 指纹识别算法实现 3 1 指纹识别算法流程 3 2 指纹图像预处理 3 3 指纹图像目标提取 3 4 指纹图像增强 3 5 指纹特征提取 3 6 指纹
  • Java Web项目练习---信息管理系统

    一 项目简介 本次项目为Java Web的一个练习 是小白入门级较好的资料 文章如有不妥 请多多指教 1 技术需求 Servlet JSP MVC设计 JDBC MVC设计思想将整个项目分为三层结构 分别为model层 包括pojo层 da
  • <flutter>跨平台开发小白入坑 Dart Dio Pubspec 打包 MethodChannel 解析 Xcode hybrid

    1 资源文件和依赖三方包 pubspec yaml pubspec yaml文件可以说是和安卓的gradle文件差不多 它用来描述版本号 sdk 依赖等的 在资源导入方面同安卓不一样的是 flutter需要在pubspec yaml中声名
  • 大学生团体天梯赛L3-016 二叉搜索树的结构(非暴力解法,建树后O1查找)

    不难发现 里面绝大多数的查询都是跟父节点有关 所以我们每次插入的时候维护他和他的父节点 同层则再维护一个层节点 1 指针法 include
  • logback源码解析及自定义Appender、自定义logback.xml标签

    本文基于slf4j 1 7 25 目录 0 基本概念介绍 1 简单实用示例 2 加载解析配置logback配置文件源码解析 3 加载解析配置文件拓展点 3 1 标签对应复杂对象 默认用NestedComplexPropertyIA解析执行
  • VCS基本选项命令介绍

    一 如何执行 编译执行 1 编译链接生成二进制可执行文件 vcs source file compile time options 例如 vcs v2k filename v debug all 2k指2001版本 compile time
  • 怎么这么慢!:flask 和 node express 性能测试

    问题 我写完项目之后 顺手测了测性能 发现是真的低 测试环境配置 操作系统 win10 CPU Ryzen7 3700X 主板 微星8450M MORTAR MAX 显卡 技嘉RTX2060Super Windforce OC 内存 金士顿
  • 高级选择器

    div class test background ffff00 div class card container position relative margin 40px auto width 200px height 200px we
  • VirtIO实现原理——数据传输演示

    文章目录 初始化 示意图 代码分析 Guest第一次添加buffer 示意图 代码分析 Notify Host Host第一次处理buffer 示意图 代码分析 Guest第二次添加buffer Host第二次处理buffer 初始化 示意
  • PLY格式文件

    PLY是一种电脑档案格式 全名为多边形档案 Polygon File Format 或 斯坦福三角形档案 Stanford Triangle Format 该格式主要用以储存立体扫描结果的三维数值 透过多边形片面的集合描述三维物体 与其他格