首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gltf错误的旋转

Gltf错误的旋转
EN

Stack Overflow用户
提问于 2022-11-11 01:24:11
回答 1查看 57关注 0票数 0

我有一个很好的资产,我已经在多个地方核实。资产是正确的。

我正在尝试将此资产加载到我正在制作的自定义引擎中。如果我加载所有动画信息,除了轮转之外,我得到以下信息:

这是正确的。

如果不是加载动画旋转,而是加载动画所针对的目标节点的旋转,即:

gltf.nodes[target_node].rotation.quaternion();

而不是:

gltf.data_from_accessor::<Quatf>(sampler.output).unwrap()

我明白了:

也就是同样的事情。

但是,如果我尝试从访问器加载数据,我就会得到这个令人厌恶的信息:

我不知道该测试什么。如前所述,我知道数据本身是很好的,所以它必须是代码。但这并不是说目标节点的顺序是不正确的,我知道一个事实,我确实有正确的节点-动画映射。

下面是我加载gltf数据的方式:

代码语言:javascript
复制
  let animation = &gltf.animations[animation_id];
    let channel = &animation.channels[channel_id];
    let sampler = &animation.samplers[channel.sampler];

    match channel.target.path
    {
        ChannelPath::ROTATION => {
            debug_assert!(self.rotations.len() == 0);
            for rot in gltf.data_from_accessor::<Quatf>(sampler.output).unwrap()
            {
                self.rotations.push(*rot);
            }

            for time in gltf.data_from_accessor::<f32>(sampler.input).unwrap()
            {
                self.rotation_times.push(*time);
            }
 // ......
}

我有一个不同的资产,我正在装载旋转,其中一个是好的:

动画的播放就像预期的那样。

所以我有两种资产,两种都很好,根据gltf验证器,一种能很好地通过管道,另一种会退化。我不明白旋转怎么会导致这个问题:\

我检查过所有四元数数据的范数为1,它也是如此。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-11 06:56:36

如果有人遇到这样的事情。问题是字节对齐问题。

正确加载的资产将其连接指定为字节。另一个资产是未签名的空头。代码假设数据总是字节格式,因此没有正确地初始化网格的联合向量。

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

https://stackoverflow.com/questions/74397096

复制
相关文章

相似问题

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