首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从gltf解析animations.samplers.input

如何从gltf解析animations.samplers.input
EN

Stack Overflow用户
提问于 2018-03-22 23:48:49
回答 1查看 346关注 0票数 1

规范将animations.samplers.input属性解释为:

包含关键帧输入值的访问器的索引,例如时间。该访问器必须有componentType浮动。这些值表示时间(以秒为单位)和时间( >= 0.0 ),并严格增加值,即timen +1> timen。

但是,从演示回购( 动画三角形 )的第一个基本示例中,我理解这一点有点困难。

具体来说,如果我们从animation.bin中获取动画的相关二进制数据并将其解码为Float32Array,我们将得到以下值列表:

代码语言:javascript
复制
[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采样器引用的视图。换句话说,来自格尔茨

  • 输入==存取器2
  • 访问器2 == bufferView 2
  • 缓冲区1中的bufferView 2 ==字节(0-100)
  • 缓冲器1 == animation.bin
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-23 01:26:49

你破译得太远了。虽然bufferView 2是0到100字节,但访问器2并不调用所有这些字节。这是访问者2:

代码语言:javascript
复制
{
  "bufferView" : 2,
  "byteOffset" : 0,
  "componentType" : 5126,
  "count" : 5,
  "type" : "SCALAR",
  "max" : [ 1.0 ],
  "min" : [ 0.0 ]
},

注意里面的count: 5。计数定义为:

此访问器引用的属性数,不要与字节数或组件数混淆。

因此,访问器2是来自bufferView 2中偏移量0的前五个bufferView值,即上面解码的输出中的前五个数字:

代码语言:javascript
复制
[0, 0.25, 0.5, 0.75, 1]

FWIW,有一些工具可以帮助调查glTF二进制文件。下面是VSCode的glTF扩展中的"Peek定义“函数:

(免责声明,我是这个扩展的作者之一,虽然我自己没有写这个解码特性)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49440267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档