一、glTF、glb

glTF表示了渲染一个模型的几何数据、纹理数据、材质数据、元数据等。glTF一般用于表示一个具体模型,比如汽车、树木等,不会用于表示一个数字城市,数字城市一般用3DTiles来表示。

glTF的整体设计,概括有四点:第一,数据块(Buffer)连续,保证了读写性能;第二,提供了视图(View)和访问器(Accessor)的概念,在不损失数据块完整性的前提下提供类型信息和读取规范,保证了兼容性;第三,逻辑层和数据层分离,两者尽量分离,比如用户想要增加一种风格,只会牵连到逻辑层的调整,不会影响数据层的读写,保证了独立性;第四,逻辑层,也就是业务层是JSON形式,保证了扩展性。

GLTF代表Graphics Language Transmission Format(图形语言传输格式)。这种跨平台格式已成为Web上的3D对象标准。它由OpenGL和Vulkan背后的3D图形标准组织Khronos所定义,这使得GLTF基本上成为3D模型的JPG格式:Web导出的通用标准。

A-Frame和ThreeJS原生支持GLTF。尽管一些3D Web框架支持特定于平台的模型格式,如FBX和OBJ,但几乎每个框架都支持GLTF。如果有人要为你提供3D模型,你可以请求他们提供GLTF格式的版本。

GLB是GLTF模型的⼆进制⽂件格式表⽰。GLTF的node层次结构、mesh、材质、动画等信息都⽤⼆进制信息表⽰。
GLB⽂件主要包括Header和Chunks两部分,⽂件结构⽰意图如下:

Header
GLB⽂件的头部包含3部分,每部分由4 bytes组成,共12 bytes:
unit32 magic - GLTF标识符,数值为 0x46546C67,gltf的ASCII码值
unit32 version - GLTF版本号
unit32 length - GLB⽂件的⼤⼩,包括header和所有chunks的字节长度

Chunks

chunkLength - chunkData的长度
chunkType - chunk的类型,主要有JOSN和BIN(对应我们平时的scene.gltf和scene.bin的数据)
chunkData - chunk的binary数据

二、3D Tiles

是用于流式传输大规模异构3D地理空间数据集的开放规范。为了扩展Cesium的地形和图像流,3D Tiles将用于流式传输3D内容,包括建筑物,树木,点云和矢量数据。

3D Tiles的主要目的是改善大规模异构数据集的流和渲染性能。3D Tiles的基础是一种空间数据结构,它支持层次结构细节级别(HLOD),因此只有可见的图块才会被流式传输 - 并且只有那些对于给定3D视图最重要的图块。平铺有效载荷可以是二进制和上下文感知压缩的,例如,使用Open3DGC或oct编码。

在Cesium中有开源实现。

3D Tiles在glTF的逻辑层,也就是JSON部分增加了FeatureTable和BatchTable,以及LOD(tileset)概念,并对应提供了header(二进制存储)。从数据规范角度来看,继承了glTF优秀的部分,同时考虑了倾斜,点云,后续也会支持OSM,从数据类型的支持上也比较到位。

三、b3dm

Cesium的Batched 3D Tiles Data的简称,它是3DTiles规范的一部分,本质上b3dm也是使用glTF来存放数据的。用于表示3DTiles的每个瓦片(3d-tiles/specification/TileFormats/Batched3DModel at main · CesiumGS/3d-tiles · GitHub)。

C++学习(七十一)3Dtiles glTF glb b3dm相关推荐

  1. springboot学习(七十一)解决问题:the URL contained a potentially malicious String “;“

    访问某个请求报错: org.springframework.security.web.firewall.RequestRejectedException: The request was reject ...

  2. JavaScript学习(七十一)—call、apply、bind学习总结

    JavaScript学习(七十一)-call.apply.bind学习总结 一.call方法 call方法调用一个对象,简单的理解为调用函数的方式,但是它可以改变函数的this指向 二.apply() ...

  3. Apache Nutch 1.3 学习笔记十一(页面评分机制 OPIC)

    1. Nutch 1.3 的页面评分机制 Nutch1.3目前默认还是使用OPIC作为其网页分数算法,但其之后,已经引入了PageRank-like算法,以弥补OPIC算法的不足,目前OPIC算法还是 ...

  4. 从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件

    本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery ( ...

  5. 七十一、Python | Leetcode字符串系列(上篇)

    @Author:Runsen @Date:2020/7/3 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  6. jQuery框架学习第十一天:实战jQuery表单验证及jQuery自动完成提示插件

    jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集  jQuery框架学习第四天:使用jQ ...

  7. Apache Nutch 1.3 学习笔记十一(页面评分机制 LinkRank 介绍)

    下面是Google翻译的http://wiki.apache.org/nutch/NewScoring内容,是关于Nutch 新的链接分数算法的说明,有点类似于Google的PageRank,这里有其 ...

  8. 【正点原子Linux连载】第七十一章 Linux 4G通信实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  9. 华为鸿蒙系统HarmonyOS学习之十一:华为个人开发者账号注册步骤及方法

    华为鸿蒙系统HarmonyOS学习之十一:华为个人开发者账号注册步骤及方法 华为开发者联盟是华为面向生态伙伴的开放合作平台,旨在协调华为全球化平台和产业链资源,从应用推广.开发支持.应用变现.品牌宣传 ...

  10. 【CAD开发】glTF和b3dm文件格式读取(C++,Python)

    文章目录 1.简介 1.1 层级结构 1.2 术语定义 2.glTF文件预览 2.1 VSCode(v2.0) 2.2 glTF Viewer(v2.0, js) 2.3 babylon.js(v2. ...

最新文章

  1. 【Java】MD5字符串的加密解密
  2. 清除css,js,img的浏览器缓存
  3. 决定你人生命运的10年,你做了什么?
  4. Starling实现的硬皮翻书效果
  5. php调用成员函数错误,PHP致命错误:在非对象上调用成员函数exec...
  6. 使用servlet原生API作为参数
  7. PHP168整站数据库结构说明,PHP168
  8. java 通过经纬度计算巨鹿,全国经纬度汇总表(全)
  9. 工科数学分析寒假预习day4 更序问题和级数乘法
  10. 台式计算机cpu允许温度,台式机cpu温度多少正常 台式电脑工作时温度范围
  11. python中sqrt函数用法_Python : sqrt() 函数
  12. mysql与gbase获取行号_mysql/gbase数据库全库库表记录数统计
  13. 三十六洞天 七十二福地
  14. 32.768khz晶振在手表中的作用
  15. 数据库范式(normalization)
  16. 问题 D: 扑克牌排序(结构体)
  17. 为何机房要升级动环监控系统?
  18. ios framework 开发 之 实战 一,合并失败了
  19. 滴滴外卖开启连锁模式,距离全国连锁还有多远?
  20. WZOI-219短信计费

热门文章

  1. 最长回文子串 马拉车算法
  2. SQL 注入防御方法总结
  3. pythoncad_pythonCAD
  4. 计算机网络毕业设计汇报ppt,计算机ppt毕业设计模板
  5. 微信小程序登录界面的代码html,微信小程序用户登录组件
  6. 前端字体图标的下载与使用
  7. Lottie动画的优劣及原理
  8. 无法连接到SQL SERVER数据库
  9. 微信公众号应用开发(一)
  10. 高频板和普通PCB板的区别