glTF格式初步了解

近期看到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的时候,大家都要花非常长的的时间来处理模型的加载。

非常多的游戏引擎或者工控渲染引擎,都使用的是插件的方式来加载各种格式的模型。但是。各种格式的模型都包括了非常多无关的信息。

比方说.blend格式包括了场景、灯光、摄像机信息。也包括了blender的元信息。这样在加载的时候会浪费非常多的加载时间。这须要一次模型的再加工工序(这道工序是否须要,有待观察)

当有glTF之后,能够将模型再加工成为glTF。这样渲染的程序仅仅须要支持glTF格式就能够非常顺利地处理各种情况了。

给大家简介了一下glTF这个格式,以下我说一下我对glTF这个新的3D格式的看法。

1、为什么要有glTF这个格式的提出呢?

首先。一切新的事物的发明都是为了为了解决曾经不方便的情况。就glTF格式而言,尽管曾经有非常多3D格式,但是各种3D模型渲染程序都要处理非常多种的格式。对于那些对加载格式不是那么重要的软件(不是那些相似“格式工厂”那样的软件),能够显著降低代码量。所以也有人说,最大的受益者是那些对程序大小敏感的3D Web渲染引擎,仅仅须要非常少的代码就能够顺利地加载各种模型了。此外。glTF是对近二十年来各种3D格式的总结,使用最优的数据结构。来保证最大的兼容性以及可伸缩性。这就好比是本世纪初xml的提出。glTF使用json格式进行描写叙述。也能够编译成二进制的内容:bglTF。

glTF能够包括场景、摄像机、动画等,也能够包括网格、材质、纹理,甚至包括了渲染技术(technique)、着色器以及着色器程序。同一时候因为json格式的特点,它支持预留一般以及特定供应商的扩展。

2、为什么要提出一个新的格式而不是发展现有的格式比方说collada?

我觉得这个是对3D通用格式的解释权的一种争夺战。大家已经知道OpenGL已经成为其实的工业渲染标准。作为现有OpenGL的维护组织,khronos也迫切希望在3D格式上进行一次统一。让glTF成为相似jpeg、mp3等常见的格式,khronos也有威望,能够让行业的大厂们协同一起来參与新标准的制定。对于collada这样基于xml格式的竞争对手。glTF的提出给大家提供了一个新的思路以及解决方式。就好像json当初没有提出的时候。大家都会倾向使用xml来描写叙述通用的可交换的数据格式,但是随着json的发展,xml不再是一枝独秀。逐渐形成了两强的局面。大家也有了很多其它的选择。上图我们能够看到。我们能够利用现有的格式转换工具非常轻松地将collada格式转换为glTF格式。而glTF对于OpenGL的兼容性。我想会因khronos而变得更好。

glTF格式初步了解的更多相关文章

  1. 学习:WordXML格式初步分析

    Office2003以上,Word可以以XML文本格式存储,这样就可以使用外部程序创建Word文件,而不需要使用Word的对象.也能够自由的打开分析Word文件,或者发布到自己的Web页面,或者其他更 ...

  2. cesium导入3D模型(obj转gltf)

    cesium中支持载入3D模型,不过只支持gltf格式.gltf是khronos组织(起草OpenGL标准的那家)定义的一种交换格式,用于互联网或移动设备上展现3d内容,充分支持opengl,webg ...

  3. 【Ceisum】Max转GLTF

    参考资料:https://blog.csdn.net/u011394175/article/details/78919281 1.在3DsMax中加入COLLADA插件:COLLADA-MAX-PC_ ...

  4. Three.js导入gltf模型和动画

    核心代码 复杂的3D模型一般都是用第三方建模工具生成,然后加载到three中 three官方推荐使用gltf格式的文件,代表编辑器是blender 本文生成了自定义生成了一个blender模型,并且应 ...

  5. cesium模型加载-加载fbx格式模型

    整体思路: fbx格式→dae格式→gltf格式→cesium加载gltf格式模型 具体方法: 1. fbx格式→dae格式 工具:3dsMax, 3dsMax插件:OpenCOLLADA, 下载地址 ...

  6. Cesium学习笔记(九):导入3D模型(obj转gltf)

    在用cesium的过程中难免需要导入别人做好的3D模型,这时候就需要将这些模型转成gltf格式了 当然,官方也给了我们一个网页版的转换器,但是毕竟是网页版的,效率极其低下,文件还不能太大,所以我们就需 ...

  7. webgl图库研究(包括BabylonJS、Threejs、LayaboxJS、SceneJS、ThingJS等框架的特性、适用范围、支持格式、优缺点、相关网址)

    3D图库框架范围与示例 摘要: 为实现企业80%以上的生产数据进行智能转化,在烟草.造纸.能源.电力.机床.化肥等行业,赢得领袖企业青睐,助力企业构建AI赋能中心,实现智能化转型升级.“远舢文龙数据处 ...

  8. Xbim.GLTF源码解析(二):IFC和GLTF的对应关系

    原创作者:flowell,转载请标明出处:https://www.cnblogs.com/flowell/p/10839179.html IFC IFC是建筑信息模型(BIM)数据开放的国际标准,在建 ...

  9. Xbim.GLTF源码解析(一):简介

    原创作者:flowell,转载请标明出处:https://www.cnblogs.com/flowell/p/10838972.html 简介 Xbim.GLTF是将IFC文件转换成GLTF文件的一个 ...

随机推荐

  1. css--字体和文本样式

    文字样式属性 字体:font-family 文字大小:font-size 文字颜色:font-color 文字粗细:font-weight 文字样式:font-style font-family字体属 ...

  2. 连接mysql 2003 Can't connect to Mysql on 'xxx'(10061)

    备份 cp /etc/mysql/my.cnf /etc/mysql/my.cnf.bak 修改 vim /etc/mysql/my.cnf 在[mysqld]下修改为bind-address=0.0 ...

  3. 模拟、字符串--P1042 乒乓球 题解

    P1042 乒乓球 字符串string的基本使用 #include <iostream> #include <algorithm> #include <map> # ...

  4. get、post、put、delete

    form表单有两种提交方式,get和post,get没有请求体, 但是有查询字符串参数拼接在url后面,post有请求体,表单内容对用户不可见. 1.form表单以get请求提交, 2.from表单以 ...

  5. 「 Luogu P2420 」 让我们异或吧

    # 解题思路 两点之间的路径的话一定经过它们两个 LCA,这一点已经是显而易见的,那么再来看看异或的性质. $$a\ xor\ b\ xor\ b = a\\ a\ xor\ a=0\\ a\ xor ...

  6. [LOJ] 分块九题 6

    单点插入,单点查询. 优化了的链表. 链表老写错,干脆用vector,也不算慢. 注意链表退化的问题,及时(比如操作根号n次)就重新建块,实测速度可以提高一倍,这还是数据随机的情况,若涉及大量同一位置 ...

  7. Dijkstra算法简单实现(C++)

    图的最短路径问题主要包括三种算法: (1)Dijkstra (没有负权边的单源最短路径) (2)Floyed (多源最短路径) (3)Bellman (含有负权边的单源最短路径) 本文主要讲使用C++ ...

  8. tomcat创建用户

    进入manager App时需要用户名+密码 输入错误时会出现页面如下: ​ 根据提示去服务器中找到tomcat目录下的tomcat-user.xml文件 在指定位置添加语句 <user use ...

  9. *lucene索引_的删除和更新

    [删除] [恢复删除] [强制删除] [优化和合并] [更新索引] 附: 代码: IndexUtil.java: package cn.hk.index; import java.io.File; i ...

  10. Java比较两个数组中的元素是否相同的最简单方法

    import java.util.Arrays; public class Test { /** * Java比较两个数组中的元素是否相同 */ public static void main(Str ...