QBlendedClipAnimator Class
class Qt3DAnimation::QBlendedClipAnimatorQBlendedClipAnimatorは、ブレンドノードのツリーのアニメーション再生機能を提供するコンポーネントです。もっと詳しく...
Header: | #include <QBlendedClipAnimator> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS 3danimation) target_link_libraries(mytarget PRIVATE Qt6::3danimation) |
qmake: | QT += 3danimation |
In QML: | BlendedClipAnimator |
Inherits: | Qt3DAnimation::QAbstractClipAnimator |
Status: | Deprecated |
プロパティ
- blendTree : Qt3DAnimation::QAbstractClipBlendNode*
パブリック関数
Qt3DAnimation::QAbstractClipBlendNode * | blendTree() const |
パブリックスロット
void | setBlendTree(Qt3DAnimation::QAbstractClipBlendNode *blendTree) |
シグナル
void | blendTreeChanged(Qt3DAnimation::QAbstractClipBlendNode *blendTree) |
詳細説明
QBlendedClipAnimator のインスタンスを QEntity に集約することで、アニメーション クリップを再生したり、計算されたアニメーション値を QObject のプロパティに適用したりする機能を追加できます。
QClipAnimator が単一のアニメーション クリップからアニメーション データを取得するのに対し、QBlendedClipAnimator は複数のクリップをブレンドできます。アニメーションデータは、いわゆるブレンドツリーを評価することで得られます。ブレンド・ツリーは階層ツリー構造で、リーフ・ノードはアニメーション・クリップ(QAbstractAnimationClip )をカプセル化した値ノードです。内部ノードは、オペランド・プロパティが指すノードを操作するブレンド操作を表します。
ブレンド・ツリーをQBlendedClipAnimatorに関連付けるには、アニメーターのblendTree プロパティを設定して、ブレンド・ツリーのルート・ノードを指定します:
auto blendTreeRoot = new QAdditiveClipBlend(); ... auto animator = new QBlendedClipAnimator(); animator->setBlendTree(blendTreeRoot);
ブレンドツリーは、以下のノードタイプから構築できます:
注意: ブレンドノードツリーは、アニメーターが動作していない時に編集してください。
ブレンドノードツリーは、アニメーターが動作していない時に編集してください。
例として、次のブレンドツリーを考えてみましょう:
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);
アニメーションクリップのセットをオーサリングし、実行時にブレンドツリーを使って動的にクリップ間をブレンドすることで、膨大なアニメーションが可能になります。上記のブレンドツリーの簡単な例として、アルファが加算係数、ベータがレープのブレンド係数で、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
より複雑なブレンドツリーでは、アニメーションクリップを組み合わせる柔軟性がさらに高まります。ブレンドツリーをコントロールするための値(上記のアルファとベータ)は、ブレンドノードの単純なプロパティです。つまり、これらのプロパティ自体も、アニメーションフレームワークで制御できます。
プロパティの説明
blendTree : Qt3DAnimation::QAbstractClipBlendNode*
このプロパティは、アニメーターによって補間される前に評価される、アニメーションブレンドツリーのルートを保持します。
アクセス関数
Qt3DAnimation::QAbstractClipBlendNode * | blendTree() const |
void | setBlendTree(Qt3DAnimation::QAbstractClipBlendNode *blendTree) |
通知シグナル
void | blendTreeChanged(Qt3DAnimation::QAbstractClipBlendNode *blendTree) |
このプロパティは、アニメーターが補間する前に評価されるアニメーションブレンドツリーのルートを保持します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。