- class QBlendedClipAnimator#
QBlendedClipAnimator
是一个组件,提供了对一组混合节点树进行动画播放的能力。 更多…摘要#
属性#
方法#
def
__init__()
def
blendTree()
槽位#
def
setBlendTree()
信号#
注意:
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有问题,也可以通过在https://bugreports.qt.io/projects/PYSIDE上创建票据的方式告知我们。
详细描述#
QBlendedClipAnimator的一个实例可以被QEntity聚集,以便添加播放动画片段的能力,并将计算的动画值应用到QObjects的属性上。
而QClipAnimator从单个动画片段获取动画数据,QBlendedClipAnimator可以融合多个片段。动画数据通过评估所谓的"融合树"获得。融合树是一种层级树结构,其中叶节点是封装动画片段(QAbstractAnimationClip)的值节点;内部节点表示操作其操作属性所指向节点的融合操作。
要将融合树与QBlendedClipAnimator关联,设置动画器的
blendTree
属性以指向融合树的根节点。auto blendTreeRoot = new QAdditiveClipBlend(); ... auto animator = new QBlendedClipAnimator(); animator->setBlendTree(blendTreeRoot);
融合树可以从以下节点类型构建:
注意:
当动画器不运行时,应仅编辑融合节点树。
QClipBlendValue
QLerpClipBlend
QAdditiveClipBlend
随着时间的推移,将添加更多的节点类型。
举例来说,考虑以下融合树:
Clip0---- | Lerp Node---- | | Clip1---- Additive Node | Clip2----
可以创建和使用如下:
// Create leaf nodes of blend tree auto clip0 = new QClipBlendValue( new QAnimationClipLoader(QUrl::fromLocalFile("walk.json"))); auto clip1 = new QClipBlendValue( new QAnimationClipLoader(QUrl::fromLocalFile("run.json"))); auto clip2 = new QClipBlendValue( new QAnimationClipLoader(QUrl::fromLocalFile("wave-arm.json"))); // Create blend tree inner nodes auto lerpNode = new QLerpClipBlend(); lerpNode->setStartClip(clip0); lerpNode->setEndClip(clip1); lerpNode->setBlendFactor(0.5f); // Half-walk, half-run auto additiveNode = new QAdditiveClipBlend(); additiveNode->setBaseClip(lerpNode); // Comes from lerp sub-tree additiveNode->setAdditiveClip(clip2); additiveNode->setAdditiveFactor(1.0f); // Wave arm fully // Run the animator auto animator = new QBlendedClipAnimator(); animator->setBlendTree(additiveNode); animator->setChannelMapper(...); animator->setRunning(true);
通过编写一组动画片段,并在运行时使用融合树动态融合它们,我们可以打开大量可能的动画。以下是一些上述融合树的简单示例,其中alpha是加法因子,beta是lerp融合因子,我们可以得到一个二维的可能的动画连续体
(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)是融合节点上的简单属性。这意味着,这些属性本身也可以由动画框架控制。
注意:
可以在使用
from __feature__ import true_property
时直接使用属性,否则通过存取函数使用。- 属性 blendTreeᅟ: QAbstractClipBlendNode#
此属性包含在动画器插值之前将对其进行评估的动画融合树根。
- __init__([parent=None])#
- 参数:
parent –
QNode
- blendTree()#
- 返回类型:
QAbstractClipBlendNode
相关内容
setBlendTree()
属性 blendTree 的获取器。
- blendTreeChanged(blendTree)#
- 参数:
blendTree –
QAbstractClipBlendNode
属性 blendTree 的变化通知信号。
- setBlendTree(blendTree)#
- 参数:
blendTree –
QAbstractClipBlendNode
相关内容
blendTree()
属性 blendTree 的设置器。