BlendedClipAnimator QML 类型
BlendedClipAnimator 是一个组件,它提供了对混合节点树的动画播放功能。更多...
导入语句 | import Qt3D.Animation 2.7 |
实例化 | QBlendedClipAnimator |
继承自 |
属性
- blendTree : AbstractClipBlendNode
详细描述
BlendedClipAnimator 的实例可以由实体聚合,以增加播放动画剪辑和将计算出的动画值应用到 QObjects 属性的能力。
而 ClipAnimator 从单个动画剪辑中获取动画数据,BlendedClipAnimator 可以混合多个剪辑。动画数据是通过评估一个所谓的 混合树 来获取的。混合树是一个树形结构,其叶节点是值节点,包含一个动画剪辑(AbstractAnimationClip);内部节点表示其操作数属性指向的节点上的混合操作。
要将混合树与 BlendedClipAnimator 相关联,将动画器的 blendTree 属性设置为指向混合树的根节点
BlendedClipAnimator { blendTree: AdditiveClipBlend { .... } }
混合树可以从以下节点类型中构建
注意:混合节点树应该在动画器运行时编辑。
- Qt3D.Animation.ClipBlendValue
- Qt3D.Animation.LerpClipBlend
- Qt3D.Animation.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.的商标。所有其他商标均属于其各自所有者。