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

相关推荐
温轻舟6 小时前
3D词云图
前端·javascript·3d·交互·词云图·温轻舟
zhongqu_3dnest9 小时前
3D可视化:开启多维洞察新时代
3d·3d建模·空间计算·3d可视化·三维空间·沉浸式体验
试着1 天前
【数据标注师】3D标注
3d·数据标注师·3d标注
工业3D_大熊10 天前
3D模式格式转换工具HOOPS Exchange如何将3D PDF转换为STEP格式?
3d·pdf·3d格式转换·3d模型格式转换·cad格式转换·cad数据格式转换·3d模型可视化
广州华锐视点10 天前
浅议 3D 展示技术为线上车展新体验带来的助力
3d
大霸王龙12 天前
AR眼镜与3D建模社区建设
3d·ar
杀生丸学AI12 天前
【物理重建】SPLART:基于3D高斯泼溅的铰链估计与部件级重建
3d·aigc·三维重建·视觉大模型·世界模型·空间智能·动态重建
Love__Tay12 天前
【Python小练习】3D散点图
开发语言·python·3d