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

相关推荐
二川bro9 小时前
第16节:自定义几何体 - 从顶点构建3D世界
3d
迈火21 小时前
ComfyUI-3D-Pack:3D创作的AI神器
人工智能·gpt·3d·ai·stable diffusion·aigc·midjourney
新启航光学频率梳2 天前
【新启航】起落架大型结构件深孔检测探究 - 激光频率梳 3D 轮廓检测
科技·3d·制造
兰亭妙微3 天前
界面设计风格解析 | ABB 3D社交媒体视觉效果设计
3d·媒体
渲吧-云渲染3 天前
3ds MAX文件/贴图名称乱码?6大根源及解决方案
3d·贴图
渲吧-云渲染3 天前
从行业场景到视觉呈现:3ds Max 与 C4D 效果图的本质分野
大数据·3d
东临碣石823 天前
【AI论文】Hi3DEval:以分层有效性推进三维(3D)生成评估
3d
点云侠3 天前
【2025最新版】PCL点云处理算法汇总(C++长期更新版)
c++·算法·计算机视觉·3d·可视化
二川bro4 天前
第十篇:3D模型性能优化:从入门到实践
3d·性能优化
新启航光学频率梳5 天前
【新启航】飞机起落架外筒深孔型腔的测量方法 - 激光频率梳 3D 轮廓检测
科技·3d·制造