粗略地看一下 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,
浅色(扩展):
extensions (仅显示 KHR_*)
KHR_lights_punctual
EXT_lights_image_based
EXT_lights_ies
动画
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

浙公网安备 33010602011771号