Simulador de cuerpos blandos y telas 3D

Física de mallas deformables y corte en tiempo real • Ciencia

Sandbox de cuerpos blandos, gelatina y corte de telas

Experimenta con la física de mallas deformables mediante integración de Verlet y redes masa-muelle. Corta una cortina de seda pasando el bisturí en tiempo real, lanza cubos de gelatina elástica con volumen hidrostático o salta sobre un trampolín a 60 fotogramas por segundo.

60 FPS fijos Integración de Verlet Redes Hooke masa-muelle Presión de volumen Audio procedural
Rendimiento 60 FPS
Partículas 0
Muelles activos 0
Tensión pico 0%
Energía cinética 0 J

Gravedad ambiental

Aceleración vertical -9.8 m/s²
Intensidad del viento 22 km/h

Rigidez y elasticidad

Rigidez de muelles 90%
Amortiguamiento viscoso 0.018

Color y efectos

Paleta de gelatina / seda

Física de cuerpos blandos y simulación de telas en tiempo real

En los videojuegos y motores gráficos modernos, la física de cuerpos rígidos (como cajas, ruedas o muñecos ragdoll articulados) resulta insuficiente para representar materiales orgánicos como tejidos textiles, músculos, masa elástica o gelatinas. Para reproducir estos comportamientos de forma visualmente convincente a 60 FPS sin saturar la tarjeta gráfica, se recurre a la **integración de Verlet** combinada con **redes de partículas y muelles**.

1. Integración de Verlet libre de velocidades

Los métodos de integración tradicionales basados en velocidad (como Euler explícito) sufren una grave inestabilidad numérica: si un muelle rígido se estira ligeramente más de la cuenta, la fuerza de restitución dispara una aceleración excesiva que en el siguiente fotograma hace que los vértices salgan disparados al infinito ("efecto explosión").

La integración de Verlet resuelve este problema almacenando la posición actual y la posición del fotograma anterior, eliminando la variable explícita de velocidad:

x(t + Δt) = x(t) + (1 - c) · (x(t) - x(t - Δt)) + a(t) · Δt²

Donde c es el factor de amortiguamiento viscoso ambiental y a(t) es la suma de aceleraciones externas (gravedad, viento y presión). Si forzamos un vértice a colisionar con el suelo plano o lo arrastramos con el ratón, su posición se corrige de inmediato y su velocidad implícita se adapta de manera orgánica y perfectamente estable.

2. Redes masa-muelle: estructurales, cizalla y flexión

Para que una superficie de tela no se deforme como un chicle sin control, cada partícula se conecta con sus vecinas mediante tres capas de muelles con diferentes funciones mecánicas:

  • Muelles estructurales: Enlazan cada partícula con sus vecinas inmediatas a derecha, izquierda, arriba y abajo, soportando la tracción principal y manteniendo las dimensiones de la tela.
  • Muelles de cizalla: Cruzan en diagonal cada cuadrante para evitar que la tela colapse en forma de rombo ante esfuerzos angulares.
  • Muelles de flexión: Conectan partículas saltando un nodo intermedio (distancia 2), aportando resistencia al plegado para que la tela no genere arrugas microscópicas irreales.

3. Conservación de volumen y gelatinas 3D

Una malla tridimensional cerrada que solo tenga muelles superficiales colapsaría como un globo desinflado al caer al suelo. Para dotarla de elasticidad volumétrica, el simulador calcula en cada fotograma el volumen total instantáneo V mediante el producto mixto de cada triángulo exterior respecto al centro:

V = (1/6) · Σ ( (p1 × p2) · p3 )

Al comprimirse el cuerpo durante un impacto, la diferencia frente al volumen de reposo genera una presión hidrostática perpendicular hacia afuera que hace que la gelatina tiemble y recupere su forma original en una oscilación extremadamente satisfactoria.

Preguntas frecuentes

Al arrastrar el cursor con la herramienta bisturí, el sistema proyecta un rayo tridimensional entre la posición anterior y actual del ratón. Cualquier muelle que cruce este trazo se desactiva instantáneamente, haciendo que la tensión acumulada separe los vértices y la geometría gráfica retire los triángulos correspondientes, permitiendo ver la tela rasgarse y caer en retales independientes.
El motor físico está optimizado en JavaScript puro sin dependencias pesadas, utilizando arrays tipados en memoria continua (Float32Array) y de 4 a 6 iteraciones de relajación de Gauss-Seidel por fotograma. Esto permite mantener 60 fotogramas por segundo estables tanto en ordenadores de sobremesa como en smartphones de gama media.
Todos los efectos de audio se sintetizan en tiempo real mediante la Web Audio API nativa del navegador. El sonido de corte se genera mediante ráfagas de ruido blanco con filtros pasa-banda resonantes, mientras que el rebote de gelatina combina osciladores senoidales con modulación FM y LFO para producir el característico sonido de temblor gomoso sin descargar ficheros MP3 externos.