En esta página

Qt 3D Animation C++ Classes

Los módulos de animación de Qt 3D proporcionan un conjunto de elementos pre-construidos para ayudarle a empezar con Qt 3D. Más...

Este módulo está obsoleto desde la versión 6.8. Desaconsejamos su uso en código nuevo.

Espacios de nombres

Qt3DAnimation

Contiene clases del módulo Qt3DAnimation

Clases

Qt3DAnimation::QAbstractAnimation

Una clase base abstracta para animaciones Qt3D

Qt3DAnimation::QAbstractAnimationClip

La clase base para los tipos que proporcionan datos de animación de fotogramas clave

Qt3DAnimation::QAbstractClipAnimator

La clase base para los tipos que proporcionan capacidades de reproducción de animación

Qt3DAnimation::QAbstractClipBlendNode

La clase base para los tipos utilizados para construir árboles de mezcla de animación

Qt3DAnimation::QAdditiveClipBlend

Realiza una mezcla aditiva de dos clips de animación basada en un factor aditivo

Qt3DAnimation::QAnimationAspect

Proporciona capacidades de animación de fotogramas clave a Qt 3D

Qt3DAnimation::QAnimationCallback

Representa un objeto de retrollamada de animación

Qt3DAnimation::QAnimationClip

Especifica datos de animación de fotogramas clave

Qt3DAnimation::QAnimationClipData

Clase que contiene los datos de animación

Qt3DAnimation::QAnimationClipLoader

Permite cargar datos de animación de fotogramas clave desde un archivo

Qt3DAnimation::QAnimationController

Una clase controladora de animaciones

Qt3DAnimation::QAnimationGroup

Una clase que agrupa animaciones

Qt3DAnimation::QBlendedClipAnimator

Componente que proporciona capacidades de reproducción de animación de un árbol de nodos de mezcla

Qt3DAnimation::QCallbackMapping

Permite mapear los canales dentro del clip en una invocación de un objeto callback

Qt3DAnimation::QChannel

Define un canal para un QAnimationClipData. El sistema de animación interpola cada componente del canal de forma independiente, excepto en el caso de que el QChannel se llame "Rotación" (distingue mayúsculas de minúsculas), tenga cuatro QChannelComponents y el mismo número de fotogramas clave para cada QChannelComponent. En ese caso la interpolación se realizará utilizando SLERP

Qt3DAnimation::QChannelMapper

Permite asignar los canales del clip a propiedades de objetos de la aplicación.

Qt3DAnimation::QChannelMapping

Permite asignar los canales del clip a propiedades de objetos de la aplicación.

Qt3DAnimation::QClipAnimator

Componente que proporciona funciones sencillas de reproducción de animaciones

Qt3DAnimation::QClipBlendValue

Clase utilizada para incluir un clip en un árbol de mezcla

Qt3DAnimation::QKeyFrame

Clase base para la gestión de fotogramas clave

Qt3DAnimation::QKeyframeAnimation

Una clase que implementa una animación de fotogramas clave simple a una QTransform

Qt3DAnimation::QLerpClipBlend

Realiza una interpolación lineal de dos clips de animación basada en un factor normalizado

Qt3DAnimation::QMorphTarget

Una clase que proporciona objetivos morph a la animación blend-shape

Qt3DAnimation::QMorphingAnimation

Una clase que implementa la animación blend-shape morphing

Qt3DAnimation::QVertexBlendAnimation

Una clase que implementa la animación de morphing de mezcla de vértices

Descripción detallada

Este módulo está todavía en desarrollo, pero está disponible como una vista previa de la tecnología. Esto significa que es inestable, que es probable que cambie y que sólo se proporciona por comodidad.

#include <Qt3DAnimation>

Para enlazar con la biblioteca C++ correspondiente, añade lo siguiente al archivo de proyecto qmake:

QT += 3danimation

Las clases, tipos y funciones se declaran en el espacio de nombres Qt3DAnimation.

Visión general

El módulo Qt 3D Animation añade soporte para especificar y utilizar animaciones que pueden ser aplicadas a las propiedades de los objetos en su simulación. Inicialmente este módulo soporta animaciones basadas en fotogramas clave. Es decir, las propiedades tienen valores "clave" en ciertos momentos y cuando se reproducen los valores de la propiedad se calculan interpolando entre los valores conocidos dentro de los fotogramas clave. Toda la evaluación de la animación dentro del módulo Qt 3D Animation tiene lugar en el threadpool Qt 3D. Esto permite que las animaciones se ejecuten sin problemas y se escalen a un alto rendimiento.

Datos de animación

Los datos de animación de los fotogramas clave pueden crearse mediante programación a través de las API de animación de Qt 3D, como Qt3DAnimation::QKeyFrameData, o pueden proceder de herramientas de creación de contenidos digitales (DCC) como Blender, Maya o 3D Studio Max. Qt 3D proporciona un script de exportación de ejemplo para datos de animación para Blender. El formato consumido por Qt 3D Animation en la actualidad es un formato simple basado en JSON. Esto permite tanto a desarrolladores como a artistas trabajar fácilmente con datos de animación. Más adelante se añadirán más formatos optimizados para el consumo en tiempo de ejecución.

Los datos de animación de los fotogramas clave pueden cargarse desde un archivo utilizando la clase Qt3DAnimation::QAnimationClipLoader. Para especificar los datos de animación mediante programación, utilice la clase Qt3DAnimation::QAnimationClip.

Por defecto, los datos de los fotogramas clave se especifican utilizando curvas cúbicas de Bézier. Esto permite crear animaciones suaves a partir de un pequeño número de puntos de datos de fotogramas clave. Más adelante se añadirán otros tipos de interpolación.

Reproducción de animaciones

Además de los datos de animación que contienen los fotogramas clave, Qt 3D Animation también proporciona APIs para reproducir las animaciones y asignar los valores de las propiedades resultantes a las propiedades de los objetos de su simulación. Actualmente existen dos formas de reproducir las animaciones:

Ambas están implementadas como subclases de Qt3DCore::QComponent lo que significa que los objetos de estos tipos pueden ser agregados por objetos de Qt3DCore::QEntity para añadir capacidades de animación a tus entidades simuladas.

Reproducción de animaciones simples

La clase Qt3DAnimation::QClipAnimator permite la reproducción de un único Qt3DAnimation::QAbstractAnimationClip a la vez. Para añadir una animación a una entidad, simplemente añada una instancia de la clase Qt3DAnimation::QClipAnimator a la propiedad components de su entidad.

El módulo de animación Qt 3D adopta un enfoque ligeramente diferente al de QPropertyAnimation y AbstractAnimation. Con esos marcos de animación, la animación especifica tanto los valores de animación como los objetos y propiedades de destino. Los componentes de animación de Qt 3D separan estos dos conceptos ortogonales. Por ejemplo, el componente Qt3DAnimation::QClipAnimator tiene una propiedad clip para especificar los datos de animación (Qt3DAnimation::QAnimationClip o Qt3DAnimation::QAnimationClipLoader).

Esto permite calcular los valores animados, pero se necesita más información para asignar estos valores a las propiedades de los objetos. Esto se consigue con la propiedad Qt3DAnimation::QChannelMapper que contiene una lista de objetos Qt3DAnimation::QChannelMapping. Un Qt3DAnimation::QChannelMapping se utiliza para asignar un canal específico de un clip de animación a una propiedad con nombre de un objeto de destino. Al separar los datos de animación y los mapeos de propiedades de esta manera, la misma animación puede ser aplicada a muchos objetos sin necesidad de tener múltiples copias de los datos de animación o de los objetos. También permite que los datos de animación sean fácilmente reorientados a otros objetos.

Reproducción de animaciones combinadas

El componente Qt3DAnimation::QBlendedClipAnimator permite ir más allá de lo que es posible con Qt3DAnimation::QClipAnimator mezclando varios clips de animación antes de aplicar los cambios de propiedades a las propiedades de destino. El componente animator sigue tomando un channel mapper igual que el componente estándar Qt3DAnimation::QClipAnimator. Sin embargo, en lugar de especificar un único clip de animación, es necesario establecer la propiedad blendTree para que apunte al nodo raíz de un árbol de mezcla.

Un árbol de mezcla es una estructura de datos que representa cómo se agregan o mezclan los clips de animación en función de las propiedades de los nodos del árbol de mezcla. Los nodos del árbol de mezcla soportados actualmente son:

Las entradas del clip de animación de origen se especifican como nodos de hoja en el árbol de mezcla mediante instancias de la clase Qt3DAnimation::QClipBlendValue. Estos clips de animación pueden combinarse de muchas maneras. Por ahora, el módulo Qt3D Animation proporciona interpolación lineal (LERP) y operaciones de mezcla aditiva. Con el tiempo se añadirán más tipos de nodos de mezcla. Se espera que incluyan al menos un nodo LERP generalizado y un nodo LERP baricéntrico.

A modo de ejemplo, consideremos el siguiente árbol de mezcla:

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

Supongamos que Clip0 representa un ciclo de animación de caminar con una duración de 3 segundos y que Clip1 es un ciclo de animación de correr con una duración de 2 segundos. Ambos son entradas (y dependencias) del nodo de mezcla Lerp. El resultado de evaluar el nodo Lerp depende de la propiedad blendFactor del nodo Lerp. Ésta podría estar ligada a la velocidad de una entidad de carácter humanoide, por ejemplo. A medida que la velocidad del personaje aumenta, la animación pasa gradualmente de la animación de caminar en Clip0 a la animación de correr en Clip1.

Además, supongamos que Clip2 representa alguna animación de variación que puede añadirse (agitar los brazos o la cabeza, por ejemplo). La cantidad de este clip aditivo que se añade puede controlarse mediante la propiedad additiveFactor del nodo de mezcla Additive.

Cuando se evalúa un árbol de mezcla, se utiliza el tiempo normalizado (o fase) para que clips de distinta duración puedan mezclarse sin problemas. Por ejemplo, aunque los clips de animación de caminar y correr tengan duraciones diferentes, siempre que el animador los haya creado de forma que las caídas de los pies se alineen en la misma fase, pueden interpolarse sin problemas.

La implicación de esto es que la duración del clip mezclado es en realidad una función de los factores de mezcla de los nodos en el árbol. Considerando sólo el nodo Lerp en el ejemplo anterior, cuando el factor de mezcla del nodo Lerp es 0, sólo se utiliza la animación de paseo en Clip0, lo que resulta en una duración de 3 segundos. Con un factor de mezcla de 1, la duración resultante será de 2 segundos. Para factores de mezcla intermedios, la duración se interpolará linealmente entre 3 y 2 segundos.

Al definir tus propios árboles de mezcla, tienes un control total sobre cómo combinar tu colección de clips de animación de entrada. El árbol de mezcla puede configurarse mediante las propiedades de los nodos de mezcla. Tenga en cuenta también que las propiedades de los propios nodos de mezcla son sólo propiedades estándar, por lo que podrían a su vez ser controladas por otras animaciones si se desea.

Referencia

© 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.