粗略地看一下 glTF 2.0 的所有标准属性(顺便说一下,还有 .glb 的结构)

编码

在 glTF 中,场景和各种对象的定义一般用 JSON 来描述,而顶点数据等所谓的"缓冲区"部分则以二进制形式存储。 对于这些内容的最终编码方式,有多种选择。

  • . gltf (JSON) + .bin (二进制缓冲区) (+ 图像文件)

  • 如何分离 JSON 和二进制部分。 二进制部分可以分为多个部分。

  • 纹理可以位于单独的图像文件中,也可以位于二进制缓冲区中。

  • 二进制部分也可以合并为 .gltf (JSON)

  • 您可以使用 Data URI 方案将二进制缓冲区放入 URI 中。 示例)uri="data:application/octet-stream;base64,xxxxxxxxxxxxxxx

  • .glb (将所有二进制文件固化为一个二进制文件)

  • 仅由一个 .glb (二进制文件) 表示。

  • 一个非常简单的标头、一个 JSON 块和一个简单的格式,它看起来几乎是按原样附加的二进制缓冲区块。 稍后将介绍该结构。

JSON 部分的内容

谨慎

尽管在以下 JSON 结构描述中省略了以下数据,但以下数据可以包含在 JSON 的所有对象层次结构中。

  • extensions

  • 使用 glTF 扩展写入。 它可以被任何物体持有。

  • extras

  • 用户定义的任意数据。 它可以被任何物体持有。

glTF 的结构

以下是注意事项 (TODO):

  • 我希望类型信息更准确一些

  • 它不指示需要哪些属性

扩展

  • extensionsRequired --- 列出使用此资产时的基本扩展

  • extensionsUsed --- 列出此资产使用的扩展

元数据

  • asset

  • version: "2.0"

  • generator:字符串

  • copyright:字符串

  • minVersion:字符串

围绕场景图

  • scene: id --- 默认场景 ID

  • scenes: [] 场景

  • name:字符串

  • nodes: []Id --- 列出节点的根节点

  • nodes: []节点

  • name:字符串

  • children: [] ID

  • mesh: ID

  • camera: ID

  • skin: ID

  • matrix: [16]编号

  • rotation: [4]number --- 旋转的四元数

  • translation: [3]编号

  • scale: [3]编号

  • weights: []Id --- 实例化变形目标的权重。 您需要多个目标

  • extensions (仅标明 KHR_*。

  • EXT_mesh_gpu_instancing

对象

  • meshes: []Mesh --- 网格

  • name:字符串

  • primitives ([]原始)

  • attributes --- Vertex 数据访问器

  • 位置: Id

  • TEXCOORD_n:Id

  • COLOR_n:Id

  • NORMAL:id

  • TANGENT:Id

  • JOINTS_n:Id

  • WEIGHTS_n:Id

  • (↑ 这些基于 OpenGL 约定,但 glTF 是一个规范名称。

  • 还允许使用其他自定义属性。

  • indices: Id --- 顶点索引的访问者。 如果未指定,则将其解释为未编制索引的顶点。

  • material: ID

  • mode --- 0 (点), 1 (线条), 2 (LINE_LOOP), 3 (LINE_STRIP), 4 (三角形), 5 (TRIANGLE_STRIP), 6 (TRIANGLE_FAN)

  • targets --- 变形目标

  • 位置: Id

  • TEXCOORD_n:Id

  • NORMAL:id

  • 等。

  • extensions (仅标明 KHR_*。

  • KHR_mesh_quantization

  • KHR_draco_mesh_compression

  • weights --- 变形目标的权重。 您需要多个目标

  • skins ([]Skin) --- 用于蒙皮的关节和逆绑定矩阵 (IBM)

  • name

  • skeleton --- 用作骨架根的节点

  • joints - 要用作关节的节点列表

  • inverseBindMatrices --- 要用作逆绑定矩阵 (IBM) 的 4x4 矩阵的访问器。 IBM 需要关节分钟。

  • cameras ([]相机)

  • type - 透视或正交

  • orthographic

  • xmag: 1

  • ymag: 1

  • zfar: 100

  • znear: 0.01

  • perspective

  • aspectRatio: 1,

  • yfov: 0.7853981633974483,

  • zfar: 100,

  • znear: 0.01,

浅色(扩展):

动画

  • animations ([]动画)

  • name

  • channels

  • sampler: ID

  • target --- 动画中要更改的对象。 目前仅支持控制节点的 TRS 和权重。

  • node: ID

  • path: "翻译" | "旋转" | "scale" | "权重"

  • samplers ([]采样器)

  • input: id --- 表示关键帧时间戳列(浮点标量)的访问器的 ID

  • output: Id --- 访问器的 ID,表示每个时间戳的输出值

  • interpolation: "线性" | "STEP" | "CUBICSPLINE"(三次样条)

材料

  • materials ([]材料)

  • name

  • doubleSided: bool --- 是否显示两侧(禁用背面剔除)。

  • pbrMetallicRoughness

  • baseColorFactor

  • metallicFactor

  • roughnessFactor

  • baseColorTexture

  • index: ID

  • texCoord: 整数 (TEXCOORD_n 中包含 n)

  • metallicRoughnessTexture

  • index: ID

  • texCoord: 整数 (TEXCOORD_n 中包含 n)

  • alphaCutOff

  • alphaMode: "不透明" | "面具" | "混合"

  • emissiveFactor

  • emissiveTexture

  • index

  • texCoord: 整数 (TEXCOORD_n 中包含 n)

  • normalTexture - 用于法线贴图

  • index

  • texCoord: 整数 (TEXCOORD_n 中包含 n)

  • scale

  • occulusionTexture -- 用于遮挡映射

  • index

  • texCoord: 整数 (TEXCOORD_n 中包含 n)

  • strength

  • scale

相关推荐
AndrewHZ20 小时前
【图像处理基石】什么是光栅化?
图像处理·人工智能·算法·计算机视觉·3d·图形渲染·光栅化
二狗哈21 小时前
Cesium快速入门33:tile3d设置样式
3d·状态模式·webgl·cesium·地图可视化
接着奏乐接着舞。1 天前
3D地球可视化教程 - 第6篇:蜂巢网格与自定义几何体
前端·vue.js·3d·threejs
戴西软件1 天前
戴西软件3DViz Convert:解锁三维数据流动,驱动一体化协同设计
大数据·人工智能·安全·3d·华为云·云计算
军军君012 天前
Three.js基础功能学习一:环境资源及基础知识
开发语言·javascript·学习·3d·前端框架·threejs·三维
EliseL2 天前
SuperMap iClient3D for WebGL如何加载iDesktopX 场景美化绘制资产
3d·webgl·三维
KoalaShane2 天前
Web 3D设计[Three.js]关于右键点击Canvas旋转模型,在其他元素上触发右键菜单问题
前端·javascript·3d
xwz小王子2 天前
Mini3DV 2025 | 观点总结:具身智能前沿与展望
人工智能·3d
扯淡的闲人2 天前
【本地 3D 渲染引擎深度开发 (Developer‘s Bible)】
3d
啊西:2 天前
SuperMap iClient3D for WebGL平面场景实现绘制任意面进行GPU空间查询
平面·3d·webgl