为何需要一种新格式?
互联网时代的表情包或者是静态的 jpg,或者是动态的 gif。
人类进入 VR 时代后,打开 WeChatVR,输入的表情包也得是真三维的内容,转个身能看到不一样的风景。比如这样:
这就给段子手带来了一个难题,如何制作、传播这种三维的内容?
互联网上的内容交换格式不能是商业公司私有的格式,jpg 和 gif 都是开放的格式,开放的格式得到各种应用软件的支持。你在电脑浏览器里看到的图片,可以另存为到手机上,可以转载到朋友圈。
VR 时代也需要一种开放的、无处不在的三维格式。
热衷于制定图形领域工业标准的 Khronos Group(克洛诺斯组织)看到了这个机会,搞了个大新闻:
glTF - GL Transmission Format,也就是为 OpenGL / WebGL 设计的交换格式。
这个格式得到了 VR 届的 VIP、Oculus CTO 卡马克的支持。
卡马克看的更远,看到了 VR 的下一个阶段 metaverse,一个超越了 AR、VR、互联网的虚拟世界。metaverse 是由 Neal Stephenson 在《雪崩》(Snow Crash)一书中描述的平行世界,所有现实世界中的人在 metaverse 中都有一个化身。
让你们感受下 glTF
一个 gltf 的三维模型由四种文件格式组成,gltf、bin、glsl、jpg / png。 .gltf,由 JSON 格式描述三维模型的内部结构、虚拟相机、材质等,人类可以阅读,长成这样:
"accessor_21": {
"bufferView": "bufferView_29",
"byteOffset": 0,
"byteStride": 0,
"componentType": 5123,
"count": 36,
"type": "SCALAR"
},
"accessor_23": {
"bufferView": "bufferView_30",
"byteOffset": 0,
"byteStride": 12,
"componentType": 5126,
"count": 24,
"max": [
0.5,
0.5,
0.5
],
"min": [
-0.5,
-0.5,
-0.5
],
"type": "VEC3"
},
- .bin,描述顶点信息和动画信息,人类无法阅读的二进制文件,长这样:
- .glsl,shader 图形着色语言,长这样:
- 用作三维贴图的图片格式,对不起,我欺骗了你们,到了 VR 时代依然需要 jpg。
glTF 的生态圈已经成熟
从图中可以看到,生态上得到了三维建模软件霸主 Autodesk 以及开源软件 Blender 的支持,FBX、Collada、OBJ 等格式都可以导出到 glTF,开源的 C++ 库方面 Assimp 也已经支持 glTF 到导入和导出。渲染引擎方面第一时间支持 glTF 的是 WebGL 引擎,包括最受欢迎的 three.js。
行业方面,在这周的的 SIGGRAPH 图形学大会上,Oculus 也展示了 glTF 在 Mobile VR 中的重要性:
NVIDIA 的开源渲染引擎 nvpro-pipeline 也于这周加入了 glTF 的支持。 不论你是 AR、VR 的设备的提供商或是内容制作商,都可以把支持 glTF 放进 roadmap 了,这是现在看来最有未来的内容格式。
vinjn.com - Democratizing Visual Computing