septiembre 28, 2023

Sistema de animación por Morphing

Introducción

En esta nueva versión de Evergine, hemos añadido soporte para animación morphing en sus assets de modelos 3D . También utiliza Compute Shaders en las plataformas de renderizado soportadas. Esto ha demostrado ser 4 veces más rápido que el morphing de la CPU, debido al increíble rendimiento paralelo.

 

Entendiendo la animación morphing

La animación Morphing se basa en Morph Targets, también conocidos como Blend shapes o Shape keys. Son una técnica utilizada en gráficos 3D por ordenador para crear animaciones y expresiones faciales realistas. Se trata, esencialmente, de una serie de modelos 3D predefinidos que representan diferentes expresiones faciales o corporales. Cada morph target  define sus desplazamientos de vértices respecto a la pose base (normalmente una pose neutra). Esto permite combinar múltiples expresiones, cada una con un peso diferente, de modo que la cara o el cuerpo de un personaje pueden pasar suavemente de una forma a otra. Este proceso de interpolación permite realizar movimientos complejos y realistas, lo que convierte a los morph targets en una valiosa herramienta para la animación de personajes.

 

Compute shader

El uso de morphing a través de compute shaders en lugar de CPU  aprovecha el procesamiento paralelo y la escalabilidad de la GPU. También ayuda a reducir la carga de la CPU. Sin embargo, Evergine cambia automáticamente al modo CPU cuando la API de renderizado de la app no soporta compute shaders o cuando la aplicación obliga a usar CPU (desactivando la propiedad UseComputeSkinning).

Uso de morphing en Evergine Studio

Importa tu modelo 3D

Antes de que puedas usar los morph targets , necesitas un modelo 3D con morph targets. Importa tu modelo 3D a Evergine como de costumbre, arrastrándolo y soltándolo en la carpeta deseada.

Por ahora, los morph targets son soportados en archivos GLTF, FBX y Collada.

Abre tu modelo 3D

Abre tu modelo 3d importado para abrir tu Visor de Modelos. Si tu asset tiene morph targets, aparecerán listados en el panel de Morph Targets en la parte derecha. También muestra el peso por defecto de cada pose.

Edita las poses en tu escena

Si instancias el modelo en tu escena (arrastrando y soltando en el visor de escena), se creará la jerarquía habitual de entidades del modelo. Si seleccionas una entidad con morph targets, verás un nuevo panel en el componente SkinnedMeshRenderer. Ese panel te permite controlar todos los morph targets directamente en el editor.

Busca la pose que deseas modificar y ajusta su deslizador.

Esto guardará los pesos de todos los objetos morph del modelo.

Uso de morphing por código

En tu proyecto C# Evergine, puedes controlar el morphing de un mesh  controlando los pesos de sus morph targets , como en la sección anterior. Puedes modificarlos en el componente SkinnedMeshRenderer , usando la siguiente propiedad:

  • float[] MorphTargetWeights. Si esta propiedad es nula o está vacía significa que la malla no tiene ninguna pose de morphing . En caso contrario, ese array tendrá un valor float por cada pose de morphing . Su orden es el mismo que el visto en el visor de modelos y en el panel del editor SkinnedMeshRenderer.
Antonio avila
Author
Antonio Ávila
Plain Concepts Research

¿Ya te vas?

Suscríbete a nuestra newsletter para estar al día de las últimas noticias, casos de éxito y mucho más. 

No mandamos spam y puedes darte de baja en cualquier momento.