JustToThePoint English Website Version
JustToThePoint en español
JustToThePoint in Thai

Cómo animar con Mixamo y Unity

No debes permitir que nadie defina tus límites por tu procedencia. Tu único límite es tu alma, Gusteau, Ratatouille.

Vivimos en un mundo audiovisual donde las personas están cada vez menos interesadas en leer y es más probable que presten atención a un contenido que les entre por los ojos. Los videos y las animaciones son las formas más eficientes y atractivas para cualquier proceso de enseñanza-aprendizaje, estrategia de marketing o cualquier otro tipo de comunicación porque son muy atractivos, entretenidos y captan fácilmente la atención de la audiencia. La animación es el arte visual de dar vida a objetos inanimados, personajes ilustrados o modelos 3D generados por ordenador. How to animate with Mixamo and Unity

Mixamo & Unity: animaciones para nuestros juegos

Mixamo es un servicio en línea gratuito que tiene una gran colección de personajes, animaciones y herramientas para realizar rigging y animar fácilmente personajes 3D. Unity es uno de los mejores entornos de desarrollo para programar juegos multiplataforma.

Rigging es el proceso de crear un esqueleto virtual que define cómo se conectan y mueven las diferentes partes del cuerpo de un modelo 3D.
Mixamo

  1. Descarga e instala Unity. Lanza la aplicación y crea un nuevo proyecto haciendo clic en el botón Create project (Crear proyecto), a continuación pulsa 3D (Core), asígnale un nombre (por ejemplo, MyFirstProject) y presiona el botón Create project (Crear proyecto) nuevamente. ![Unity & Mixamo](/software/images/unity4.jpg ./software/images/unityAnimation.jpg ./software/images/unity5.jpg ./software/images/unity7.jpg ./software/images/unity3.jpg ./software/images/unity6.jpg ./software/images/unityAnimation3.jpg ./software/images/unity.jpg ./software/images/unity8.jpg ./software/images/unityAnimation2.jpg ./software/images/unity2.jpg)

  2. Una vez que inicies sesión en la página web de Mixamo, selecciona un personaje, por ejemplo, Sophie y haz clic en el botón Download (Descargar). Selecciona en el menú desplegable Format (Formato), la opción FBX for Unity (fbx) y en Pose, T-pose. Voy a cambiarle el nombre a uno más significativo y fácil de recordar, por ejemplo, Sophie.fbx.

  3. Cambia a la sección Animation (Animación) de Mixamo y selecciona algunas animaciones, por ejemplo, Idle (Inactivo), Walking (Caminar), Running (Correr) o Hip Hop Dancing (Bailar hip hop) y para cada una de estas animaciones, haz clic en el botón Download (Descargar) y selecciona las siguientes opciones de exportación: Format -Formato- (FBX for Unity), Skin (Without Skin, es decir, solo queremos la animación, no queremos descargar el modelo), Frames per Second -Imágenes por segundo- (30 está bien para la mayoría de las aplicaciones y usos).

  4. Importación de algunos assets (recursos). Inicia sesión en el portal o tienda web de Unity, la Unity Asset Store. Busca el recurso gratuito Modular Lowpoly Streets (Free), haz clic en el botón Add to My Assets, luego Open in Unity. Finalmente, una ventana emergente te preguntará si deseas abrir Unity Editor, marca la casilla de verificación Always allow asset store.unity.com to open links of this type in the associated app (Permitir siempre que asset store.unity.com abra enlaces de este tipo en la aplicación asociada) y pulsa en el botón Open Unity Editor (Abrir editor de Unity). Abrirá el recurso dentro del editor de Unity. Unity y Mixamo

  5. El administrador de paquetes (Windows, Package Manager -Administrador de paquetes-) muestra qué paquetes están disponibles para la instalación o ya están instalados en tu proyecto, así que simplemente haz clic en Download (Descargar) para descargar el recurso o asset, luego Import (Importar) para importar el recurso a tu proyecto. A continuación, aparecerá un cuadro de diálogo (Import Unity Package -Importar paquete de Unity-), haz clic en All (Todos), luego en Import (Importar) y se cerrará la ventana Importar paquete de Unity cuando el proceso finalice.

    Deberías entonces poder ver el paquete de assets en su propia carpeta ModularLowpolyStreetsFree en la carpeta Assets, en la ventana Project (Proyecto). Arrastra y suelta la escena demo de la carpeta Scenes (escenas) de este recurso (Project, Assets, ModularLowpolyStreetsFree, Scenes, Demo) a nuestra ventana de Hierarchy (Jerarquía).

    La Jerarquía es donde colocas y organizas todos tus GameObjects como cámaras, luces y personajes en la escena activa del juego. La ventana del proyecto es donde encontrarás todos los recursos y archivos disponibles para el proyecto.

    Unity y Mixamo

  6. Importemos el modelo y animaciones de Mixamo en nuestro proyecto de Unity arrastrándolos a la carpeta “Assets”.

  7. Arrastremos nuestro modelo Sophie a la escena, haz doble clic sobre el personaje para acercarte. A continuación, debemos configurar algunos parámetros desde el Inspector. Cambia a la pestaña Rig y selecciona en el menú desplegable Animation Type (Tipo de animación), la opción Humanoid (Humanoide) y en el menú desplegable Avatar Definition (Definición de avatar), la opción Create From This Model (Crear a partir de este modelo). Finalmente, presione el botón Apply (Aplicar) para establecer y confirmar los cambios.

    Cuando se selecciona un objeto del juego, el Inspector muestra todas las propiedades y componentes de acceso público específicos para este objeto.
    Unity y Mixamo

  8. Selecciona la animación Hip Hop Dancing, ve al Inspector, cambia a la pestaña Rig y elige en el menú desplegable Animation Type (Tipo de animación), la opción Humanoid (Humanoide); en el menú desplegable Avatar Definition (Definición de avatar), la opción Copy From Other Avatar (Copiar de otro avatar) y en el menú desplegable Source (Origen), SophieAvatar (vamos a reutilizar el modelo de avatar de Sophie), luego haz clic en Apply (Aplicar). Inmediatamente después, cambia a la pestaña Animation (Animation) y marca Loop Time (para que la animación se repita indefinidamente). Finalmente, pulsa en el botón Apply (Aplicar). Repite el proceso con la animación de caminar.

    SophieAvatar es un recurso que se usa para mapear y configurar los huesos de nuestro modelo, es decir, contiene la definición de nuestro modelo. Unity creará automáticamente un avatar a partir del archivo modelo de Mixamo (fbx).
    Unity y Mixamo

  9. Vamos a crear un Animator Controller, es decir, un recurso de Unity que controla la lógica de un GameObject animado. Te permite organizar y vincular varias animaciones usando una máquina de estados.Haz clic con el botón derecho en la sección de assets, Create (Crear), Animator Controller y cambiemos el nombre a SophieController.

  10. Haz doble clic en SophieController y arrastra y suelta las animaciones, primero la de andar, Walking y luego Hip Hop Dance en el Animator Controller, porque queremos que Sophie camine y luego baile inmediatamente después.

    Cuando arrastras y sueltas la animación Walking al Animator Controller, se conecta automáticamente al estado Entry (Entrada). Significa que Unity lo establece automáticamente como el estado de animación inicial predeterminado.
    Unity y Mixamo

  11. Volvamos a nuestro modelo 3D, selecciona Sophie en la Hierarchy (Jerarquía) en la parte superior izquierda y, a continuación, arrastra y suelta el controlador de animación SophieController en el Inspector, en la sección Animator (Animador), en el cuadro Controller (Controlador). Unity y Mixamo

  12. Finalmente, en la vista de Scene (Escena), selecciona la Main Camera -Cámara principal- (selecciona en el menú Game Object, la opción Align View para ajustar la posición de la cámara principal); luego, ve a Game y haz clic en Play para ver la animación.

    El modo de juego es una de las funciones principales de Unity. Te permite ejecutar y probar el estado de desarrollo de tu juego actual directamente dentro del Editor, a través del botón Play (Jugar). Si presionas el botón Play por segunda vez, saldrás del modo de juego y regresarás a la vista de escena.
    Unity y Mixamo

Cómo animar y mover un único jugador con Unity

  1. En la Hierarchy (jerarquía), selecciona nuestro modelo Sophie. En el inspector, en Animator (Animador), Update Mode (Modo Actualización), elige Animate Physics. El animador se actualiza en sincronización con la llamada FixedUpdate, es decir, bajo el control del motor de física de Unity. ![Cómo animar y mover un único jugador con Unity](/software/images/unityAnimation.jpg ./software/images/unityAnimation3.jpg ./software/images/unityAnimation2.jpg)

  2. Haz doble clic en nuestro Animator Controller SophieController. La pestaña Parameter (Parámetro) en el panel izquierdo del controlador del animador nos permite controlar las transiciones entre los diferentes estados. Añadamos un parámetro haciendo clic sobre el signo más + en la esquina superior derecha, luego seleccionamos Bool (booleano) y, a continuación, cambiemos el nombre a IsWalking (está caminando). También crearemos un trigger o disparador Jump.

  3. Arrastra y suelta las animaciones Idle (el modelo permanece de pie, sin moverse), caminar y saltar (descarga estas animaciones en Mixamo con la casilla In place marcada) en el Animation Controller. Vamos a crear una transición condicional entre dos estados: Idle y Walking. Haz clic derecho en la animación/estado Idle y selecciona Make Transition (Crear transición), luego haz clic en la animación/estado Walking.

  4. Haz clic en la transición recién creada, en la sección de Conditions (Condiciones), pulsa sobre el ícono + para crear una nueva condición para esta transición entre Inactivo y Caminando: =isWalking, true. Además, crea una transición entre Walking e Idle, y la condición para esta transición debe ser =isWalking, false. Cómo animar y mover un único jugador con Unity

  5. Crea una transición entre Walking -Caminar- y Jump -Saltar- (la condición es el trigger o disparador Jump) y entre Jump -Saltar- y Walking -Caminar-.

  6. En la hierarchy (jerarquía), selecciona nuestro modelo/personaje Sophie. En el inspector, elige Add Component (Añadir componente), escribe script y selecciona la opción New script y asígnale el nombre PlayerController. Haz doble clic en el script para abrirlo. Necesitamos crear una referencia tanto para nuestro Animator como para el Rigidbody. Los Rigidbodies son componentes que permiten que un GameObject (por ejemplo, nuestro modelo Sophie) reaccione al modelo físico de Unity en tiempo real, es decir, a las fuerzas, la gravedad, masa, resistencia y momento.

        using UnityEngine;
    
        [RequireComponent(typeof(Animator))]
        [RequireComponent(typeof(Rigidbody))]
        public class PlayerController : MonoBehaviour
        {
            private Animator _animator;
            private Rigidbody _rigidbody;
        }
    
  7. Vuelve al editor de Unity, verás que el Rigidbody se ha añadido automáticamente al modelo/objeto de juego Sophie. Haz clic en Add Component (Añadir componente) para añadir un Box Collider para que el modelo/objeto del juego Sophie al caer y chocar contra el suelo, se quede allí y no siga cayendo en las profundidades del abismo. Asegúrate de que el Box Collider tenga el tamaño adecuado para que coincida aproximadamente con las dimensiones del objeto del juego.

  8. Volvamos al código. La función start, de inicio, se llamará solo una vez cuando se instancia el objeto del juego, es decir, inmediatamente al presionar el botón play, jugar. La actualización, update, se llama por cada uno de los fotogramas en los que se ejecuta el juego (FPS) y el objeto del juego al que está adscrito o vinculado el script (Sophie) está activo.

using UnityEngine;
[RequireComponent(typeof(Animator))]
[RequireComponent(typeof(Rigidbody))]
public class PlayerScript : MonoBehaviour
{
    private Animator _animator;
    private Rigidbody _rigidbody;
    private float _horizontalInput;
    private float _verticalInput;
    private static float _SPEED = 0.3f;
    private bool _IsWalking;
    public float thrust = 1.0f;
    // Se llama a Start antes de la actualización del primer frame
    void Start()
    {
        _animator = GetComponent<Animator>();
        _rigidbody = GetComponent<Rigidbody>();
	_IsWalking = false;
    }
    // La actualización se llama una vez por fotograma de juego
      void Update()
    {
	_horizontalInput = Input.GetAxis("Horizontal");
        _verticalInput = Input.GetAxis("Vertical");
	if ( Input.GetButtonDown("Jump")  )

Input.GetAxis(“Horizontal”) devuelve el valor del eje virtual identificado como Horizontal. Estará en el rango -1 (se presiona la tecla flecha izquierda o la letra “a”) … 0 (no se presiona ninguna tecla)… 1 (se presiona la tecla flecha derecha o la tecla “d”). Cómo animar y mover un único jugador con Unity

Input.GetButtonDown(“Jump”) devuelve True cuando se mantiene presionado el botón Jump (Saltar); por defecto, el botón Saltar es la barra espaciadora.

El administrador de entradas de Unity (Edit -Editar-, Project Settings -Configuración del proyecto-, Input Manager -Administrador de entradas-) es donde puedes configurar los controles de entrada y salida para usar con UnityEngine.Input.

	{
            	_animator.SetTrigger("Jump"); 
                // Establece un trigger de animación y provoca un cambio en el flujo en la máquina de estado de nuestro Animator Controller, de Caminar a Saltar. Un trigger es consumido (su valor se cambia a falso) inmediatamente una vez usado.
	        _rigidbody.AddForce(0, 0, thrust, ForceMode.Impulse); // Aplica una fuerza de impulso a lo largo del eje Z al Rigidbody del GameObject Sophie.
        }
        else if (Mathf.Abs(_horizontalInput) > 0.001f)
        // Si _horizontalInput no es cero (con un pequeño umbral para errores de aproximación con flotantes)...
        {
            ///... tenemos que mover a Sophie. Primero, creamos una rotación para mirar hacia la izquierda o hacia la derecha dependiendo de la entrada del usuario (_horizontalInput);
	    transform.rotation = Quaternion.LookRotation(new Vector3(-_horizontalInput, 0f, 0f));
	    // Entonces, movemos el GameObject hacia adelante mientras también consideramos su rotación usando transform.forward (d=d0+v*t+1/2*a*t^2 and a=0)  
            _rigidbody.MovePosition(_rigidbody.position - transform.forward * _SPEED * Time.fixedDeltaTime);

            if (!_IsWalking )
            {
                _IsWalking = true;
                _animator.SetBool("IsWalking", true); 
                // Establece el valor del parámetro "IsWalking" del Animation Controller como verdadero, cambia del estado Idle (inactivo) al estado Walking (caminar) y activa la animación de andar. 
                // Ten en cuenta que la animación de caminar siempre estará activa en un bucle infinito a partir de este momento.
            }   
        }
	else if (Mathf.Abs(_verticalInput) > 0.001f) {
        // Si el usuario presiona las flechas hacia arriba o hacia abajo o "w" o "s", establece el valor del parámetro "IsWalking" del Animation Controller a falso, cambia del estado Walking (Caminando) al estado Idle (inactivo) y activa la animación Idle.
        // Podríamos haber comprobado si el atributo _IsWalking es True, pero no es necesario.
	    _IsWalking = false;
            _animator.SetBool("IsWalking", false);	
	}
}

Créditos: Este artículo está inspirado por How to animate and move a simple player with Mixamo and Unity/C#

Bitcoin donation

JustToThePoint Copyright © 2011 - 2024 Anawim. ALL RIGHTS RESERVED. Bilingual e-books, articles, and videos to help your child and your entire family succeed, develop a healthy lifestyle, and have a lot of fun. Social Issues, Join us.

Esta web utiliza 'cookies' propias y de terceros para ofrecerte una mejor experiencia y servicio.
Al navegar o utilizar nuestros servicios, estas aceptando nuestra Política de Cookies, así como, nuestros Términos y condiciones de uso.