ply补全为立方体_PLY 文件结构

2023-11-16

典型的 PLY 文件结构:

头部

顶点列表

面片列表

(其他元素列表)

头部是一系列以回车结尾的文本行,用来描述文件的剩余部分。头部包含一个对每个元素类型的描述,包括元素名(如“边”),这个元素在工程里有多少,以及一个与这个元素关联的不同属性的列表。头部还说明这个文件是二进制的或者是ASCII的。头部后面的是一个每个元素类型的元素列表,按照在头部中描述的顺序出现。

下面是一个立方体的完整ASCII描述。相同工程的二进制版本头部的唯一不同是用词“binary_little_endian”或者“binary_big_endian”替换词“ascii”。大括号中的注释不是文件的一部分,它们是这个例子的注解。文件中的注释一般在“comment”开始的关键词定义行里。

ply

format ascii 1.0 { ascii/二进制,格式版本数 }

comment made by anonymous { 注释关键词说明,像其他行一样 }

comment this file is a cube

element vertex 8 { 定义“vertex”(顶点)元素,在文件中有8个

}

property float32 x { 顶点包含浮点坐标“x”}

property float32 y { y 坐标同样是一个顶点属性 }

property float32 z { z 也是坐标 }

element face 6 { 在文件里有6个“face”(面片) }

property list uint8 int32 vertex_index {

“vertex_indices”(顶点素引)是一列整数 }

end_header { 划定头部结尾 }

0 0 0 { 顶点列表的开始 }

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 { 面片列表开始 }

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

这个例子说明头部的基本组成。头部的每个部分都是以一个关键词开头以回车结尾的ASCII串。即使是头部的开始和结尾(“ply”和“end_header”)也是以这种形式。因为字符“ply”是文件的魔法数字,必须是文件的头四个字符。跟在文件头部开头之后的是关键词“format”和一个特定的ASCII或者二进制的格式,接下来是一个版本号。再下面是多边形文件中每个元素的描述,在每个元素里还有多属性的说明。一般元素以下面的格式描述:

element

property

property

property

...

属性罗列在“element”(元素)行后面定义,既包含属性的数据类型也包含属性在每个元素中出现的次序。一个属性可以有三种数据类型:标量,字符串和列表。属性可能具有的标量数据类型列表如下:

名称 类型 字节数

-------------------------------

int8 字符 1

uint8 非负字符 1

int16 短整型 2

uint16 非负短整型 2

int32 整型 4

uint32 非负整型 4

float32 单精度浮点数 4

float64 双精度浮点数 8

这些字节计数很重要,而且在实现过程中不能修改以使这些文件可移植。使用列表数据类型的属性定义有一种特殊的格式:

property list

这种格式的一类例子是上面的立方体文件中的:

property list uint8 int32 vertex_index

这表示属性“vertex_index”首先包含一个非负字符报苏在属性里包含多少索引,接下来是一个列表包含许多整数。在这个边长列表里的每个整数都是一个顶点的索引。

另外一个例子

------------

另外一个立方体定义:

ply

format ascii 1.0

comment author: anonymous

comment object: another cube

element vertex 8

property float32 x

property float32 y

property float32 z

property red uint8 { 顶点颜色开始 }

property green uint8

property blue uint8

element face 7

property list uint8 int32 vertex_index { 每个面片的顶点个数 }

element edge 5 { 物体里有5条边 }

property int32 vertex1 { 边的第一个顶点的索引 }

property int32 vertex2 { 第二个顶点的索引 }

property uint8 red { 边颜色开始 }

property uint8 green

property uint8 blue

end_header

0 0 0 255 0 0 { 顶点列表开始 }

0 0 1 255 0 0

0 1 1 255 0 0

0 1 0 255 0 0

1 0 0 0 0 255

1 0 1 0 0 255

1 1 1 0 0 255

1 1 0 0 0 255

3 0 1 2 { 面片列表开始,从一个三角形开始 }

3 0 2 3 { 另一个三角形 }

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

0 1 255 255 255 { 边列表开始,从白边开始 }

1 2 255 255 255

2 3 255 255 255

3 0 255 255 255

2 0 0 0 0 { 以一个黑线结束 }

这个文件为每个顶点指定一个红、绿、蓝值。为了说明变长vertex_index(顶点索引)的能力,物体的头两个面片是两个三角形而不是一个四边形。这意味着物体的面片数是7。这个物体还包括一个边列表。每条边包括两个指向说明边的顶点的指针。每条边也有一种颜色。上面定义的五条边指定了颜色,使文件里的两个三角形高亮。前四条边白色,它们包围两个三角形。最后一条边是黑的,他是分割三角形的边。

用户定义元素

------------

上面的例子显示了顶点、面片和边三种元素的用法。PLY

格式同样允许用户定义它们自己的元素。定义新元素的格式于顶点、面片和边相同。这是头部定义材料属性的部分:

element material 6

property ambient_red uint8 { 环绕颜色 }

property ambient_green uint8

property ambient_blue uint8

property ambient_coeff float32

property diffuse_red uint8 { 扩散(diffuse)颜色 }

property diffuse_green uint8

property diffuse_blue uint8

property diffuse_coeff float32

property specular_red uint8 { 镜面(specular)颜色 }

property specular_green uint8

property specular_blue uint8

property specular_coeff float32

property specular_power float32 { Phong 指数 }

这些行应该在头部顶点、面片和边的说明后直接出现。如果我们希望每个顶点有一个材质说明,我们可以将这行加在顶点属性末尾:

property material_index int32

这个整数现在是一个到文件内包含的材质列表的索引。这可能诱使一个新应用的作者编制一些信的元素保存在

PLY

文件中。这个练习应该保持在最小。试着将普通元素(顶点、面片、边、材质)改编用于新用途更好,使得其他能够读懂这些元素的程序在操作这些改编过的元素时更有用。比如,一个将分子描述成球体和圆柱体集合的应用。这将需要在包含分子的

PLY

文件里定义球体和圆柱体元素。然而,如果我们为了这个目的使用顶点和边元素(为每个添加半径属性),我们可以利用操作和显示顶点和边的程序。无疑不应该为三角形和四边形创建特殊元素,而应该使用面片元素。

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

ply补全为立方体_PLY 文件结构 的相关文章

  • 2023数学建模思路 - 案例

    更多数学建模案例 https mianbaoduo com o bread YpyXmZhs 一 背景 二 高斯分布的指数族形式 三 对数配分函数与充分统计量的关系 三 极大似然估计与充分统计量 lt
  • ppt转换成pdf免费软件

    为什么80 的码农都做不了架构师 gt gt gt ppt转换成pdf免费软件 导读 使用 ppt转换成pdf转换器当然是转换ppt文件的一个方法 但毕竟好的转换工具并不多 对于从事大量文案处理的工作人员来讲 没有一款专业好用的ppt转换成
  • Linux下使用鼠标滚轮

    Linux下使用鼠标滚轮 让acrobat pdfreader支持滚轮鼠标 这些天用acroread看pdf文件 发现不支持鼠标滚轮 很不爽 最终在水母上搜到了解决方法 将如下内容加到 Xresources文件中 AcroRead XmSc
  • 方差、标准差、协方差、协方差矩阵、散度矩阵

    方差 统计中的方差 样本方差 是每个样本值与全体样本值的平均数之差的平方值的平均数 概率论中方差用来度量随机变量和其数学期望 即均值 之间的偏离程度 1 统计 方差用来计算每一个变量 观察值 与总体均数之间的差异 为避免出现离均差总和为零
  • 小程序实现滚动加载(懒加载)

    前言 小程序是一项很受欢迎的技术 随着其能力的不断增强 越来越多的人开始使用小程序来完成各种任务 当我面面临一个页面有非常多的数据时 该如何处理呢 显然一次性全部加载完 会非常消耗性能的 为了解决这些问题从而出现了一种叫滚动加载的数据处理方
  • 数字时钟仿真电路设计

    课题设计要求 时间以24小时为一个周期 显示时 分 秒 具有校时功能 可以分别对时分秒进行单独校时 使其校正到标准时间 计时过程具有报时功能 当时间到达整点前十秒进行蜂鸣报时 为了保证计时的稳定及准确 须由晶体振荡器提供表针时间基准信号 准
  • 微信公众号开发config:fail,Error: invalid url domain总结自己遇到的几种原因

    1 JS接口安全域名配置错误 不要http 2 设置安全域名时 txt文件未在域名根目录下 3 appid错误 用了其他公众号的 4 ios手机 获取的当前url与实际不一致 详情见下一篇文章
  • Gradle版本7+ AAR包的引入应用

    ARR包的使用 作为一个安卓的初学者 因为某些个客户需要我们提供安卓SDK 我们压根没有移动端业务 为了赚钱 硬着头皮从0开始写一个SDK 终于我这个 百度战士 也靠百度打出了aar包 问题来了 当你搜索安卓如何引用aar 包的时候 是不是
  • Unity物体拖拽系统(一)

    在游戏制作的过程中 我们经常会遇到拖拽物体到某个位置并做其他操作的需求 比如我们会把装备拖动到装备栏来使用这个装备 为了方便的解决这个问题 我制作了一套耦合性比较低的拖拽系统 这套拖拽会适配我们之前制作的按键系统 很简单的就可以添加上手柄的
  • 哈希表查找失败的平均查找长度_哈希算法高大上?也不过如此

    01 知识框架 02 知识点详解 1 散列表的相关概念 什么是散列表和散列函数 是根据关键码值 Key value 而直接进行访问的数据结构 也就是说 它通过把关键码值映射到表中一个位置来访问记录 以加快查找的速度 这个映射函数叫做 散列函
  • VTK(0)---CMake工程

    VTK 0 CMake工程 目录 前言 一 指定cmake版本 二 设置工程 三 针对Qt 自动使用moc uic rcc程序预处理 h文件 ui文件等 四 平台移植问题 五 设置编译模式 六 找到包 七 包含头文件等 八 链接库文件 九
  • 自定义进度条,支持显示浮点数

    思路 QT原生的进度条默认只支持显示整型值 这里重新封装了进度条 支持显示浮点数 内部同时设置了进度条样式 支持显示提示信息 GitHub下载链接 https github com caochuanlin progressbar 头文件 c
  • 01.项目目录搭建以及styled-Components和Reser.css的结合使用

    首先 我们使用脚手架创建了一个新的项目 这里我们对项目的一些基本文件进行整理 首先将一些不需要的文件删除 删除之后留下一些需要的文件 如下 这里我们将原来的style css已经重命名为style js文件 下面安装styled Compo
  • NPM Magic

    NPM Magic package json package json 最起码要包含 name 和 version 快速初始化 package json npm init yes dependencies 生产环境依赖的包 devDepen
  • 安规电容,X电容,Y电容

    什么是安规电容 首先要说一下 安规 是安全规范的简称 安全规范对产品的装置与电子组件有明确的陈述及指导 以避免由于设计不良或使用不当而导致电击 能量 打火 拉弧 爆炸 火灾 辐射 机械与热 高温危险 化学危险等事故和灾害 要求生产厂商尽可能
  • Vue3训练营笔记

    vue3脚手架的详细使用说明 文档下载 https download csdn net download qq 42740465 87939368 spm 1001 2014 3001 5503
  • ROS学习(1)—Ubuntu20.04系统安装noetic学习日志

    1 前言 ROS知识自学 现有博文比较多 而且参差不齐 为了梳理自己的学习思路 形成自身的知识体系 撰写自己的学习日志文档 参考文章及链接均在文章末尾显示 2 主要安装步骤 2 1 更换源文件 添加软件源文件则是将国外服务器的下载地址更改为
  • 标识符和关键字的规则

    大家好 我是耀曜 这段事件没有怎么更新文章 主要是最近换工作 有一年的工作经验 说白了就是一个初级Java后端开发的新手 这段时间面了很多家 我也很纳闷问的都是基础差不多都忘掉了的 以后这段事间耀曜会发布一些关于面试的问题的总结 希望对看到
  • Android 数据的保存,检索,删除之Cursor

    今天遇到的一个问题是如何将数据删除后 将原来的id也相应的做改变呢 如果说对其id值进行逐个修改这也是可以的 但是当数据增多的时候 我们这么做就会很大程度上的降低程序的性能 所以我们想到的就是不要根据id的检索来获取数据库中的值 因为这样做

随机推荐

  • face-api.js中加入MTCNN:进一步支持使用JS实时进行人脸跟踪和识别

    如果你现在正在阅读这篇文章 那么你可能已经阅读了我的介绍文章 JS使用者福音 在浏览器中运行人脸识别 或者之前使用过face api js 如果你还没有听说过face api js 我建议你先阅读介绍文章再回来阅读本文 和往常一样 本文中为
  • C++实现顺序表与链表

    C 实现顺序表与链表 一 顺序表 之前已经对顺序表有了了解 需要注意的是读者如果疑惑以下代码没有实现头插与头删 是因为代码中任意插入与删除这两个函数可以实现此功能 下面有测试代码 读者也可以自行测试 代码如下 include
  • 手把手教你安装MINIGUI编程环境 (MINIGUI版本3.2.0)

    0 MINIGUI MiniGUI 是一款面向嵌入式系统的高级窗口系统 Windowing System 和图形用户界面 Graphical User Interface GUI 支持系统 由魏永明先生于 1998 年底开始开发 2002
  • Pycharm如何选择自动打开或不打开最近项目

    如下图
  • 【Milvus的安装和使用】

    0 介绍 milvus是一个用于存储 index索引和管理巨量由深度学习网络或者其他模型生成embedding vectors的工具 不同于常见的关系型数据库用来处理结构化数据 Milvus被设计用来处理由非结构化数据 如图像 音频等 生成
  • 超链接打不开是什么原因html,超链接打不开是什么原因

    演示工具 电脑型号 华硕adolbook14 2020 系统版本 windows10 具体原因及解决方法 1 如果是链接到本地文件的超链接无法打开 可能是相对路径和绝对路径的问题 绝对地址 是有完全的路径 如果超链接的路径写错了 就无法打开
  • java 源码欣赏,Logback源码赏析-日志按时间滚动(切割)

    引言 用过Logback的同学们大多都知道Logback日志框架可以自动按照某个时间点切割日志的功能 但了解其中工作原理的同学可能并不是很多 楼主今天就带领各位了解一下其中的核心源码 本文的示例引用了Logback 1 1 7版的源码 举个
  • 60 KVM Skylark虚拟机混部-安装和配置

    文章目录 60 KVM Skylark虚拟机混部 安装和配置 60 1 安装Skylark 60 1 1 硬件要求 60 1 2 软件要求 60 1 3 安装方法 60 2 配置Skylark 60 2 1 日志 60 2 2 功耗干扰控制
  • FPGA UART仿真

    摘自威三学员尤凯元 tb文件 Copyright c 2014 2019 All rights reserved Author Youkaiyuan v3eduyky 126 com wechat 15921999232 File tb t
  • 微信支付sign签名工具类

    secretKey为商户平台设置的密钥key params为非空参数集合 public static String genSignature String secretKey Map
  • ubuntu从内核源代码编译内核及替换内核

    1 下载ubuntu对应的linux内核源代码 apt catch search linux source 查看当前linux内核版本 apt get install linux source lt 对应的内核版本好 gt 下载对应的lin
  • 不列颠哥伦比亚大学推出面向硕士生和博士生的区块链项目

    点击上方 蓝色字 可关注我们 暴走时评 加拿大领先的研究型大学之一 不列颠哥伦比亚大学 UBC 正在为研究生推出获得区块链技术教育的途径 该项目计划专注于四个领域 健康与保健 清洁能源 监管技术和土着居民问题 并将于明年1月正式启动 作者
  • 解决PytestUnknownMarkWarning: Unknown pytest.mark.pre - is this a typo?

    问题描述 在pytest框架中 执行标记的用例时 出现了如下提示 PytestUnknownMarkWarning Unknown pytest mark pre is this a typo 这个提示的大致意思是pytest找不到标记 发
  • &1的用法

    看到不少大神都喜欢用 1来判断一些东西 但是作为渣渣的我总是不理解这个 1到底是有什么作用 今天写了程序看了一下 其实是判断奇偶用的 如果是奇数 其结果为1 偶数结果为false 我在这里想吐槽一下 大神为什么不直接mod2判断呢 incl
  • NO.18 什么是拜占庭将军问题

    本文是转载 转载自苏神的博客 原文地址 https www jianshu com p 5fea30b25f0a 拜占庭将军问题很多人可能听过 但不知道是什么意思 本文从非专业的角度来讲讲 拜占庭将军问题到底是说什么的 拜占庭将军问题 By
  • Vue全局自定义指令 和 局部自定义指令

    文章目录 自定义指令 Vue全局自定义指令 Vue局部自定义指令 Vue钩子函数 Vue钩子函数传参数详解 钩子函数简写或者合并 自定义指令 除了Vue核心的内置指令 例如 v model 和 v show等 以外 Vue也允许自己定义指令
  • Parsing error Unexpected token错误解决方案

    问题描述 import动态导入 将js文件单独打包时 webpack打包错误 import test then res gt 文件加载成功 console log res mul 2 5 catch gt console log 文件加载失
  • android native 使用opengl es画点线面图形(纯c++)

    一 首先需要对EGL进行初始化 void Renderer initEGL const EGLint attribs EGL SURFACE TYPE EGL WINDOW BIT EGL BLUE SIZE 8 EGL GREEN SIZ
  • Deprecated: __autoload() is deprecated, use spl_autoload_register()

    官网是这样说的 spl autoload register PHP 5 gt 5 1 0 PHP 7 spl autoload register 注册给定的函数作为 autoload 的实现 说明 spl autoload register
  • ply补全为立方体_PLY 文件结构

    典型的 PLY 文件结构 头部 顶点列表 面片列表 其他元素列表 头部是一系列以回车结尾的文本行 用来描述文件的剩余部分 头部包含一个对每个元素类型的描述 包括元素名 如 边 这个元素在工程里有多少 以及一个与这个元素关联的不同属性的列表