如何打开GLTF文件

如何打开GLTF文件,第1张

gltf文件一般是3d模型的通用储存格式。

此文件可以使用常用的3d模型软件打开,也可以使用一些站点工具打开。比如百度搜索进入“gltfs模型库”,点击本地模型预览,就可以查看gltf格式的模型了。

模型加载顺序为,先加载gltf文件,然后解析依次读取scenes、nodes、meshes、accessors、bufferViews、buffers、materials、textures、images。其中每个mesh包括一个bufferViews和一个materials。每一层的递进都有数组下标来确定。

一般模型只有一个也是默认场景,如果是多个,则根据对应的scene字段确定哪一个是默认场景,参考数据结构部分的数据,每一个scene都包含一个nodes字段,指定了scene的根结点。本例中nodes对应的值为0,代表根节点为nodes字段下对应的第一个元素。

nodes用来组装模型层级,第一个节点是父节点,children字段指定它所包含的子节点。

nodes节点分为俩种,一种是有children字段的,最终会渲染成group,一种是有mesh字段的最终渲染为mesh,mesh字段的值为meshes数组的小标。

网,由多个面和材质组成,通过primitives字段指定。

访问器是链接bufferView和mesh之间的桥梁,主要作用是对bufferView中数据进行进一步描述

总的流程如下图

模型的内存占用主要包括四个部分,分别是内存、gpu、图片缓存、cpu,其中主要决定性能的是gpu和图片缓存

对于gpu占用主要有一个问题,如何计算一个模型的gpu占用,有没有公式可以算出来?针对这个问题就需要搞明白那些因素决定gpu占用。

为了方便计算,我们用面替换点,一个最多对应3个点因此可得

仔细观察数据表,大致可以得出绘制一个面的所占有的内存在0.8kb-3.1kb之间,我们取最大值并向上取整,可以大致按每个面3.1k的内存去估算

最终可得出:

(T代表单个材质,faces代表模型总面数)

图片缓存有很多文章说明,基本公式是

图片缓存其实是纹理缓存,对于场景切换,需要注意注销纹理,释放图片缓存。

有了上面的内存占用,性能优化的点就比较清晰了

如果不追求过高的效果,可以直接减小图片尺寸,如果对与效果要求很高,可以采用压缩纹理技术


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8228725.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存