关于GLTF格式的综述、结构与TS解析

关于GLTF格式的综述、结构与TS解析
⽬录
三维格式
在讲gltf之前,我们先来聊⼀聊三维格式。三维格式存储的是⽤于构建三维场景的实时或⾮实时的渲染三
数据,⼀般作为传输与⽤户数据存储的标准。不同的格式(上罗列了不下70多种)有不同的定位与⽬的,如只描绘三维对象⼏何格式(.ply,.vtk,.obj,.dae)、描绘三维视图格式(.x3d,.jvx,.vrml)、描绘模型和渲染格式(.maya,.pov,.lwo)以及CAD相关的格式(.dxf,.stl,.zpr)等等。
GLTF总概
GLTF历史
gltf1.0
部分⼤事件回顾:
gltf1.0是COLLADA(.dae)⼯作组的成员在2012年提出的。
在SIGGRAPH 2012上,Khronos展⽰了glTF的演⽰,然后将其称为WebGL传输格式(WebGL TF)。
2015年10⽉19⽇,发布了glTF 1.0规范。
在SIGGRAPH 2016上,Oculus以与ovrscene格式的相似之处宣布采⽤glTF。
周易论文2016年10⽉,微软加⼊了Khronos的3D格式⼯作组,就glTF进⾏合作。
gltf2.0
剑舞翩跹
部分⼤事件回顾:
第⼆个版本glTF 2.0于2017年6⽉发布,是对1.0版⽂件格式的完整检查,⼤多数⼯具都采⽤2.0版。
添加了基于物理的渲染(PBR),取代了glTF 1.0中使⽤的WebGL 着⾊器。
(其他升级包括稀疏访问器和⾯向对象的变形⽬标,例如⾯部动画,模式调整以及针对极端情况或性能的重⼤更改,例如将数组替换顶
层glTF对象属性以实现基于索引的访问更快。  在Unity 和集成的多引擎查看器/验证器中,正在进⾏着导⼊和导出的⼯作。)阎锡山日记
3.2017年3⽉3⽇,Microsoft宣布他们将在其整个产品线中使⽤glTF 2.0作为3D资产格式,包括Paint 3D,3D Viewer,Remix
3D,Babylon.js和Microsoft Office。Sketchfab还宣布了对glTF 2.0的⽀持。
截⾄2019年,glTF和GLB格式已在UX3D,Sketchfab,Facebook,Microsoft,Oculus,Google,Adobe,Box,TurboSquid 和Unreal Engine等公司使⽤并受其⽀持。该格式已被视为增强现实的重要标准,并与Autodesk Maya,Autodesk 3ds Max和Poly 等建模软件集成在⼀起。
我的性
2020年2⽉,史密森学会(Smithsonian Institution)发起了开放访问计划(Open Access Initiative),将约280万个2D图像和3D模型发布到公共领域,并以glTF形式提供了3D模型。
为什么是GLTF
gltf的创始者在互联⽹的兴起中意识到需要⼀种有效的现代三维格式来传输三维模型和场景信息数据。
在gltf出现前,三维圈⼦也流⾏着⼀些标准化的格式,如FBX、OBJ等等。FBX格式具有⾮常多的功能,不过其中有些在⽬前的渲染中是已经被时代淘汰了,⽽且它是私有的,AutoDesk提供的SDK封装好了,我们并不能在官⽅查看到其内部结构(不过⽹上有很多分析FBX⽂件内部结构的⽂章),并且它是针对建模⼯具之间交互数据使⽤的。再说OBJ,⽂件格式虽然是公开的,但OBJ的功能集有限且由于是⽂本格式,数据量⼤,在存储空间和快速读写数据的能⼒效率极低。虽然可在Web浏览器中传输加载OBJ⽂件,但这是⼀个⾮常不好的体验。
总⽽⾔之,在gltf之前,⼤家都要花较长的的时间来处理模型的载⼊或者花较⼤代价进⾏模型的传输。很多的游戏引擎或者3D渲染引擎,都使⽤的是插件的⽅式来载⼊各种格式的模型,繁多的格式插件增⼤了引擎本⾝体积。并且,各种格式的模型总是会包含了⼀些与当前加载⽆关的信息,例如⼀些过程数据。
GLTF⽣态选址问题
GLTF业界⽀持
GLTF⽬的
来⾃官⽅原⽂:
紧凑的⽂件⼤⼩。尽管Web开发⼈员希望尽可能多地使⽤纯⽂本,但是由于其巨⼤的尺⼨,纯⽂本编码对于传输3D数据根本不切实际。glTF JSON⽂件本⾝是纯⽂本,但结构紧凑且解析迅速。所有⼤数据(例如⼏何图形和动画)都存储在⼆进制⽂件中,该⼆进制⽂件⽐等效的⽂本表⽰形式⼩得多。
快速加载。glTF数据结构已被设计为尽可能接近JSON和⼆进制⽂件中的GPU API数据,以减少加载
时间。例如,⽹格的⼆进制数据可以看作是JavaScript类型数组,并可以通过简单的数据副本直接加载到GPU缓冲区中。⽆需解析或进⼀步处理。
运⾏时独⽴。glTF对⽬标应⽤程序或3D引擎不做任何假设。glTF除了渲染和动画外没有指定任何运⾏时⾏为。 完整的3D场景表⽰。
对于许多应⽤程序⽽⾔,从建模包中导出单个对象是不够的。通常,作者希望将整个场景(包括节点,变换,变换层次结构,⽹格,材质,摄影机和动画)加载到其应⽤程序中。glTF努⼒保留所有这些信息,以供下游应⽤程序使⽤。
可扩展性。尽管最初的基本规范⽀持丰富的功能集,但仍会有许多增长和改进的机会。glTF定义了⼀种机制,该机制允许添加通⽤扩展
和特定于供应商的扩展。
⽬的决定了优势,下⾯我们来看看GLTF到底有哪些优势
GLTF优势
对于那些对加载格式不是⾮常重要的软件,可以显著地减少代码量,所以也有⼈说,最⼤的受益者是那些对程序⼤⼩敏感的3D Web渲染引擎,只需要很少的代码就可以顺利地载⼊各种模型了。
走近女局长
使⽤JSON来描述场景结构,可以⽅便地被应⽤程序分析处理与预留⼀般⽀持以及特定供应商的扩展。
设计是⾯向实时渲染应⽤的,尽量提供可以直接传输给图形API的数据形式,不再需要⼆次转换。
例如:将模型数据表⽰为简单的⼆进制缓冲区。“访问者”允许根据上下⽂解释该数据。这特别适合在OpenGL中加载这些⽂件,您可以在其中使⽤glBufferData将每个缓冲区加载到GPU中,然后使⽤glVertexAttribPointer解析每个访问器,以绑定到缓冲区中每个顶点元素的位置。
glTF是对近年来各类三维格式的总结,可以包括场景、摄像机、动画等,也可以包括⽹格、材质、纹理,甚⾄包括了渲染技术、着⾊器以及着⾊器程序。使⽤⽬前最优的数据结构,来保证最⼤的兼容性以及可伸缩性。
GLTF基础结构
⼀句话总结

本文发布于:2024-09-23 05:25:27,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/71539.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:格式   数据   模型   场景   传输   加载
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议