Cargando aplicación...
Preparando tu experiencia meskeIA
Comportamiento de bandada en tiempo real: tres reglas locales —separación, alineación y cohesión— de las que emerge un movimiento colectivo, sin ningún líder
Separación, alineación y cohesión: las tres reglas de Craig Reynolds (1986)
| Regla | Qué hace cada boid | Qué pasa si la quitas |
|---|---|---|
| Separación | Se aleja de los vecinos que tiene demasiado cerca para no chocar. | Los boids se amontonan y se solapan en un mismo punto. |
| Alineación | Ajusta su velocidad hacia la media de la de sus vecinos. | Cada uno va por su lado: no se forma una dirección común. |
| Cohesión | Se dirige hacia el centro de masa (la posición media) de sus vecinos. | El grupo se disgrega y nunca llega a formar bandada. |
Aves de fondo, bancos de peces o grupos de criaturas que dan vida al escenario se animan con boids en lugar de mover a cada agente a mano. Es la base de la «IA de movimiento» o steering behaviors.
💡 Suelen añadirse reglas extra: huir del jugador, evitar obstáculos o buscar comida.
Los boids se usaron de forma pionera en los murciélagos y los pingüinos de Batman Returns (1992). Desde entonces, escenas con enjambres, manadas o multitudes apoyan su animación en variantes del mismo modelo.
💡 Para multitudes humanas se combinan con pathfinding y evitación de colisiones.
Los enjambres de drones coordinan su vuelo con reglas locales parecidas: mantener distancia, ir en la misma dirección y no separarse del grupo. No hay un dron «jefe»: cada uno decide mirando a sus vecinos.
💡 Trabajar con reglas locales hace al enjambre robusto: si falla un agente, el resto sigue.
Modelos de simulación de tráfico y de flujo de peatones se inspiran en ideas similares para estudiar atascos, evacuaciones o el diseño de espacios públicos sin programar el recorrido exacto de cada persona.
💡 Aquí las reglas se afinan con datos reales de cómo se mueve la gente.
No. Ninguno manda ni conoce la forma del grupo. Cada boid solo reacciona a los vecinos que tiene dentro de su radio de percepción. El movimiento coordinado que ves es un ejemplo de comportamiento emergente: surge del conjunto de decisiones locales, no de un plan central.
💡 Es lo mismo que pasa con los estorninos reales: no siguen a un líder, reaccionan a sus vecinos próximos.
Es la distancia hasta la que un boid «ve» a sus compañeros. Solo tiene en cuenta a los vecinos dentro de ese radio para calcular las tres reglas. Con un radio pequeño se forman muchos grupitos independientes; con un radio grande tiende a salir una única bandada grande.
💡 Aumentar el radio también encarece el cálculo: hay más vecinos que considerar.
En la versión sencilla, cada boid comprueba la distancia a todos los demás para saber quiénes son sus vecinos. Eso es un coste O(n²): al doblar el número de agentes, el trabajo se cuadruplica. Por eso una bandada moderada va fluida y una enorme puede ir a tirones.
💡 Para escalar se divide el espacio en una rejilla (spatial hashing) y solo se miran las celdas cercanas.
Las tres reglas suman pequeños empujes a la velocidad fotograma tras fotograma. Sin un tope, esos empujes se acumulan y los boids se acelerarían sin parar hasta volverse incontrolables. Por eso se recorta la velocidad a un máximo (y a veces se fija también un mínimo, para que no se queden quietos).
💡 Es uno de los detalles que más se olvidan al programar boids por primera vez.
No hay valores «correctos» universales: se ajustan a ojo según el resultado que buscas. En general, la separación suele pesar algo más que la cohesión para evitar amontonamientos, y la alineación define cuán coordinada se mueve la bandada. Cambia los sliders y observa: es la mejor forma de entenderlo.
💡 Si todo se apelotona, sube la separación; si se dispersa, sube la cohesión.
No. La idea de coordinar muchos agentes con reglas locales se aplica a bancos de peces, enjambres de insectos, multitudes, robótica de enjambre y simulaciones de tráfico. Los boids fueron el punto de partida de toda una familia de técnicas de comportamiento colectivo.
💡 Reynolds amplió el modelo con más «steering behaviors»: perseguir, huir, evitar obstáculos, deambular…
Para cada boid, se identifican los demás que están dentro de su radio de percepción. Solo esos influyen en su próximo movimiento.
Con esos vecinos se obtienen tres direcciones: separación (alejarse de los muy cercanos), alineación (igualar su velocidad media) y cohesión (ir hacia su centro de masa).
Cada dirección se multiplica por su peso y se suman. El resultado es la aceleración que se añade a la velocidad actual del boid.
Se recorta la velocidad a un máximo para que ningún boid se descontrole, manteniendo el movimiento estable.
Se actualiza la posición sumando la velocidad. Si un boid sale por un borde, reaparece por el lado opuesto (envoltura). Al fotograma siguiente, vuelta a empezar.
Halla las tres reglas de todos los boids antes de mover ninguno. Si actualizas a la vez que calculas, unos influyen sobre otros dentro del mismo fotograma y el resultado se distorsiona.
Pon un tope (y opcionalmente un mínimo) a la magnitud de la velocidad. Es lo que evita que la bandada se acelere sin control con el paso de los fotogramas.
Convierte cada regla en una dirección de magnitud uno antes de multiplicarla por su peso. Así los pesos son comparables y fáciles de afinar.
Para muchos agentes, divide el espacio en celdas y busca vecinos solo en las cercanas. Pasas de O(n²) a algo mucho más manejable.
Envolver (salir por un lado y entrar por el otro), rebotar o empujar hacia el centro. Cada opción da una sensación distinta; elige según lo que quieras transmitir.
No busques valores «perfectos»: cambia un peso, observa y corrige. Un radio de separación menor que el de percepción suele dar bandadas más naturales.