glTF: GL Transmission Format

前言

glTF (GL Transmission Format)是一种基于中立 API 的运行时数据传输格式。glTF 搭建起了三维内容创建工具和现代三维应用软件之间的桥梁。它可以提供高效的、可扩展的、可互操作的格式,来进行三维内容的传输和加载。

原文:

The GL Transmission Format (glTF) is an API-neutral runtime asset delivery format. glTF bridges the gap between 3D content creation tools and modern 3D applications by providing an efficient, extensible, interoperable format for the transmission and loading of 3D content.

从前,看到这段文字,觉得虚头巴脑。多年之后,却油然而生一种敬意。三维数据的格式层出不穷,似乎任何人都可以自己定义一种。但是,不要说和现有的格式比较优劣,你自己定义的数据本身是否没有歧义,可能都无法保证,更不要提扩展了。所以,能定义数据格式,绝不是意见简单的事情,定义一种好用有易懂的则更难。

内容

glTF 相关的内容,一搜一大把。下面的内容也是为了方便自己以后查询,或者过一段时间之后再捡起来。

官方文档

glTF 是 KhronosGroup 维护的,这个组织异常强大,可以说占了图形相关的半壁江山。它推出的标准或者格式,肯定是差不到哪里去的。
在这里插入图片描述
官方文档:
GL Transmission Format (glTF) 2.0 :https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md
入门教程:
https://github.com/KhronosGroup/glTF-Tutorials

总体结构

在这里插入图片描述
上图来自官方教程,参考 CSDN 博客有详细解释,实际上是对官方博客的翻译:glTF格式介绍(1)——概要

(1)scene:整个场景的入口点,由node构成图(树)结构(类似OSG的场景组织)组成
(2)node:场景层级中的一个节点,可以包含位置变换,可以有子节点。同时,node通过指向mesh、camera、skin来描述node的形变
(3)camera:定义渲染场景的视点配置
(4)mesh:描述了在场景中出现的几何物体,并通过accessor(访问器)来访问其真实的几何数据,通过material(材质)来确定渲染外观
(5)skin:蒙皮描述模型绑定到骨骼上的参数,用来实现骨骼动画,其真实数据也是通过访问器来获取的
(6)animation:骨骼动画,描述某个节点怎么随着时间运动
(7)accessor:访问器,定义了如何从二进制数据源中获取数据,在mesh、animation、skin中都会用到访问器。其指向buffer和bufferview,在这里面存着真正的几何数据
(8)material:材质包含了定义物体模型外观的参数,特别是纹理参数
(9)texture:包括采样器和图片,定义如何将纹理映射到模型
————————————————
版权声明:本文为CSDN博主「MeteorChenBo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_31709249/article/details/86477710

纹理

官方链接:A Simple Texture
假设只有一个纹理,每种材质的 pbrMetallicRoughness > baseColorTexture 都有一个索引指向 textures,每个 textures 同样有两个索引,其中 source 指向 images
复杂纹理,参考:An Advanced Material
在这里插入图片描述
一个比较完整的纹理:https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#additional-maps

{
    "materials": [
        {
            "name": "Material0",
            "pbrMetallicRoughness": {
                "baseColorFactor": [ 0.5, 0.5, 0.5, 1.0 ],
                "baseColorTexture": {
                    "index": 1,
                    "texCoord": 1
                },
                "metallicFactor": 1,
                "roughnessFactor": 1,
                "metallicRoughnessTexture": {
                    "index": 2,
                    "texCoord": 1
                }
            },
            "normalTexture": {
                "scale": 2,
                "index": 3,
                "texCoord": 1
            },
            "emissiveFactor": [ 0.2, 0.1, 0.0 ]
        }
    ]
}

其它

在 Github 上直接搜索,可以得到很多相关的repo:
https://github.com/KhronosGroup?q=gltf&type=&language=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客BIM工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值