Qt3DAnimation::QBlendedClipAnimator Class
class Qt3DAnimation::QBlendedClipAnimatorQBlendedClipAnimator es un componente que proporciona capacidades de reproducción de animación de un árbol de nodos de mezcla. Más...
| Cabecera: | #include <QBlendedClipAnimator> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS 3danimation)target_link_libraries(mytarget PRIVATE Qt6::3danimation) |
| qmake: | QT += 3danimation |
| En QML: | BlendedClipAnimator |
| Hereda: | Qt3DAnimation::QAbstractClipAnimator |
| Status: | Obsoleto |
Propiedades
- blendTree : Qt3DAnimation::QAbstractClipBlendNode*
Funciones públicas
| Qt3DAnimation::QAbstractClipBlendNode * | blendTree() const |
Ranuras públicas
| void | setBlendTree(Qt3DAnimation::QAbstractClipBlendNode *blendTree) |
Señales
| void | blendTreeChanged(Qt3DAnimation::QAbstractClipBlendNode *blendTree) |
Descripción Detallada
Una instancia de QBlendedClipAnimator puede ser agregada por una QEntity para añadir la capacidad de reproducir clips de animación y aplicar los valores de animación calculados a propiedades de QObjects.
Mientras que un QClipAnimator obtiene sus datos de animación de un único clip de animación, QBlendedClipAnimator puede mezclar múltiples clips. Los datos de animación se obtienen evaluando el llamado árbol de mezcla. Un árbol de mezcla es una estructura de árbol jerárquica en la que los nodos de hoja son nodos de valor que encapsulan un clip de animación (QAbstractAnimationClip); y los nodos internos representan operaciones de mezcla que operan sobre los nodos señalados por sus propiedades operando.
Para asociar un árbol de mezcla con un QBlendedClipAnimator, establezca la propiedad blendTree del animador para que apunte al nodo raíz de su árbol de mezcla:
auto blendTreeRoot = new QAdditiveClipBlend(); ... auto animator = new QBlendedClipAnimator(); animator->setBlendTree(blendTreeRoot);
Un árbol de mezcla puede construirse a partir de los siguientes tipos de nodos:
Nota: El árbol de nodos de mezcla sólo debe editarse cuando el animador no se esté ejecutando.
Con el tiempo se añadirán nuevos tipos de nodos.
Como ejemplo, considere el siguiente árbol de mezcla:
Clip0----
|
Lerp Node----
| |
Clip1---- Additive Node
|
Clip2----Se puede crear y utilizar de la siguiente manera:
// 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);
Al crear un conjunto de clips de animación y mezclar entre ellos dinámicamente en tiempo de ejecución con un árbol de mezcla, abrimos un enorme conjunto de posibles animaciones resultantes. Como ejemplos sencillos del árbol de mezcla anterior, donde alfa es el factor aditivo y beta es el factor de mezcla lerp, podemos obtener un continuo 2D de posibles animaciones:
(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 wavingLos árboles de mezcla más complejos ofrecen aún más flexibilidad para combinar tus clips de animación. Ten en cuenta que los valores utilizados para controlar el árbol de mezcla (alfa y beta) son simples propiedades de los nodos de mezcla. Esto significa que estas propiedades también pueden ser controladas por la estructura de animación.
Documentación de propiedades
blendTree : Qt3DAnimation::QAbstractClipBlendNode*
Esta propiedad contiene la raíz del árbol de mezcla de animación que será evaluado antes de ser interpolado por el animador.
Funciones de acceso:
| Qt3DAnimation::QAbstractClipBlendNode * | blendTree() const |
| void | setBlendTree(Qt3DAnimation::QAbstractClipBlendNode *blendTree) |
Señal del notificador:
| void | blendTreeChanged(Qt3DAnimation::QAbstractClipBlendNode *blendTree) |
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.