La función potencial de Lennard – Jones en el desarrollo de Algoritmos para entornos virtuales
Trabajo de Diploma para optar por el título de Ingeniera en Ciencias Informáticas
Autora: Liset Ramirez Serpa Tutora: Lic. Lida González Álvarez
Julio 2008
"Las ideas no necesitan de las armas, para ser capaces de
conquistar a las grandes masas"
Liset Ramirez Serpa II Declaro que soy la única autora de este trabajo y autorizo a la Universidad de las
Ciencias Informáticas a hacer uso del mismo en su beneficio.
Para que así conste firmo la presente a los ____ días del mes de ________ del año ________.
_____________________________ _____________________________
Firma de la autora Firma de la tutora
Liset Ramirez Serpa Lic. Lida González Álvarez
Edad: 29 años Ciudadanía: cubana
Institución: Universidad de las Ciencias Informáticas (UCI) Título: Licenciada en Ciencias de la Computación
Categoría Docente: Instructor E-mail [email protected]
Graduada en la Universidad de la Habana en el año 2003. Cinco años de experiencia como profesora de la asignatura de programación.
Liset Ramirez Serpa 2
Dedicatoria
A la memoria de mi padre.
A mi mamá.
A mi tía Ana Luisa.
A mi hermano.
Liset Ramirez Serpa 3
Agradecimientos
A Mimi (Lida), por haber aceptado ser mí tutora, por dejarme robarle su tiempo, Y dedicarme tantas horas de desvelo, por su apoyo, por ser ella.
Mil gracias.
A mi mamá por ser una madre ejemplar y a mi tía Ana Luisa por su ternura Porque juntas logramos llegar, porque a ellas me debo y por ellas soy quien soy.
A mi hermano por pensar siempre en mí, por verme como su ejemplo, Porque siempre estaremos juntos.
A mi familia por estar ahí para apoyarme.
A mis primas Osiris y Odalys porque siempre estuvieron dispuestas.
Por su disposición y su apoyo incondicional.
A Yei por aguantar mis malos ratos y manías, por el día a día.
Porque con su amor el camino fue más fácil de recorrer. Por estar.
A los amigos de hoy y a los de siempre, por darme ánimos.
Sus palabras siempre me ayudaron a crecer, a seguir sin detenerme.
A los profesores que me ayudaron en estos cinco años por enseñarme Y a los del piquete por preocuparse.
A todas las personas que de una forma u otra me ayudaron estos años A la revolución
Gracias
Liset Ramirez Serpa 4
Resumen
Dentro de la Universidad de las Ciencias Informáticas (UCI) la facultad 5 se especializa en la realización de software para Entornos Virtuales empleando las técnicas más apropiadas para el desarrollo de los mismos. Sin embargo en ocasiones se podrían emplear funciones matemáticas que podrían facilitar el trabajo.
Por ello en este trabajo de diploma se exponen las características y propiedades de la Función potencial de Lennard – Jones, una ecuación física destinada para la fuerza de atracción y repulsión entre partículas. Debido a sus peculiaridades esta ecuación se ha adaptado al mundo de los entornos virtuales.
En los juegos con inteligencia artificial utilizando esta función, podremos lograr un comportamiento similar al que se logra aplicando técnicas más complejas, en este caso tendríamos la ventaja de contar con una simple fórmula para tratar, el acercamiento o la evasión entre elementos e incluso para lograr la evasión de obstáculos, con solo calcular las fuerzas entre los objetos.
PALABRAS CLAVE
Función potencial, Lennard – Jones, entornos virtuales
Liset Ramirez Serpa 5
Tabla de contenido
Dedicatoria --- 2
Agradecimientos --- 3
Resumen --- 4
Introducción --- 7
Capítulo 1 Fundamentación teórica --- 11
1.1 Cazar y Evadir --- 11
1.1.1 Algoritmos Básicos --- 11
1.1.2 Acercamiento directo --- 13
1.1.3 Intercepción --- 17
1.2 Patrones de movimiento --- 19
1.2.1 Algoritmo estándar: --- 19
1.2.2 Patrones de movimiento en ambiente de Rejillas Regular --- 20
1.2.3 Patrones de movimientos en ambientes físicamente simulados --- 21
1.3 Técnicas de agrupamiento --- 21
1.3.1 Técnica clásica de agrupamiento. --- 22
1.3.2 Evasión de obstáculos en grupo --- 25
1.3.3 Siguiendo al líder en grupo --- 25
Capítulo 2 Función potencial de Lennard – Jones --- 26
2.1 Características de la función Potencial --- 26
2.2 Cazar o evadir aplicando función potencial --- 29
2.3 Evitar obstáculos aplicando función potencial. --- 30
2.4 Comportamiento en grupos aplicando función potencial --- 32
2.5 Sugerencia de optimización para la función potencial --- 33
2.6 Otras utilidades de la función potencial de Lennard – Jones --- 34
Capítulo 3 Propuesta de solución --- 37
3.1 Propuesta de la aplicación de la función potencial en los proyectos de la Facultad 5. --- 37
3.1.1 Proyecto Juegos de Consola --- 37
3.1.2 Proyecto Desarrollo de Elementos Virtuales Inteligentes. --- 38
3.1.3 Proyecto Herramienta de Desarrollo para Sistemas de Realidad Virtual --- 38
3.2 Descripción del caso de Estudio --- 39
Conclusiones --- 43
Liset Ramirez Serpa 6
Recomendaciones --- 44
Bibliografía referenciada --- 45
Bibiografía consultada --- 46
Índice de figuras --- 48
Glosario --- 49
Anexos --- 50
Liset Ramirez Serpa 7
Introducción
La Inteligencia Artificial (IA) en los videojuegos, ha cobrado auge en los últimos años, dado que las imágenes desplegadas por las consolas cada vez se acercan más a la realidad, ahora, el reto radica en hacer que estas imágenes cobren “vida” y realicen comportamiento que el jugador perciba como inteligente. Realmente todos los videojuegos se desarrollan sobre mundos virtuales, pues sus universos son meras simulaciones de la realidad o de diversos escenarios de ficción. Para cumplir el gran reto, los juegos de video están utilizando cada vez con mayor frecuencia, técnicas de Inteligencia Artificial avanzadas, como lo son Redes Neuronales, Algoritmos Genéticos, entre otros, sin embargo las técnicas tradicionales no se olvidan, debido a que su funcionalidad para simular el comportamiento de los personajes, y encontrar rutas no pierde interés.
Las técnicas básicas vinculadas a las leyes físicas y matemáticas que logran el funcionamiento de los mecanismos y las estructuras de unidades dentro de un mundo virtual y los modelos matemáticos que las gobiernan, convierten a los entornos virtuales en un campo privilegiado para los disímiles logros que se pueden alcanzar simulando comportamientos físicos homólogos de la realidad.
Hoy en día, la colaboración que pueden prestar las redes informáticas, permiten facilitar el trabajo común de los investigadores, los cuales constituyen uno de los motores esenciales del moderno progreso. Es por ello que los científicos aprovechan al máximo cada surgimiento de ideas renovadoras, creando constantemente nuevas fórmulas y adaptando las ya existentes, de forma tal, que les permitan optimizar los logros dentro de las distintas esferas. La informática, es una de ellas y dentro de ésta la Inteligencia Artificial en Entornos Virtuales que permite obtener un realismo sin precedentes, con la ayuda de las leyes físicas y matemáticas las cuales se aplican a la programación desde disímiles puntos de vista.
Lennard – Jones fue un científico graduado de la universidad británica de Cambridge. Dedicó su vida al estudio de las leyes físicas y químicas; fue considerado como el padre de la química computacional moderna e ideó una fórmula basada en la descripción de la energía potencial
Liset Ramirez Serpa 8 como una función de separación de los átomos. Desde su creación se ha utilizado para establecer nuevas ecuaciones dándoles diversas utilidades. Uno de sus usos es adaptar la función potencial a algoritmos para juegos con Inteligencia Artificial en entornos virtuales. Esta función potencial permite a los programadores facilitar su trabajo pues al aplicarla se puede simular varias acciones dentro del mundo virtual.
En nuestro país, las tareas del progreso científico-técnico, se acometieron de la manera más integral posible, no sólo desarrollando actividades como la información científica, el control de calidad y la proyección industrial, sino también creando instituciones como la Universidad de las Ciencias Informáticas (UCI), con la cual se ha pretendido ir integrándonos a los avances de la informática actual, a través de la creación de disímiles software para Cuba u otros países empleando estrategias que nos permiten el perfeccionamiento de nuevos programas y aplicaciones.
En la Universidad de las Ciencias Informáticas (UCI), la Facultad 5 se especializa en la realización de software enmarcados en el área de realidad virtual, tales como: simuladores quirúrgicos, de autos, tiros y juegos. Para el desarrollo de estos sistemas en entornos virtuales se enfrentan problemáticas tales como, la detección de colisiones entre cuerpos rígidos y/o deformables, el alejamiento o acercamiento intencionado de elementos, la evasión de obstáculos, entre otros; al dar solución a cada una de estas situaciones se han incorporado disímiles técnicas de Inteligencia Artificial, pero en ocasiones se desecha la posibilidad de aplicar técnicas básicas asentadas en el uso de funciones matemáticas y/o físicas, que pueden ser incorporadas en algunos sistemas, tal es el caso de la función potencial de Lennard – Jones.
Es por ello que luego de realizar una amplia búsqueda de información, aprovechando todos los grandes beneficios que brindan las Tecnologías de la Informática y las Comunicaciones y basada en los datos encontrados en la bibliografía consultada, se concluye con las siguientes ideas:
Problema a resolver: ¿Cómo utilizar la función potencial de Lennard – Jones en el desarrollo de algoritmos para entornos virtuales?
Liset Ramirez Serpa 9 Objeto de estudio: Algoritmos para definir los comportamientos de elementos dentro de los entornos virtuales.
Campo de acción: Los algoritmos para entornos virtuales empleando la función potencial de Lennard –Jones.
Objetivo general: Proponer como aplicar la función potencial de Lennard - Jones en algoritmos para entornos virtuales.
Por ello se plantea a continuación un grupo de tareas investigativas que permitirán dar solución al objetivo general.
¾ Estudiar algunas técnicas básicas de algoritmos de inteligencia artificial vinculados a entornos virtuales.
¾ Describir el comportamiento de la función potencial de Lennard – Jones en algoritmos para entornos virtuales.
¾ Mencionar otras aplicaciones de la función potencial de Lennard – Jones.
¾ Explicar dónde aplicar la función potencial de Lennard – Jones en los proyectos de Realidad Virtual de la facultad 5.
¾ Realizar una propuesta de la incorporación de la función potencial de Lennard – Jones en algoritmos para entornos virtuales.
Y como resultados de este trabajo se pretende:
¾ Obtener una bibliografía concreta sobre la utilización de la función potencial de Lennard – Jones para entornos virtuales.
¾ Proponer la función potencial de Lennard – Jones para ser aplicada en los entornos virtuales, creando para ello una aplicación de prueba en 2D que permita comprobar su funcionamiento.
El logro de los objetivos anteriormente planteados requiere una investigación íntegra, y el resultado de la misma será distribuido en tres capítulos:
Capítulo 1: Previsto para elaborar una “Fundamentación teórica” que introduzca un grupo de conceptos que ayudarán a la comprensión del trabajo. Se presentarán técnicas tradicionales empleadas en algoritmos para entornos virtuales.
Liset Ramirez Serpa 10 Capítulo 2: Mostrará las propiedades y características de la función potencial de Lennard Jones. Su utilización en diferentes campos y en especial su aplicación en algoritmos de inteligencia artificial para entornos virtuales
Capítulo 3: Mostrará un mayor acercamiento al objetivo propuesto y se realizará una pequeña aplicación a modo de demostración.
Liset Ramirez Serpa 11
Capítulo 1 Fundamentación teórica
El diseño y la programación de los juegos con inteligencia artificial es un campo muy amplio, con muchas técnicas y variaciones, con panoramas y arquitecturas específicas que logran juegos altamente reales para darle al jugador más sensación de inmersión, desafío y diversión.
Simular la realidad es mucho más que mostrar una imagen que la represente en una pantalla.
La realidad es dinámica. Cambia con el tiempo y está sujeta a una serie de leyes físicas que determinan los cambios que en ella se producen.
La mayoría de los desarrolladores de juegos en entornos virtuales incorporan inteligencia artificial de una manera u otra. La habilidad de darles a los personajes controlados por la computadora diversidad en sus comportamientos y distintas personalidades, es posible constantemente a través de nuevas formas, o perfeccionando las existentes, dando la posibilidad de escoger la ideal para cada software en específico.
En este capítulo se pretende mostrar técnicas básicas que vinculadas al desarrollo alcanzado hoy en día, se obtienen propuestas interesantes para lograr cierto realismo en los juegos de inteligencia artificial en entornos virtuales de forma sencilla.
1.1 Cazar y Evadir
El proceso de cazar y evadir consta de dos partes, por un lado la decisión de evadirse o acercarse y por otro lado llevar a cabo estas dos acciones. Además se puede considerar que el problema de cazar/evadir contiene un tercer elemento, la evasión de obstáculos.
1.1.1 Algoritmos Básicos
El modo más sencillo y simple de dar solución al acercamiento y evasión de elementos resulta cuando se tienen en cuenta únicamente las coordenadas dentro del espacio que se trabaja, de forma tal que calculando la diferencia entre los valores de sus coordenadas basta para decidir si se aumenta o disminuye en función de lo que se quiera lograr.
Liset Ramirez Serpa 12 Como desventaja este algoritmo no tiene en cuenta las direcciones ni las velocidades a las cuales se mueven los objetos analizados. En estos casos la decisión a tomar cuando se quiere lograr un acercamiento, será contraria a la que se toma cuando se quiere lograr un alejamiento. [4]
1.1.1.1 Algoritmo básico basado en coordenadas
Este simple algoritmo básico consiste en actualizar constantemente las coordenadas x, y de A con respecto a B a fin de reducir la distancia entre sus posiciones. En cada ciclo se compara la posición en x de ambos objetos logrando mover el objeto A en la dirección correspondiente.
En el ejemplo 1 se muestra el trabajo con las coordenadas.
if (A.x > B.x) A.x--;
else if (A.x < B.x) A.x ++;
if (A.y > B.y) A.y--;
else if (A.y < B.y) A.y++;
Ejemplo 1 Algoritmo básico de acercamiento
1.1.1.2 Algoritmo básico basado en columnas y filas
En juegos basados en mosaicos, el espacio de juego se divide en celdas que pueden ser cuadrados o hexágonos y la posición de los objetos se fija dentro de los mismos. En este caso, se aplica el algoritmo anterior de manera similar, pero está vez se chequean columnas y filas donde se encuentran los objetos, en lugar de las coordenadas.
El seudocódigo para dar solución a la problemática vista anteriormente quedaría:
if (A.col > B.col) A.Col--;
else if (A.col < B.col) A.col++;
if (A.fil> B.fil) A.fil--;
else if (A.fil<B.fil) A.fil++;
Ejemplo 2 Algoritmo básico basado en columnas y filas
Liset Ramirez Serpa 13 Con este método se ilustran gráficamente la evasión o el acercamiento entre los objetos, que al aplicársele este método parecerían poco natural, como ilustra la figura 1.1.
Figura 1.1 Acercamiento entre 2 objetos (A se acerca a B).
Como se puede ver, A en lugar de seguir el camino directo hasta B se mueve a lo largo de uno de los ejes coordenados y luego sigue el camino recto.
1.1.2 Acercamiento directo
Algunos algoritmos para cazar y evadir se enfocan en determinar la línea de visión entre los objetos. En esencia, esta perspectiva nos permitirá encontrar un camino en línea recta desde A hacia B cuando B se mantiene en una posición fija, en caso contrario el camino encontrado podría ser curvo.
1.1.2.1 Entornos basados en mosaicos
Cuando el elemento al cual nos queremos acercar (B) se mantiene fijo, entonces el elemento A puede seguir el camino en línea recta, de lo contrario si el objeto que queremos alcanzar se encuentra en movimiento, no necesariamente podrá seguirse un camino recto.
Entre los algoritmos desarrollados para buscar el camino directo hacia un punto se encuentra el algoritmo de Bresenham, que es uno de los más eficientes que se utilizan en los entornos basados en celdas, para trazar el camino del origen al destino deseado. Este resulta más atractivo que el resto, porque no marca celdas a lo largo de la abscisa por la cual se mueve en
Liset Ramirez Serpa 14 busca del destino, solo las necesarias, haciendo posible trazar el camino probable más corto.
La desventaja que presenta Bresenham es que una vez que el objetivo se mueve debe volverse a ejecutar para definir nuevamente la trayectoria hacia el mismo
En la Figura 1.2 puede verse la diferencia del camino trazado mediante el algoritmo de Bresenham y el algoritmo “supercover line” [11]
Figura 1.2 Comparación del algoritmo Bresenham.
Las técnicas mencionadas hasta el momento resultan interesantes para cuerpos estáticos y rígidos, por ello, para otro tipo de circunstancias se tiene en cuenta otros algoritmos.
1.1.2.2 Entornos continuos
Cuando se le incorporan al juego motores físicos, donde las entidades -aviones, naves especiales, entre otros- son conducidas aplicándoles fuerzas de empuje y direccionamiento, se emplean métodos más exactos para mayor realismo. En esta sección se discute un algoritmo que se aplica cuando los cuerpos que se quieren acercar van uno en dirección del otro.
Para explicar el método tomemos un espacio de dos dimensiones donde nos encontramos con dos cuerpos rígidos (A y B) y se quiere conducir A hasta el cuerpo B, a estos se le irán aplicando algunas fuerzas para lograr el objetivo.
Liset Ramirez Serpa 15 El algoritmo asume que A solo conoce de B sus coordenadas actuales, esto unido a su posición actual permitirá construir la línea de visión entre ambos cuerpos, la cual concederá decidir como guiar A hasta B.
Sobre ambos cuerpos (A, B) se aplican fuerzas de empuje y podrán girar al aplicar sobre ellos fuerzas de dirección, de manera que, si se quiere que gire a la derecha se aplica una fuerza que ubique el frente del objeto más a la derecha y de igual forma si se quisiera girar a la izquierda, tal y como se muestra en la Figura 1.3.
Figura 1.3 Fuerzas aplicadas a la entidad.
Este algoritmo controlará las fuerzas de dirección aplicadas sobre A, de manera que siempre se mantenga en dirección a B. La velocidad máxima y la razón de giro estarán limitadas por las fuerzas de resistencias lineales y angulares que se calculan y aplican sobre ambos cuerpos. El radio de giro está en función de la velocidad lineal, mientras más alta sea su velocidad lineal, mayor será el ángulo de giro, esto hace que los caminos tomados por cada cuerpo se vean más flexibles y naturales.
El ejemplo 1.3 muestra la función que permite controlar la dirección del objeto A, la cual se ejecuta en cada iteración de la simulación.
void LineaDeVision (void) {
Vector u, v;
bool izq = false;
bool der = false;
Liset Ramirez Serpa 16 u = VRotate2D(-A.fOrientacion, (B.vPosicion - A.vPosicion));
u.Normalizar();
if (u.x < -_TOL) izq = true;
else if (u.x > _TOL) der = true;
A.SetDireccion (izq, der);
}
Ejemplo 1.3 Algoritmo de persecución siguiendo una línea de visión
La Figura 1.4 representa el camino tomado por A para llegar a B. Los cuadros en rojo muestran las posiciones de los objetos al inicio de la simulación. Donde B mantuvo un camino recto mientras, el camino de A se hizo curvo al irse ajustando continuamente en dirección a B.
Figura 1.4 Persecución siguiendo la línea de visión.
Si el cuerpo A se moviese rápido, podría adelantar al cuerpo B, para prevenir esto, se puede mantener el cuerpo A a una distancia predefinida de B, reduciendo en caso de ser necesaria la fuerza de empuje aplicada sobre él. Si se quisiera lograr un alejamiento, se aplica el algoritmo expuesto en el Ejemplo 1.3 invirtiendo los signos menor y mayor que.
Este algoritmo es efectivo en los casos en que el perseguidor está dirigido directamente a su presa. El inconveniente surge al dirigirse directamente a la presa no siempre garantiza el camino más corto en términos de distancia o tiempo. Por ello se abordará otro algoritmo que supera esta situación. [4]
Liset Ramirez Serpa 17 1.1.3 Intercepción
En muchas ocasiones es deseable que el perseguidor (A) intercepte a su presa (B) en algún punto a lo largo de su trayectoria, por ejemplo, un misil que es lanzado hacia un avión. Esto logrará que A alcance a B tomando el camino más corto en términos de distancia o tiempo y aun cuando B sea más rápido, A lo podrá alcanzar.
El algoritmo de intercepción permitirá predecir una posición futura del cuerpo B y moverse hacia esa posición a fin de lograr una intercepción tal y como muestra la Figura 1.5.
Figura 1.5 Punto de intercepción
A primera vista podría parecer que el punto de intercepción es el punto a lo largo de la línea de la trayectoria de B para el cual se logra la menor distancia del punto donde se encuentra ubicado A hasta dicha línea, pero este problema de encontrar la distancia más corta, no tiene en consideración las velocidades a las cuales se mueven ambos objetos pudiendo suceder que no lleguen al mismo tiempo al punto de intercepción.
Para lograr que A y B se encuentren a la vez, será necesario conocer las posiciones iníciales de ambos, la velocidad y dirección a la cual se mueve B, de esta manera se podrá predecir su posición futura. El cuerpo A deberá monitorear constantemente la posición y velocidad del cuerpo B e ir actualizando la posición del punto de intercepción. Esto facilita al objeto A
Liset Ramirez Serpa 18 adaptarse a cualquier tipo de maniobra evasiva del otro cuerpo cambiando el rumbo constantemente.
El algoritmo para encontrar el punto de intercepción hace algunas modificaciones al mostrado anteriormente en el Ejemplo 1.3.
void Intercepcion(void) {
Vector u, v;
bool izq = false;
bool der = false;
Vector Vr, Sr, St;
double tc ;
Vr = B.vVelocity - A.vVelocity; // Diferencia de velocidad Sr = B.vPosition - A.vPosition; // diferencia de posiciones
tc = Sr.Magnitude() / Vr.Magnitude(); // tiempo estimado para recorrer Sr en un tiempo Vr St = B.vPosition + (B.vVelocity * tc); // Posicion futura de B
u = VRotate2D(-A.fOrientation, (St - A.vPosition));
u.Normalize();
if (u.x < -_TOL) izq = true;
else if (u.x > _TOL) der = true;
A.SetDireccion(izq, der);
}
Ejemplo 1.4 Algoritmo de intercepción para lograr un acercamiento
Los inconvenientes de este método aparecen cuando A es más lento que B, podría caer detrás de él y sería imposible lograr la intercepción, igualmente si A se encuentra delante de B y se mueve a una velocidad mayor o igual que B, el punto de intercepción se prevé por delante de ambos de manera que la intercepción no se realizaría en el momento exacto.
Hasta aquí hemos visto como efectuar la evasión o el acercamiento siguiendo diferentes ideas, algoritmos básicos, línea de visión e intercepción, ya sea en entonos continuos o en entornos basados en mosaicos. Estos algoritmos son efectivos y brindan una idea de
Liset Ramirez Serpa 19 comportamiento inteligente, sin embargo esto podría mejorar si se combinara con la decisión de cazar o evadir en otros algoritmos que se mencionarán en lo adelante.
1.2 Patrones de movimiento
Es una forma simple para dar movimiento inteligente a las unidades en el juego secundarias controladas por la computadora, haciendo aparentar a los elementos disímiles maniobras que se pueden complicar en determinadas situaciones del juego cuando en realidad están siguiendo un patrón de movimiento predefinido. Estos patrones se pueden ajustar a cada juego agregándoles distintas técnicas según los intereses del programador. [4]
1.2.1 Algoritmo estándar:
El método estándar para implementar patrones de movimiento consiste en tomar el patrón deseado y codificar los datos de control utilizando un arreglo o conjunto de arreglos. Los datos de control funcionan con instrucciones de movimientos específicos tales como, avanzar y girar que permitan lograr un comportamiento deseado.
El Ejemplo 1.5 muestra una clase para manejar un conjunto típico de instrucciones de movimiento.
class ControlDatos {
double giroIzq;
double giroDer;
double pasoAdelante;
double pasoAtras;
};
Ejemplo 1.5 Clase para definir instrucciones de movimiento.
Esta clase podría incluir otras instrucciones mas personalizadas para darle variedad al objeto, como pueden ser lanzar bombas, disparar armas, aumentar la velocidad o mantenerse inmóvil, entre otras muchas. En el Ejemplo 1.6 se muestra el patrón a seguir para que un objeto se mueva de forma zigzagueante.
Patron[0].giroDer = 0;
Patron[0].giroIzq = 0;
Liset Ramirez Serpa 20 Patron[0].pasoAdelante = 2;
Patron[0].pasoAtras = 0;
Patron[1].giroDer = 0;
Patron[1].giroIzq = 0;
Patron[1].pasoAdelante = 2;
Patron[1].pasoAtras = 0;
Patron[2].giroDer = 10;
Patron[2].giroIzq = 0;
Patron[2].pasoAdelante = 0;
Patron[2].pasoAtras = 0;
Ejemplo 1.6 Inicialización de patrones
En la gran mayoría de los juegos se emplean patrones y se llevan a cabo recorriendo el arreglo creado para ellos y modificando los atributos del objeto en cada ciclo como se muestra en el Ejemplo 1.7.
void CiclodeJuego(void)
{ . . .
Objeto.orientacion + = Patron [indiceActual].giroDer;
Objecto.orientacion - = Patron [indiceActual].giroIzq;
Objecto.x + = Patron [indiceActual].pasoAdelante;
Objecto.x - = Patron [indiceActual].pasoAtras;
indiceActual ++;
. . . }
Ejemplo 1.7 Función que lleva a cabo un ciclo del juego.
La implementación de este algoritmo es muy simple y dependerá de la variedad de instrucciones que contemple el juego a desarrollar.
1.2.2 Patrones de movimiento en ambiente de Rejillas Regular
La estrategia que se empleó para el movimiento de patrones basado en mosaicos es semejante al método que se mencionó anteriormente para el acercamiento mediante la línea de visión (Bresenham), en este caso se manejó para crear varios patrones de movimiento. Los
Liset Ramirez Serpa 21 caminos se construirán utilizando segmentos de líneas y cada nuevo segmento comenzará donde termina el anterior, como se representa en la Figura 1.6.
Figura 1.6 Patrón rectangular resaltando las coordenadas del vértice y la dirección del movimiento.
Los patrones no están atados a una posición específica una vez comenzado el juego. Cuando el patrón es construido y normalizado puede ser llamado desde cualquier entorno del juego.
Se puede construir cualquier cantidad de patrones, solo se necesita calcular las coordenadas del vértice del patrón y calcular los segmentos de cada línea. [4]
1.2.3 Patrones de movimientos en ambientes físicamente simulados
En este tipo de ambiente resulta más difícil aplicar los patrones de movimientos en objetos físicamente simulados, al obligar a los objetos seguir un patrón estamos rompiendo el propósito de la simulación física subyacente. No se tiene en cuenta la posición específica ni orientación de un objeto sino que se debe persuadir aplicándole fuerzas de control como la de direccionamiento o empuje teniendo en cuenta las fuerzas de la naturaleza apropiadas para conducirlo hasta el destino deseado de la forma más natural posible.
1.3 Técnicas de agrupamiento
Son muchas las aplicaciones posibles de este modelo en videojuegos. Una de ellas es el comportamiento de un conjunto de enemigos (naves espaciales, soldados, insectos, manadas,
Liset Ramirez Serpa 22 rebaños, etc.). El uso de flocking 1 a diferencia del movimiento conjunto monótono, brindará una sensación de realismo muy superior, culminando en un juego más profundo y variado.
1.3.1 Técnica clásica de agrupamiento.
Las técnicas de agrupamiento representan un movimiento coordinado de grupos que se puede ver en la naturaleza, en el vuelo de los pájaros, en los peces, insectos, entre otros.
El movimiento en grupo posee ciertas reglas que hay que respetar en la implementación, es decir, no es sólo intentar simular el movimiento de entidades coordinadas sino además la aplicación de ciertas reglas que aseguren las condiciones reales de este fenómeno. No puede existir una inteligencia superior que gobierne todas las entidades, cada entidad se mueve de modo independiente según las reglas del modelo y su ponderación respectiva.
De este modo, la simulación que se logra se asemejará mucho al comportamiento de las entidades que se observan en la naturaleza. En principio, puede parecer que gobierna el caos, pero si la observación es detallada se podrá notar que existe un patrón. Las entidades mantienen una cohesión pero al mismo tiempo se mantiene una distancia mínima entre ellas, logrando no chocar entre sí, ni contra obstáculos (o al menos la posibilidad que esto ocurra es baja) y, finalmente, mantienen una dirección común.
De la aplicación de las siguientes reglas sencillas, se obtienen diversos comportamientos complejos (en función de su ponderación, es decir, del peso o la importancia que posee cada una de ellas en la dirección/velocidad/aceleración que finalmente efectuará la entidad). Estos comportamientos se les suele denominar emergentes, pues no están planeados a priori y en muchas ocasiones sorprenden al creador del modelo en cuestión.
Son muchas las aplicaciones posibles de este modelo en juegos virtuales. Una de ellas es el comportamiento de un conjunto de enemigos (naves espaciales, soldados, insectos, etc.). El uso de flocking, a diferencia del movimiento conjunto monótono, brindará una sensación de realismo muy superior, culminando en un video juego más profundo y variado.
En ambientes físicamente simulados, continuos, se pueden dirigir las entidades aplicándoles fuerzas, como se ha mencionado anteriormente, al igual que realizar acercamiento o
Liset Ramirez Serpa 23 alejamiento en relación con otras entidades del juego, o aplicar patrones. La técnica flocking es el resultado de 3 reglas básicas explicadas en al Figura 1.7
Figura 1.7 Reglas básicas de Craig Reynolds
Este algoritmo es de O ( ) porque cada integrante debe conocer la posición de todos los
demás, aunque solo debe reaccionar ante sus vecinos más cercanos. En este método las unidades son tratadas como cuerpos rígidos lo que facilita poder encargarse de la orientación.
Cada unidad del grupo tiene un arco de visibilidad y las unidades que estén dentro de este deben conocer posición, dirección y separación entre ellas. Como se muestra en la figura 1.8
Liset Ramirez Serpa 24 Figura 1.8 Unidades visibles dentro del arco de visión.
Sin embargo, el arco de visibilidad debe variar de acuerdo a las características del grupo.
Mientras mayor sea el ángulo de visibilidad más probabilidades hay de que las unidades se mantengan en un solo grupo, si el arco es pequeño el grupo podría convertirse en pequeños conjuntos y solo volverían a unirse si se reencontraran dentro del arco de visión de otro grupo pequeño.
Por ejemplo si se está simulando un grupo de aviones se debe tener un arco amplio de visión debido a que tendría noción del comportamiento de la mayoría de las unidades pero si se simula la persecución realizada por un escuadrón militar se recomienda usar un arco pequeño a fin de simular el avance en fila. Como se muestra en la figura 1.9
Figura 1.9 Entidades desplazándose en grupo
Para ser más amplia y útil esta técnica se le agregan otros factores a tener en cuenta como son:
Liset Ramirez Serpa 25 Evitar obstáculos: El grupo de entidades debe tener conocimiento de los objetos con los cuales podría chocar en el trayecto, calcular la distancia entre ellos y de esta forma evitarlo.
Huir de una persecución: El grupo de entidades debe tener conocimiento de quién o quienes podrían ser sus perseguidores y cuidar la distancia entre ellos.
Perseguir un objetivo: Al igual que en el caso anterior el grupo de entidades debe tener conocimiento de cuál es su presa y lograr una distancia mínima entre ellos.
Esta técnica de flocking es muy utilizada para mejorar el realismo en los juegos con inteligencia artificial y evita el movimiento monótono de los elementos dentro del entorno virtual. [3]
1.3.2 Evasión de obstáculos en grupo
El código para lograr este objetivo debe insertarse después de haber implementado las tres reglas básicas. El grupo de unidades ante un obstáculo tiende a dividirse en pequeños grupos cuando el arco de visibilidad es pequeño. A las unidades se le implementan vectores proyectándolos sobre el plano de visión del elemento y tratando de encontrar la dirección para evitar el obstáculo. [2]
1.3.3 Siguiendo al líder en grupo
Siguiendo al líder es una de las variantes que se le puede aplicar al algoritmo básico de movimiento en grupos. Al agregársele un líder a una bandada se podría lograr simular que estas se movieran con un propósito más real además de mostrar más inteligencia artificial.
Se puede lograr no encasillarnos con una sola unidad como líder, sino crear condiciones para que cualquier unidad en un momento determinado pueda serlo. Al líder se le pueden adicionar las técnicas mencionadas anteriormente como evadir o acercarse a un objeto determinado mientras la manada seguirá a su guía.
Muchos principios de la matemática y la física se podrían tener en cuenta para ser adaptados a los algoritmos de inteligencia artificial, en el próximo capítulo se explicará detalladamente una función que se utiliza con el fin de simular movimiento entre los elementos en un entorno virtual.
Liset Ramirez Serpa 26
Capítulo 2 Función potencial de Lennard – Jones
Para lograr un comportamiento más cercano a la realidad, trabajando con las unidades dentro de los juegos, resulta de gran importancia tener en cuenta principios de la física e incluirlos en los algoritmos que se desarrollan. El uso de funciones potenciales es una de las opciones que nos permite controlar el comportamiento de las unidades de juego en variadas situaciones.
En el desarrollo de juegos inteligentes, son usadas las funciones potenciales para lograr unidades de enjambre, movimiento de grupos, acercamiento y alejamiento entre unidades, así como la eliminación de obstáculos.
Específicamente este capítulo se centrará en la función potencial de Lennard Jones, su comportamiento y aplicación en los juegos.
2.1 Características de la función Potencial
El Potencial de Lennard-Jones es un modelo matemático sencillo propuesto en 1924 por John Lennard-Jones para representar el comportamiento entre un par de átomos o moléculas neutros al encontrarse sujetos a dos fuerzas distintas en el límite de una gran separación y de un pequeño alejamiento: donde una fuerza atractiva actúa a grandes distancias (fuerza de Van Der Waals, o fuerza de dispersión) y una fuerza repulsiva actúa a pequeñas distancias.
Teniendo en cuenta esas características, podremos adaptarlas a los algoritmos de entornos virtuales logrando un comportamiento similar al que mencionábamos en el capítulo anterior aplicando las técnicas abordadas, en este caso tendríamos la ventaja de contar con una simple fórmula para manipular el acercamiento o la evasión e incluso para lograr evitar obstáculos.
Al utilizar esta función, solo se necesita calcular la fuerza entre dos unidades – la unidad controlada por la computadora y la del jugador – luego aplicar esa fuerza en el extremo delantero de la entidad controlada por la computadora, la cual actuará como una fuerza de direccionamiento. En este caso la fuerza siempre apuntará a la línea de visión entre las dos unidades. La fuerza puede apuntar en cualquier dirección con relación a la unidad controlada por la computadora y no solo para su izquierda o derecha.
Liset Ramirez Serpa 27 Aplicando la fuerza de direccionamiento en el extremo delantero de la entidad se podría cambiar su dirección en el sentido al cual apunta la fuerza. Invirtiendo la dirección de esta acción se obtendría un comportamiento contrario, evadir o acercarse, según se desee. Esta fuerza de dirección contribuye a hacer una fuerza propulsora o de empuje de la unidad, así permitiría acelerar o bajar la velocidad de acuerdo a su movimiento.
La siguiente ecuación muestra la función potencial de Lennard-Jones, donde U representa la energía potencial, la cual es inversamente proporcional a la distancia de separación, r, entre moléculas. A y B son parámetros, como lo son los exponentes m y n.
La Figura 2.1 se muestra 3 gráficos de la función potencial para diferentes valores de m y n.
Figura 2.1 Gráfica del potencial de Lennard Jones.
El componente repulsivo actúa sobre una distancia relativamente pequeña, r, desde el objeto, pero tiene una magnitud relativamente grande cuando la r se hace pequeña. La parte negativa de la curva que se aleja adicionalmente del eje vertical representa la fuerza de atracción. Aquí, la magnitud de la fuerza es más pequeña pero actúa sobre un rango mayor de separación, r.
Si se toma la negativa de la derivada de la función expresada en (1), obtendremos la función que representa la fuerza entre 2 moléculas.
Liset Ramirez Serpa 28 A, B, m, y n son parámetros que están seleccionados para de una manera realista modelar las fuerzas de atracción y repulsión del material bajo consideración, por ejemplo, serían diferentes estos valores si se quisiera modelar un sólido o un liquido. En la expresión (1), el término
representa el componente de fuerza de atracción sobre la fuerza total mientras representa el componente repulsivo de la fuerza.
El alcance del potencial se puede cambiar ajustando los parámetros n y m. Esto posibilita ajustar el rango sobre el cual la repulsión o la atracción dominan y ofrecer algún control sobre el punto de transición. Se puede pensar en A y B como la fortaleza de las fuerzas de atracción y repulsión, respectivamente, donde n y m representan la atenuación de estos dos componentes de fuerza.
Se puede emplear la función de Lennard - Jones para provocar que la unidad controlada por computadora sea atraída por la unidad del jugador a fin de que la unidad controlada por computadora persiga al jugador. Se puede ajustar los parámetros de la función potencial para permitir que la unidad controlada por computadora sea rebatida por el jugador, causando que evada al otro jugador. También, se le puede dar a cualquier número de unidades del jugador, varios pesos para ocasionar que algunos de ellos estén más atrayentes o repulsivos hacia las unidades computadorizadas que otros. Esto dará una manera de establecimiento de prioridades y amenazas.
Además de cazar y evadir, se podrá aplicar la misma función potencial para causar que las unidades controladas por computadora eviten obstáculos. Básicamente, los obstáculos los repelerán las unidades controladas por computadora a corta distancia, provocando esencialmente alejarse de ellos. También se puede crear muchas entidades controladas por computadora que se acerquen unas a otras formando un enjambre. Se podría además aplicar otras influencias para inducir al enjambre a moverse ya sea hacia otro jugador u objeto, o
Liset Ramirez Serpa 29 alejarse de este y evitar obstáculos durante el camino. Lo mejor acerca de usar la función potencial de Lennard-Jones es que de una forma sencilla nos posibilita crear comportamientos aparentemente inteligentes.
2.2 Cazar o evadir aplicando función potencial
Para conseguir que las unidades se atraigan o repelen, al algoritmo a utilizar se le incorpora la función potencial para calcular la fuerza de atracción (o repulsión) entre dos objetos y el resultado será una fuerza direccional para la unidad controlada por la computadora, la cual será una medida escalar que es positiva o negativa en dependencia de la fuerza que represente y es aplicada a la zona delantera de la unidad.
En la figura se pueden observar algunas de las acciones que se logran al aplicar la función potencial y cómo al ajustar los distintos parámetros se obtienen funciones diferentes.
Figura 2.2 Función potencial Lennard - Jones (cazar, evadir)
La sección (A) representa como la entidad A se acerca a B y luego da vueltas mientras B lo cruza, cuando A se acerca mucho, cambia de dirección abruptamente para mantener alguna separación entre las dos unidades. La sección (B), muestra como se ha reducido la fortaleza del componente de atracción (se hizo más pequeño el parámetro A), lo cual produjo comportamiento parecido al algoritmo de intercepción que discutimos en el capitulo 1. En la sección (C), se ha aumentado la fortaleza de la atracción y el resultado se parece al algoritmo
Liset Ramirez Serpa 30 de línea de visión básica. Finalmente, en la sección (D), se ha reducido la fuerza de atracción, aumentando la fuerza de repulsión y ajustados los parámetros del exponente, provocando que A se alejara de B.
Ajustar los parámetros da una gran medida de flexibilidad cuándo se afina el comportamiento de las unidades controladas por computadora. No se necesita usar los mismos parámetros para cada unidad. Se puede dar valores diferentes de parámetro para unidades distintas logrando así variedad en el comportamiento de cada una.
La función potencial puede utilizarse en combinación con las técnicas vistas en el capítulo anterior, es decir podrían aplicarse al mismo tiempo y lograr gran variedad en el comportamiento de las unidades de un juego.
Lo explicado anteriormente se puede utilizar en los juegos para simular un animal acechando a su presa, conservando una distancia hasta estar seguro del momento para atacar, o simplemente simulando un jugador defensivo cubriendo a un receptor en un partido de fútbol.
El evitar obstáculos es una situación muy parecida a la de evadir alguna entidad y para lograrlo también se aplica la función potencial de Lennard – Jones.
2.3 Evitar obstáculos aplicando función potencial.
Se puede emplear la facilidad que nos brinda la función potencial de lograr la evasión, para obtener ventaja en lo que se refiere a evitar obstáculos. En este caso se inicializa el parámetro A (la fuerza de atracción) en 0 para dejar solo el componente de repulsión. Luego se puede trabajar con el parámetro B ajustando la fuerza de repulsión y el exponente m para ajustar la atenuación, o sea el radio de influencia de la fuerza repulsiva.
Cuando la unidad controlada por la computadora se acerca a un objeto del cual debe alejarse, se desarrolla una fuerza de repulsión, forzando la unidad a alejarse o estar alrededor del objeto. La magnitud de la fuerza de repulsión es una función de la distancia de separación.
Cuando una entidad se acerca a un objeto la fuerza podría ser pequeña, causando una vuelta alrededor de este más bien gradual, sin embargo, si la unidad está muy cerca la fuerza de repulsión será grande lo cual forzará a la unidad a girar de forma brusca.
Liset Ramirez Serpa 31 Este algoritmo es conceptualmente muy simple, en cada iteración del ciclo se calcula la fuerza de repulsión para todos los objetos en relación con la unidad almacenados en un arreglo, considerando que los más cerca a la unidad tendrán más fuerza de repulsión. Al acercarse a la unidad todas las fuerzas son sumadas y el resultado neto es aplicado a la unidad como una fuerza de direccionamiento.
Para lograr la evasión de obstáculos no es necesario restringirse a estorbos circulares o esféricos. Aunque la fuerza de repulsión ciertamente tiene influencia esférica, se podría usar obstáculos esféricos colocándolos unidos en filas para crear una pared. La Figura 2.3 muestra un ejemplo de cómo podrían agruparse varios obstáculos esféricos para formar una caja, dentro de la cual un objeto sería libre de moverse.
Figura 2.3 Movimeinto dentro de una caja utilizando la función potencial .
De esta forma se crean escenas o espacios donde las entidades se puedan mover libremente dentro de un límite. Por ejemplo se podría utilizar para las pistas en los juegos de carros de carrera, estos colindantes no necesitan servir para el jugador pero ayudaría a conducir a la unidad controlada por la computadora.
Liset Ramirez Serpa 32 2.4 Comportamiento en grupos aplicando función potencial
La función potencial se puede utilizar también para lograr el comportamiento en grupo, todo lo que se debe hacer es calcular las fuerzas entre cada componente del enjambre, en este caso, las componentes de atracción de la fuerza harán que las unidades viajen juntas (la cohesión Figura 1.7), mientras los componentes de repulsión evitarán que se lancen unos sobre otros (la separación Figura 1.7).
En este algoritmo se calcula, como en los demás, la fuerza que está actuando entre cada unidad. La diferencia principal es que se tendrá que calcular entre cada unidad y el resto, lo que resulta un poco costoso dependiendo del número de unidades que participan en el enjambre.
La Figura 2.4, muestra el comportamiento resultante de un enjambre.
Figura 2.4 Ejemplos de agrupamiento de unidades utilizando función potencial.
En la sección (A) se muestra como las unidades se han juntado para crear una bandada y en la sección (B) muestra los caminos que toman cada unidad, los cuales forman remolinos y están trenzados. Este comportamiento representa un enjambre de insectos, ya sean abejas o moscas.
Liset Ramirez Serpa 33 Como se explicaba anteriormente esta técnica se puede mezclar con algoritmos como los de evitar obstáculos o persecución, esto permitiría a las bandadas no solo simular un agrupamiento sino además cumplir funciones dentro del juego.
Los enjambres no son los únicos que se pueden simular usando este algoritmo. También se pueden modelar comportamiento de gentío, lo que en este caso se tendrán que refinar los parámetros para hacer el movimiento de unidades un poco más real.
Finalmente se podría decir que se puede simular la técnica vista en el capitulo anterior en el caso de flocking siguiendo a un líder utilizando la función potencial, solo se necesita especificar una unidad como líder y así atraer a las demás entidades a esta. En este ambiente cuando un líder circula el enjambre tiende a organizarse pareciendo manadas.
2.5 Sugerencia de optimización para la función potencial
Los algoritmos a seguir para la evasión de obstáculos y la simulación del comportamiento en grupo tienen una complejidad O ( ) lo cual se haría casi imposible de ejecutar para un número grande de unidades en un juego, por consiguiente la optimización es de suma importancia en algoritmos para juegos reales. [4]
Una de las optimizaciones para el algoritmo de evitación de obstáculos, consiste en no realizar el cálculo de fuerzas para los objetos que están demasiado lejos de la unidad que no tengan ninguna influencia sobre esta. Se podría poner un chequeo rápido en la distancia de separación entre el obstáculo dado y la unidad, y si esa distancia es mayor que una cierta cantidad predeterminada, obviar el cálculo de fuerza. Esto potencialmente podría ahorrar muchas divisiones y operaciones del exponente.
Otro acercamiento podría ser dividir el dominio de un juego en una cuadrícula conteniendo celdas de algún tamaño prescripto. Se podría asignar a cada celda un arreglo para almacenar índices para cada obstáculo que cae dentro de esa celda. Luego, mientras la unidad se mueve, fácilmente se podría determinar en cuál celda está, lo que permitiría realizar cálculos
Liset Ramirez Serpa 34 entre la unidad y los obstáculos contenidos dentro de la celda y las inmediatamente adyacentes a esta. El trazado y tamaño real de las celdas dependerían del juego específico, pero generalmente tal acercamiento podría producir ahorros significativos si el dominio del juego es grande y contiene un número amplio de obstáculos. Siguiendo esta idea se reduce la complejidad temporal, pero aumenta la complejidad espacial, al tener mas listas de almacenamiento.
Se puede usar el mismo acercamiento cuadriculado y de celdas al optimizar el algoritmo para lograr el comportamiento en grupos. Una vez que se ha establecido una cuadrícula, cada celda sería asociada con una lista encadenada. Luego, en cada momento del juego, se recorre el arreglo de unidades y se determina dentro de cuál celda está cada unidad, se añade una referencia de cada unidad en una celda para la lista encadenada de esa celda en particular. En lugar de ir por cada uno de los bucles anidados, comparando cada unidad con otra, es necesario recorrer las unidades en la lista de cada celda, y las listas para las celdas inmediatamente adyacentes. Aquí, otra vez, la contabilidad se pone más complicada, pero los ahorros en el uso de la CPU podrían ser grandes. Esta técnica de optimización es comúnmente aplicada en algoritmos computacionalmente dinámicos y eficazmente reducidos de algoritmos de orden a orden N. [4]
Una sugerencia final que ofrecemos se basa en la observación de la fuerza entre cada par de unidades es igual en la magnitud pero opuestas en dirección. Por consiguiente, una vez que se ha calculado la fuerza entre el par de unidades i y j, no necesite calcularla de nuevo para el par j y i. En lugar de eso, se aplica la fuerza para i y la negativa de la fuerza para j. Tendría que hacer alguna operaciones para rastrear que parejas de unidades ya se han direccionado a fin de no doblar las fuerzas.
2.6 Otras utilidades de la función potencial de Lennard – Jones
En el mundo de la física y la química aunque no existe un potencial de interacción universal entre partículas, una expresión muy adecuada a la hora de reproducir potenciales de interacción entre átomos obtenidos experimentalmente es el denominado potencial de
Liset Ramirez Serpa 35 Lennard-Jones. Este es un potencial de interacción binario, lo que significa que únicamente considera interacciones entre pares de moléculas. Las fuerzas modeladas de esta forma disminuyen con gran rapidez respecto a la distancia. [6]
Este potencial describe, de muy buena manera, las interacciones en gases nobles de una componente y además, existen otras sustancias cuyas interacciones pueden aproximarse de manera satisfactoria mediante el mismo. Sus propiedades para la simulación del movimiento de partículas en la dinámica molecular 2 son muy útiles para las investigaciones relacionadas con las sustancias. [10]
En la última década se han desarrollado diferentes modelos de potenciales para una gran variedad de compuestos. Uno de los más comúnmente utilizados para representar hidrocarburos y otras moléculas flexibles es el de átomos unidos, donde cada grupo químico es representado por un potencial del tipo de Lennard - Jones. El uso de este tipo de potencial resulta una significativa disminución del tiempo de cálculo cuando se compara con modelos que consideran la presencia explícita de la totalidad de los átomos. Previamente a su aplicación a dichas mezclas reales, el fluido de Lennard - Jones, es capaz de reproducir el comportamiento de fluidos sencillos como es el caso de argón o el metano [7]
Se ha empleado el potencial de Lennard - Jones para algunas situaciones numéricas de la dispersión de una partícula en un campo de fuerzas producido por muchas partículas fijas en el interior de una esfera. Estudiándose los casos en que las partículas dispersoras se disponen de forma ordenadas (una red cúbica) y el caso en que los dispersores se distribuyen al azar. Logrando demostrar a través de la dinámica molecular que si las interacciones de dos cuerpos entre el proyectil y las partículas dispersoras son funciones homogéneas la dinámica no es caótica. Al contrario, si la interacción muestra una escala característica la dinámica de la dispersión es caótica si la distancia característica de la interacción es del orden de la separación mínima promedio entre los dispersores. [8]
Se empleó el potencial en un estudio de simulaciones en condiciones constantes con el fin de establecer posibles localizaciones óptimas de centros activos para procesos catalíticos,
Liset Ramirez Serpa 36 orientado al proceso de difusión de hidrocarburos: metano, etano, propano y butano, en el interior de una estructura silicalita. Los hidrocarburos fueron simulados a través del uso de potenciales intermoleculares enlazantes de 2, 3 y 4 cuerpos y anti-enlazantes tipo Lennard- Jones. [9]
Se utilizó las propiedades del potencial en una serie de experimentos de dinámica molecular en los que se reproducen los tres estados de agregación de la materia en partículas interactuando entre ellas. Donde se simulan condiciones especiales como el caso del movimiento browniano 3 o partículas encerradas en un contenedor hermético. Se realizaron las simulaciones en dos dimensiones para ahorrar tiempo de cómputo [10]
Liset Ramirez Serpa 37
Capítulo 3 Propuesta de solución
En este capítulo se expondrá la propuesta de solución del problema científico que consta de un algoritmo para mostrar como se puede aplicar la función de Lennard – Jones en los entornos virtuales en situaciones como acercarse y alejarse entre unidades, así como evadir obstáculos.
En la Facultad 5 hoy día se utilizan herramientas como la STK para trabajar muchas problemáticas dentro de los simuladores y los juegos creados. Sin embargo, en software pequeños, donde se necesiten darle vida a los entornos proporcionándoles personajes o objetos de cualquier índole (aviones, animales, personajes), la función potencial resulta una técnica que se puede incorporar a disímiles escenarios pues resulta fácil de implementar, le aporta realidad a los elementos y consume poca memoria del CPU cuando se trata de pocas unidades.
3.1 Propuesta de la aplicación de la función potencial en los proyectos de la Facultad 5.
Actualmente en la facultad se desarrollan varios productos en los cuales podría considerarse la utilización de la función de Lennard-Jones para lograr comportamiento inteligente.
3.1.1 Proyecto Juegos de Consola
En el proyecto Juegos de Consola se está desarrollando una aplicación de realidad virtual que consiste en un juego de carreras de autos para varios jugadores donde uno de sus requerimientos es que permita al usuario realizar carreras contra varios autos controlados por la PC, estos tendrían que tener un cierto nivel de inteligencia para poder darle al jugador la mayor sensación de realismo posible.
La función potencial en este caso, podría utilizarse para controlar que los autos controlados por la computadora no se salgan del carril correspondiente, esto se lograría al considerar los extremos del carril como obstáculos y en este caso, los autos controlarían su movimiento siguiendo el método explicado para la evasión de obstáculos.
También se podría considerar la persecución por parte de los autos controlados por la PC, para lograr alcanzar al auto controlado por el jugador, en caso de que este le haya dado ventaja.
Liset Ramirez Serpa 38 Así se podrían ir codificando las respuestas a los distintos escenarios que pueda tener desarrollado este juego permitiendo que los automóviles se comporten siempre de una manera lógica y sencilla.
3.1.2 Proyecto Desarrollo de Elementos Virtuales Inteligentes.
Este proyecto se dedica a incorporar elementos inteligentes y otras estrategias de la IA en todos los proyectos de Realidad Virtual de la Facultad 5, respondiendo a las necesidades de los mismos.
Se trabaja en la realización de una biblioteca de inteligencia artificial la cual incluirá técnicas básicas de IA como las que están reflejadas en este trabajo de manera genérica. El proyecto para poder cumplir con las demandas necesita realizar estudios de las mismas para poder seleccionar la forma óptima y genérica de implementarlas en dicha biblioteca.
Es por eso que en este proyecto las técnicas básicas tratadas en este trabajo son aplicables y su utilización estará dada en dependencia de los problemas concretos a resolver por el proyecto.
3.1.3 Proyecto Herramienta de Desarrollo para Sistemas de Realidad Virtual
El proyecto HDSRV se dedica a la elaboración de una herramienta base para todos los proyectos de Realidad Virtual de la facultad 5, la cual permita generar sistemas de Realidad Virtual. Un tipo de productos que genera dicho proyecto es la realización de demos para probar las potencialidades de la herramienta, entre los cuales están los demos con inteligencia artificial que incluyen la aplicación de técnicas básicas.
Uno de los demos desarrollados por este proyecto es para un futuro simulador de tiro, uno de sus requerimientos consiste en crearle a un jugador un escenario donde varios soldados controlados por la PC traten de llegar a él para eliminarlo o varios soldados controlados por la PC eviten ser atrapados por el enemigo, o que persigan un objetivo comportándose de manera especifica moviéndose entre obstáculos que habrían entre ellos.
Liset Ramirez Serpa 39 3.2 Descripción del caso de Estudio
Para demostrar la aplicabilidad de la función potencial de Lennard – Jones en el desarrollo de algoritmos para lograr comportamiento inteligente, se puso a punto una aplicación en dos dimensiones, la cual permitirá comprobar la funcionalidad del acercamiento, eliminación de obstáculos y movimiento de un grupo de elementos.
En el ejemplo los elementos son figuras geométricas donde la unidad controlada por la computadora es de color azul, y el jugador es de color verde. Inicialmente a los cuerpos se les pasa como parámetros una masa constante. Y se creó una función para que aparezcan en la pantalla en posiciones aleatorias. La aplicación utilizada cuenta con opciones que permiten acercar un objeto a otro, el cual puede estar manipulado por un jugador o por la PC, permite además evadir obstáculos que se coloquen en la escena y comprobar el comportamiento de un enjambre.
Para esto se hizo uso de una clase RigidBody que encapsula las características físicas que se tendrán en cuenta para los objetos, así como algunas funcionalidades tales como: la actualización de sus valores característicos en un espacio de tiempo y el direccionamiento (Figura 3.1)
La función potencial como se había comentado anteriormente, calcula la fuerza que se aplicará a un cuerpo en función de lograr algún objetivo (acercarse, evadir), esta fuerza calculada es asignada al atributo correspondiente en la clase RigidBody (Anexo1).
El acercamiento o alejamiento entre dos objetivos, tiene complejidad O (1), pues consiste en operaciones simples que involucran vectores y valores numéricos. El comportamiento en grupo y la evasión de obstáculos depende de la cantidad de obstáculos y elementos con que se cuenta, que como se comentaba en el capitulo 2, la complejidad de estos puede disminuir si se controla de alguna manera que objetos y/o obstáculos se encuentran en el radio de acción de interés, evitando así tener que calcular, la fuerza que ejercen todos, incluyendo los que están bastante distantes, los cuales no aportan valores significativos a la fuerza resultante.
Liset Ramirez Serpa 40 Para llegar a conclusiones acerca del comportamiento de la función potencial se realizó un traceo del algoritmo dándole valores a los parámetros A, B, n, m como se muestran en las Tablas 1, 2 y 3. Este estudio para varios casos se hizo para el comportamiento de acercamiento, que consideramos más ilustrativo.
Caso 1
Se consideran dos elementos y se desea lograr un acercamiento, para esto se incrementa el valor de atenuación de la fuerza repulsiva, para que el término de atracción se haga mayor.
Los valores tomados para este primer caso fueron A = 10000, B = 10000, n =1 y m =8.
La tabla 1 muestra cuantas iteraciones son necesarias para lograr el acercamiento, teniendo en cuenta varios valores de distancia inicial entre los elementos.
Tabla 1. Comportamiento de la función potencial, para lograr acercamiento para los valores A =10000, B = 10000, n =1 y m =8.
Caso 2:
Similar al caso anterior, pero esta vez se aumenta el valor de m, para hacer un poco más pequeño el valor del término de repulsión. Los valores tomados para este caso fueron A=10000, B = 10000, n =1 y m =20 y la tabla 2 de manera similar muestra la cantidad de iteraciones que se necesitaron para lograr el acercamiento para varios valores de distancia de separación inicial.
Iteración Distancia inicial entre objetos
Tiempo que demora un objetivo en alcanzar al otro
Iteración 1 22 37
Iteración 2 170 99
Iteración 3 139 44
Iteración 4 51 91
Liset Ramirez Serpa 41 Iteraciones Distancia inicial entre
objetos
Tiempo que demora un objetivo en alcanzar al otro
Iteración 1 52 68
Iteración 2 185 73
Iteración 3 145 63
Iteración 4 70 84
Tabla 2. Comportamiento de la función potencial, para lograr acercamiento para los valores A =10000, B = 10000, n =1 y m =20.
Caso 3:
En este caso el valor de A se incrementa haciendo aun mayor el término de atracción. Los valores tomados para este caso fueron A=100000, B = 10000, n =1 y m =20 y la tabla 3 de manera similar muestra la cantidad de iteraciones que se necesitaron para lograr el acercamiento para varios valores de distancia de separación inicial.
Tabla 3. Comportamiento de la función potencial, para lograr acercamiento para los valores A =100000, B = 10000, n =1 y m =20.
Iteraciones Distancia inicial entre objetos
Tiempo que demora un objetivo en alcanzar al otro
Iteración 1 145 27
Iteración 2 127 77
Iteración 3 167 38
Iteración 4 30 ---
Liset Ramirez Serpa 42 De los casos analizados, podemos corroborar que la función potencial de Lennard – Jones es estable para grandes distancias alcanzando la unidad controlada por la computadora al objeto en poco tiempo. Sin embargo en distancias cortas la unidad se demora mucho tiempo y en algunos casos no funciona, como en el caso 3 para una pequeña distancia de separación y un mayor valor para el término de atracción.
Las Figuras 3.1 y 3.2 muestran como se comportó el acercamiento para 2 casos, el primero de estos solo involucra a 2 objetos, uno acechado al otro y en el segundo caso, varios elementos acechando a uno. En los 2 ejemplos el objeto que se quiere alcanzar es el circulado.
Figura 3.1 a: Posición inicial de los elementos Figura 3.1 b: Momento de acercamiento entre los objetos
Figura 3.2 a: Posición inicial de los elementos Figura 3.2 b: Momento de acercamiento entre los objetos
Liset Ramirez Serpa 43
Conclusiones
Al concluir la investigación se le dio cumplimiento al objetivo propuesto. Se estudió con profundidad la función potencial de Lennard - Jones, logrando claridad en cada unos de sus términos, obteniendo como resultado una abundante bibliografía sobre la misma y proponiendo su uso para lograr comportamientos inteligentes en los entornos virtuales.
La propuesta de aplicación queda fundamentada a partir del uso de la función sobre una aplicación para dos dimensiones, que permite comprobar el funcionamiento de la misma, así como experimentar con varios valores de los términos involucrados, logrando corroborar en que circunstancias es más factible utilizarla.
Liset Ramirez Serpa 44
Recomendaciones
Se recomiendan las siguientes acciones para investigaciones futuras de este tema:
¾ Probar el uso de la función potencial en un entorno virtual.
¾ Incluir las optimaciones propuestas para los casos de evasión de obstáculos y movimiento de grupos, en futuros trabajos.
Liset Ramirez Serpa 45
Bibliografía referenciada
1. Wikipedia. [En línea] Obtenido de http://es.wikipedia.org/wiki/Mundos_virtuales
2. García, Oscar. MACEDONIA Magazine . [En línea] abril de 2002. Obtenido de http://macedoniamagazine.frodrig.com/etapa_2001_2002/aula/Flocking/flocking.htm
3. Delgado, Carlos. SG. Software Guru. [En línea] Enero - Febrero de 2007. Obtenido de http://www.sg.com.mx/content/view/275/.
4. Bourg, David M. AI for Game Developers. s.l. : O'Reilly, 2004.
5. Reynolds, Craig. Fuzzy GameDev. [En línea] Mayo de 2007. Obtenido de http://www.fuzzygamedev.com/2007/05/01/flocking/.
6. Güémez, J. Aplicaciones de termodinámicas. Gases reales. (2003)
7. Pellitero, J. P. Improvement of monte carlo algorithms and intermolecular potencials for the modelling of alkanois, ether thiophenes and aromatics. (2007). Obtenido de http://www.tdx.cat/TDX-1207107-141243
8. Troconis, J. Simulación de la Dispersión de Partículas en Campos de Fuerzas Gravitacionales y de Lennard-Jones. Caracas : s.n., 2003.
9. Rafael Pérez. Estudio de la difusón de alcanos simples en una zeolita silicalita mediante la técnica Dinámica. Venezuela : s.n., 2003.
10. Portas, Jerónimo Terrones. Dinámica Molecular 2D con un Potencial de Interacción tipo Lennard-Jones. 2007.
11. Dedu, Eugen. LIFC. [En línea] Junio de 2001. http://lifc.univ- fcomte.fr/~dedu/projects/bresenham/.