规范将animations.samplers.input属性解释为:
包含关键帧输入值的访问器的索引,例如时间。该访问器必须有componentType浮动。这些值表示时间(以秒为单位)和时间( >= 0.0 ),并严格增加值,即timen +1> timen。
但是,从演示回购( 动画三角形 )的第一个基本示例中,我理解这一点有点困难。
具体来说,如果我们从animation.bin中获取动画的相关二进制数据并将其解码为Float32Array,我们将得到以下值列表:
[0, 0.25, 0.5, 0.75, 1, 0, 0, 0, 1, 0, 0, 0.7070000171661377, 0.7070000171661377, 0, 0, 1, 0, 0, 0, 0.7070000171661377, -0.7070000171661377, 0, 0, 0, 1]当然,这在“严格增加价值”的情况下是没有意义的。
,我在这里误解了什么?如何使用这些值(与output**)结合使用,以便随着时间的推移更新旋转?**
注意,animation.bin是从input采样器引用的视图。换句话说,来自格尔茨
发布于 2018-03-23 01:26:49
你破译得太远了。虽然bufferView 2是0到100字节,但访问器2并不调用所有这些字节。这是访问者2:
{
"bufferView" : 2,
"byteOffset" : 0,
"componentType" : 5126,
"count" : 5,
"type" : "SCALAR",
"max" : [ 1.0 ],
"min" : [ 0.0 ]
},注意里面的count: 5。计数定义为:
此访问器引用的属性数,不要与字节数或组件数混淆。
因此,访问器2是来自bufferView 2中偏移量0的前五个bufferView值,即上面解码的输出中的前五个数字:
[0, 0.25, 0.5, 0.75, 1]FWIW,有一些工具可以帮助调查glTF二进制文件。下面是VSCode的glTF扩展中的"Peek定义“函数:

(免责声明,我是这个扩展的作者之一,虽然我自己没有写这个解码特性)。
https://stackoverflow.com/questions/49440267
复制相似问题