BlendedClipAnimator QML 类型

BlendedClipAnimator 是一个组件,它提供了对混合节点树的动画播放功能。更多...

导入语句import Qt3D.Animation 2.7
实例化 QBlendedClipAnimator
继承自

AbstractClipAnimator

属性

详细描述

BlendedClipAnimator 的实例可以由实体聚合,以增加播放动画剪辑和将计算出的动画值应用到 QObjects 属性的能力。

ClipAnimator 从单个动画剪辑中获取动画数据,BlendedClipAnimator 可以混合多个剪辑。动画数据是通过评估一个所谓的 混合树 来获取的。混合树是一个树形结构,其叶节点是值节点,包含一个动画剪辑(AbstractAnimationClip);内部节点表示其操作数属性指向的节点上的混合操作。

要将混合树与 BlendedClipAnimator 相关联,将动画器的 blendTree 属性设置为指向混合树的根节点

BlendedClipAnimator {
    blendTree: AdditiveClipBlend {
        ....
    }
}

混合树可以从以下节点类型中构建

注意:混合节点树应该在动画器运行时编辑。

随着时间的推移,将添加更多节点类型。

以下是一个示例混合树

Clip0----
        |
        Lerp Node----
        |           |
Clip1----           Additive Node
                    |
            Clip2----

可以按如下方式创建和使用它

BlendedClipAnimator {
    blendTree: AdditiveClipBlend {
        baseClip: LerpClipBlend {
            startClip: ClipBlendValue {
                clip: AnimationClipLoader { source: "walk.json" }
            }

            endClip: ClipBlendValue {
                clip: AnimationClipLoader { source: "run.json" }
            }
        }

        additiveClip: ClipBlendValue {
            clip: AnimationClipLoader { source: "wave-arm.json" }
        }
    }

    channelMapper: ChannelMapper {...}
    running: true
}

通过创建一组动画剪辑并在运行时动态使用混合树进行混合,我们开放了大量可能的最终动画集。以下是一些上述混合树的简单示例,其中 alpha 是加性因子,beta 是 lerp 混合因子,我们可以得到一个 2D 的可能动画连续体

(alpha = 0, beta = 1) Running, No arm waving --- (alpha = 1, beta = 1) Running, Arm waving
        |                                               |
        |                                               |
        |                                               |
(alpha = 0, beta = 0) Walking, No arm waving --- (alpha = 0, beta = 1) Running, No arm waving

更复杂的混合树为组合动画剪辑提供了更多的灵活性。请注意,用于控制混合树(如上述的 alpha 和 beta)的值是混合节点上的简单属性。这意味着,这些属性本身也可以由动画框架控制。

属性文档

blendTree : AbstractClipBlendNode

此属性包含在动画器之前被插值前的动画混合树的根。


© 2024 The Qt Company Ltd. 本文档中包含的贡献文档版权属于其各自所有者。提供的文档遵守由自由软件基金会发布的GNU自由文档许可证版本1.3的条款。Qt及其相应标志是芬兰及/或全球其他国家的The Qt Company Ltd.的商标。所有其他商标均属于其各自所有者。