您所看到的是正确的,即使它具有误导性。混淆来自使用相同数据块名称存储的两种不同类型的数据。
每个 morphTarget 都包含一个引用为“顶点”的数组
一种类型的数据是每个顶点的位置。这就是您在骑士示例中看到的内容。每个顶点的每个坐标都包含在数组中,这是每个帧的实际顶点位置。 morphTargets 的名称将类似于“animation_000000”、“animation_000001”...
"morphTargets":[{
"name":"animation_000000",
"vertices":[-1,-1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,-1,1,1,
1,1,1,-1,-1,1,1,-1]
},{
"name":"animation_000001",
"vertices":[-1.0149,-1.0149,1.0149,-1.0149,1.0149,1.0149,
-1.0149,-1.0149,-1.0149,-1.0149,1.0149,-1.0149,1.0149,
-1.0149,1.0149,1.0149,1.0149,1.0149,1.0149,-1.0149,-1.0149,
1.0149,1.0149,-1.0149]
},{ ....
要获取此动画数据,您需要在启用“应用修改器”并禁用“混合形状动画”的情况下导出。
另一种类型的数据是构成 shapekey 数据的向量数组,因此您会得到一个包含 3 个数字的数组的数组。 Blender 中的 shapekey 是定义顶点相对于原始位置的移动的向量集合,这似乎是此处导出的内容。此数据的 morphTarget 名称与使用的 shapekey 名称相匹配,默认情况下为“Key 1”、“Key 2”...
"morphTargets":[{
"name":"Key 1",
"vertices":[[-1.01209,-1.17045,-1.09497],[-1.10082,-1.09175,1.09065],
[-1.085,1.01564,-1.17664],[-1.17373,1.09434,1.00897],
[1.17373,-1.09434,-1.00897],[1.085,-1.01564,1.17664],
[1.10082,1.09175,-1.09065],[1.01209,1.17045,1.09497]]
},{
"name":"Key 2",
"vertices":[[-1.49369,-1.20168,-1.4188],[-1.47777,-1.31454,1.33278],
[-1.26675,1.54064,-1.30763],[-1.25083,1.42778,1.44395],
[1.25083,-1.42778,-1.44395],[1.26675,-1.54064,1.30763],
[1.47777,1.31454,-1.33278],[1.49369,1.20168,1.4188]]
}],
要在导出中获取 shapekey 数据,您需要启用“混合形状动画”并禁用“应用修改器”。此导出似乎不包含任何与 shapekey 相关的关键帧动画。