Unidad 6
Introducción 📜
Sección titulada «Introducción 📜»Set: ¿Qué aprenderás en esta unidad? 💡
Sección titulada «Set: ¿Qué aprenderás en esta unidad? 💡»Actividad 01
Sección titulada «Actividad 01»En esta actividad propondré que te encuentres de nuevo el trabajo de Tyler Hobbs y específicamente que mires su artículo sobre campos de flujo.
Seek: Investigación 🔎
Sección titulada «Seek: Investigación 🔎»Actividad 02
Sección titulada «Actividad 02»En esta actividad quiero que investigues alrededor de estas dos preguntas:
- ¿Qué es una fuerza de dirección (steering force)?
- ¿Qué diferencia tiene este tipo de fuerza con las que ya hemos estudiado en el contexto de la simulación de agentes?
- ¿Qué relación tiene la steering force con Craig Reynolds y su trabajo en simulación de comportamiento animal?
Actividad 03
Sección titulada «Actividad 03»Pasos:
- Ejecuta el ejemplo: ejecuta el código del ejemplo principal de Flow Fields de TNoC en p5.js. Observa el comportamiento de los vehículos/agentes.
- Identifica la estructura del campo: en el código (usualmente en una clase
FlowField
), localiza cómo se almacena el campo de flujo. ¿Qué estructura de datos se usa (ej: un array 2D)? ¿Qué representa cada elemento de esa estructura? ¿Cómo se calcula inicialmente el vector en cada punto? - Analiza el comportamiento del agente: en el código de la clase del vehículo/agente (
Vehicle
), encuentra la funciónfollow()
. Explica con tus palabras:- ¿Cómo determina el agente qué vector del campo de flujo debe seguir basándose en su posición actual? (pista: implica mapear la posición a índices de la cuadrícula).
- Una vez que tiene el vector deseado del campo, ¿Cómo lo utiliza para calcular la fuerza de dirección (
steering force
)? (pista: implica calcular la diferencia con la velocidad actual y limitar la fuerza).
- Identifica parámetros clave: localiza en el código las variables que controlan aspectos importantes como:
- La resolución del campo de flujo (el tamaño de las celdas de la cuadrícula).
- La velocidad máxima (
maxspeed
) y la fuerza máxima (maxforce
) de los agentes.
- Experimenta con modificaciones: realiza al menos una de las siguientes modificaciones en el código, ejecuta y describe el efecto observado en el comportamiento de los agentes:
- Cambia significativamente la forma en que se generan los vectores del campo (ej: usa una fórmula matemática diferente en lugar de
noise()
, o cambia drásticamente los parámetros denoise()
). - Modifica sustancialmente la resolución del campo de flujo (hazla mucho más fina o mucho más gruesa).
- Altera considerablemente
maxspeed
omaxforce
de los agentes.
- Cambia significativamente la forma en que se generan los vectores del campo (ej: usa una fórmula matemática diferente en lugar de
Actividad 04
Sección titulada «Actividad 04»Pasos:
- Ejecuta el ejemplo: ejecuta el código del ejemplo principal de Flocking de TNoC en p5.js. Observa el movimiento colectivo de los “boids” (agentes).
- Identifica las tres reglas: en el código de la clase del agente (ej:
Boid
), localiza las funciones que implementan las tres reglas fundamentales del Flocking:- Separación (Separation): evitar el hacinamiento con vecinos cercanos.
- Alineación (Alignment): dirigirse en la misma dirección promedio que los vecinos cercanos.
- Cohesión (Cohesion): moverse hacia la posición promedio de los vecinos cercanos.
- Explica las reglas: para cada una de las tres reglas, explica con tus propias palabras:
- ¿Cuál es el objetivo de la regla?
- ¿Cómo calcula el agente la fuerza de dirección correspondiente? (describe la lógica general, ej: “Calcula un vector apuntando lejos de los vecinos demasiado cercanos”).
- Identifica parámetros clave: localiza en el código las variables que controlan:
- El radio (o distancia) de percepción (
perceptionRadius
o similar) que define quiénes son los “vecinos”. A veces también hay un ángulo de percepción. - Los pesos o multiplicadores que determinan la influencia relativa de cada una de las tres reglas al combinarlas.
- La velocidad máxima (
maxspeed
) y la fuerza máxima (maxforce
) de los agentes (similar a Flow Fields).
- El radio (o distancia) de percepción (
- Experimenta con modificaciones: realiza al menos una de las siguientes modificaciones en el código, ejecuta y describe el efecto observado en el comportamiento colectivo del enjambre:
- Cambia drásticamente el peso de una de las reglas (ej: pon la cohesión a cero, o la separación muy alta).
- Modifica significativamente el radio de percepción (hazlo muy pequeño o muy grande).
- Introduce un objetivo (
target
) que todos los boids intenten seguir (usando una fuerza deseek
) además de las reglas de flocking, y ajusta su influencia.
Apply: Aplicación 🛠
Sección titulada «Apply: Aplicación 🛠»Actividad 05
Sección titulada «Actividad 05»- Elige un tema musical que te inspire.
- Diseña una pieza de arte generativo que utilice el algoritmo de flow fields y/o flocking.
- Vas a visualizar el tema musical y además vas a “tocar” las visuales, es decir, tu pieza de arte debe ser interactiva y debe permitir la interpretación en tiempo real de las visuales como si fuera un instrumento más que acompaña de manera coherente el tema musical.
Evidencias 🗂️
Sección titulada «Evidencias 🗂️»Reflect: Consolidación y metacognición 🤔
Sección titulada «Reflect: Consolidación y metacognición 🤔»- Explica en tus propias propias palabras qué es un agente autónomo y cómo puede contribuir al arte generativo.
- ¿Qué es el comportamiento emergente y cómo se manifiesta en los algoritmos de flow fields y flocking?
- Para los más curisos. ¿Puedo aplicar lo que aprendí en esta unidad en Blender? Te dejo un video para que te antojes y si creas algo en Blender ¿Me muestras?