粗略地看一下 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

相关推荐
BFT白芙堂2 小时前
【买机器人,上BFT】北京大学联合项目 论文解读 | H2R:一种用于机器人视频预训练的人机数据增强技术
人工智能·机器学习·3d·机器人·franka·leaphand·灵巧手方案
爱吃小胖橘5 小时前
Unity-动画目标匹配
3d·unity·c#·游戏引擎
GitCode官方12 小时前
腾讯混元 3D 系列两大模型正式于 GitCode 开源:首个原生3D部件生成+多条件控制模型免费开放
3d·开源·gitcode·混元·hunyuan
dami_king12 小时前
RTX4090算力应用-3D
人工智能·深度学习·3d·ai
_JinHao13 小时前
Cesium Viewer对象详解——Cesium基础笔记(快速入门)
前端·javascript·笔记·3d·webgl
灰太狼不爱写代码15 小时前
3DGS输入的三个bin文件的作用
数码相机·计算机视觉·3d
DDC楼宇自控与IBMS集成系统解读15 小时前
DDC 楼宇自控系统 + 3D 可视化运维管理平台融合解决方案
运维·3d
YAY_tyy16 小时前
Three.js 开发实战教程(五):外部 3D 模型加载与优化实战
前端·javascript·3d·three.js
杀生丸学AI16 小时前
【无标题】SceneSplat:基于视觉-语言预训练的3DGS场景理解
3d·aigc·slam·语义分割·三维重建·视觉大模型·空间智能
Zuckjet_19 小时前
开启 3D 之旅 - 你的第一个 WebGL 三角形
前端·javascript·3d·webgl