近期看到Qt 3D的进展。偶然了解到了一种新的格式:glTF格式。这样的格式听说比现有的3D格式更加符合OpenGL应用的需要。这引发了个人好奇。因而我在Qt 3D的外部连接中找到了有关glTF的相关连接。
上海萌梦信息科技有限公司(微博:http://weibo.com/qtdream)原创文章,首发地址:http://qtdream.com/topic/140。数据结构
欢迎同行前来探讨。
glTF的官网介绍在这里。它介绍了glTF的一些特性、发起者以及应用情景。官网中。介绍了glTF是一种可以下降3D格式中与渲染无关的冗余数据并且在更加适合OpenGL簇加载的一种3D文件格式。glTF的提出是源自于3D工业和媒体发展的过程当中,对3D格式统一化的急迫需求。官网的一张图片可以简单地说明这一点:
也就是说。glTF立志成为音频界的mp3、视频界的H.264,图片界的jpeg。动画
在官网的截图上咱们看到。在没有glTF的时候,你们都要花很是长的的时间来处理模型的加载。spa
很是多的游戏引擎或者工控渲染引擎,都使用的是插件的方式来加载各类格式的模型。可是。各类格式的模型都包括了很是多无关的信息。插件
比方说.blend格式包括了场景、灯光、摄像机信息。也包括了blender的元信息。这样在加载的时候会浪费很是多的加载时间。这需要一次模型的再加工工序(这道工序是否需要,有待观察)
当有glTF以后,可以将模型再加工成为glTF。这样渲染的程序仅仅需要支持glTF格式就可以很是顺利地处理各类状况了。视频
给你们简介了一下glTF这个格式,如下我说一下我对glTF这个新的3D格式的见解。xml
一、
为何要有glTF这个格式的提出呢?
首先。一切新的事物的发明都是为了为了解决曾经不方便的状况。就glTF格式而言,尽管曾经有很是多3D格式,可是各类3D模型渲染程序都要处理很是多种的格式。对于那些对加载格式不是那么重要的软件(不是那些类似“格式工厂”那样的软件),可以显著下降代码量。因此也有人说,最大的受益者是那些对程序大小敏感的3D Web渲染引擎,仅仅需要很是少的代码就可以顺利地加载各类模型了。此外。glTF是对近二十年来各类3D格式的总结,使用最优的数据结构。来保证最大的兼容性以及可伸缩性。这就比如是本世纪初xml的提出。glTF使用json格式进行描写叙述。也可以编译成二进制的内容:bglTF。
glTF可以包括场景、摄像机、动画等,也可以包括网格、材质、纹理,甚至包括了渲染技术(technique)、着色器以及着色器程序。同一时候由于json格式的特色,它支持预留通常以及特定供应商的扩展。
二、
为何要提出一个新的格式而不是发展示有的格式比方说collada?
我以为这个是对3D通用格式的解释权的一种争夺战。你们已经知道OpenGL已经成为其实的工业渲染标准。做为现有OpenGL的维护组织,khronos也迫切但愿在3D格式上进行一次统一。让glTF成为类似jpeg、mp3等常见的格式,khronos也有威望,可以让行业的大厂们协同一块儿来參与新标准的制定。对于collada这样基于xml格式的竞争对手。glTF的提出给你们提供了一个新的思路以及解决方式。就好像json当初没有提出的时候。你们都会倾向使用xml来描写叙述通用的可交换的数据格式,可是随着json的发展,xml再也不是一枝独秀。逐渐造成了两强的局面。你们也有了不少其它的选择。上图咱们可以看到。咱们可以利用现有的格式转换工具很是轻松地将collada格式转换为glTF格式。而glTF对于OpenGL的兼容性。我想会因khronos而变得更好。