You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt3D/QML导入glTF文件播放动画的ChannelMapper配置问题

Qt3D/QML 播放glTF内嵌动画解决方案

核心结论:你不需要手动配置ChannelMapper,Qt3D的SceneLoader加载完glTF文件后会自动解析内嵌动画,生成已经配置好映射关系的ClipAnimator实例,直接调用即可。

修正后可直接运行的代码

Entity {
    id: root

    Transform {
        id: planeTransform
        scale: 0.1
    }
    components: [planeTransform, planeScene]

    SceneLoader{
        id:planeScene
        source: "qrc:/Modells/3DModelle/plane/scene.gltf"
        onStatusChanged: {
            if (status === SceneLoader.Ready) {
                // 加载完成后获取内嵌的第一个动画
                const animators = planeScene.animations
                if (animators.length > 0) {
                    const planeClip = animators[0]
                    planeClip.loops = Animation.Infinite
                    planeClip.running = true
                    // 把动画组件挂载到根Entity上
                    root.addComponent(planeClip)
                }
            }
        }
    }
}

原代码问题说明

  • 单独实例化的AnimationClipLoader和ClipAnimator没有和SceneLoader加载的模型节点做属性绑定,手动配置ChannelMapper需要匹配glTF内的动画通道名和目标节点属性,实现成本高
  • 没有利用SceneLoader内置的动画解析能力

其他适用场景说明

如果有自定义动画绑定、多动画切换的需求,可以参考以下方案:

  1. 多动画切换:直接遍历planeScene.animations数组,按需控制不同ClipAnimator的running属性即可
  2. 手动配置ChannelMapper:
    先打印动画通道名确认映射关系:
    onStatusChanged: {
        if (planeClipLoader.status === AnimationClipLoader.Ready) {
            console.log(planeClipLoader.clip.channelNames)
        }
    }
    
    然后为每个通道添加对应ChannelMapping即可,示例:
    ChannelMapper {
        mappings: [
            ChannelMapping {
                channelName: "Animation_0:plane_node.translation"
                target: planeTransform
                property: "translation"
            },
            ChannelMapping {
                channelName: "Animation_0:plane_node.rotation"
                target: planeTransform
                property: "rotation"
            }
        ]
    }
    

内容的提问来源于stack exchange,提问作者Hammerpeter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:57:03