La actual programación de avatares o caracteres autónomos, permite generar mundos virtuales dinámicos que, cada día más, representan la realidad cotidiana o fantástica con gran fidelidad y realismo.
Los modelos estructurados para implementar caracteres autónomos en simulaciones y en la recreación de mundos virtuales ( programación de videojuegos, películas… ) se basan en diferentes estrategias cuyo principal objetivo es la animación de un complejo grupo de personajes en un entorno concreto. Una flota de naves espaciales, una bandada de pájaros o una manada de animales pueden ser objeto de este tratamiento informático.
Actualmente se mezclan técnicas de “key framing” e interpolación entre dos estados con complejos procesos de generación automática de trayectorias como la programación de “caracteres autónomos”. La película “אַוואַטאַר” es el último ejemplo del estado del arte de estas técnicas.
Craig W. Reynolds, en Steering Behaviors For Autonomous Characters, realiza una estructuración del “proceso” [1] de movimiento de un carácter autónomo. Además de dar una interesante definición:
“Un carácter autónomo (CA) combina aspectos de un robot con algunas capacidades de improvisación de naturaleza humana ” y/o animal.
Un CA dispone de una cierta lógica de actuación y un sistema de captura de información sobre el entorno en el que se desenvuelve. La información es necesaria para que se produzca el estímulo que dispara las acciones correspondientes. La lógica que guía la elección de la acción correspondiente y el conjunto de posibles acciones en sí mismas caracterizan al CA.
La determinación de trayectorias de movimiento para la consecución de objetivos de desplazamiento en el entorno es un campo de investigación en desarrollo. La solución de los problemas que se derivan se puede afrontar bajo diferentes modelos de idealización y cálculo.
El análisis o planteamiento geométrico básico (modelos idealizados) para simplificar su conceptualización es una alternativa gráfica interesante. Otra alternativa puede consistir en generar las ecuaciones de movimiento y minimizar valores (gradientes nulos) en función de objetivos, usando técnicas de cálculo numérico y probabilidad.
La descomposición del proceso de movimiento global en la suma repetitiva de tres etapas secuenciales que (se repiten en un bucle de forma continuada) puede resultar útil en el diseño del proceso global de acción del CA en diferentes entornos:
- Selección de la acción: Establecimiento de objetivos, estrategia y preparación de un plan.
- Cálculo: El objeto puede estar sometido a fuerzas externas y/o internas, así como encontrase en diferentes estados intermedios entre acciones.
- Fase de movimiento: Se convierten los datos calculados en movimiento del objeto, que a su vez se encuentra sujeto a determinadas restricciones o limitaciones del movimiento del objeto.
Modelos basados en Behaviors
Una generalización o adaptación a otro problema más complejo siempre es más abordable desde un análisis previo con modelos simplificados. La utilización de cuadrados, circunferencias etc. en la idealización de las formas reales sirve a este propósito.
El análisis planteado por Reynolds clasifica los procesos en un conjunto suficiente para conseguir una gran variedad de acciones y respuestas de movimiento utilizándolas combinadamente.
Vale la pena enumerarlas para entender la idea:
- Seek: Perseguir a un objeto estático (Max velocidad). Esta acción se considera base de construcción del modelo como se verá en las restantes.
- Flee: Huir de un objeto estático (מאקס. Velocidad). Si en cada instante tratamos de perseguir (Seek) el objeto simétrico (del nuestro ) del que queremos huir, estas acciones son por lo tanto encadenadas.
- Pursuit: Perseguir a un objeto móvil (Seek de la estimación de la siguiente posición del objeto perseguido.)
- Evasión: Huir de un objeto movil (Flee de la estimación de la siguiente posición del objeto perseguidor)
- Offset pursuit: Moverse a una distancia de otro objeto (Seek de un punto a distancia fija de la predicción de la siguiente posición del otro objeto).
- Arrival. Persigue un objeto estático pero disminuyendo su velocidad al acercarse al objetivo.
Otras funciones un poco más elaboradas pueden ser:
- Obstacle avoidance: Evitar obstáculos pero sin huir.
- Wander: Variaciones de movimiento aleatorias.
- Path following: Seguimiento aproximado de un camino.
- Wall following: Seguimiento de una pared a una cierta distancia.
- Containment: Movimiento restringido a una cierta región.
- Flow field following: Seguimientote de un campo vectorial.
- Unaligned collision avoidance: Evitar colisión con el elemento predecessor.
Y otros como: Separation, Cohesión, Alignment, Flocking, Leader following.
En este esquema cabe pensar en la posibilidad de encadenamiento de las acciones para constituir comportamientos complejos que simulan los procesos de decisión humanos a nivel muy elemental.
La elección de la acción o conjunto de acciones a realizar, junto con la jerarquización de las mismas y su aplicación en el correspondiente orden, pueden variar sustancialmente la secuencia de movimientos del objeto. Además es necesario establecer un modelo cinemático personalizado para cada objeto, si bien las funciones de movimiento pueden idearse de forma más genérica.
[1] La traducción de “Motion Behaviors” ווי “Proceso de movimiento” se ha utilizado para entenderlo como conjunto de acciones encadenadas o como un patrón de estrategia
Relacionados y referencias:
- Definiendo la Realidad Virtual
- LOD (Level of Detail)
- Caracteres virtuales inteligentes
- Avatar fue creada con más de 4.000 servidores con GNU/Linux