Soy nuevo en el desarrollo de juegos / gráficos y estoy jugando con partículas (en 2D). Quiero acercar partículas entre sí como una gota, como líquido / agua. No quiero dibujar grandes círculos superpuestos ya que la burbuja no será suave (y demasiado grande). Realmente no sé física, pero supongo que lo que quiero es algo similar a la tensión superficial.
No he podido encontrar nada en stackexchange o en Google (¿tal vez no conozco las palabras clave correctas?). Hasta ahora he encontrado dos posibles soluciones, pero no puedo encontrar ninguna información concreta sobre algoritmos.
Una de ellas es calcular el casco cóncavo de partículas que considero una gota. Puedo calcular el blob creando una clase de equivalencia (en la relación "cerca uno del otro"). Por extraño que parezca, no he podido encontrar ningún algoritmo que explique cómo calcular el casco cóncavo. Muchas publicaciones (y entre stackexchange) enlazan a bibliotecas o productos comerciales que hacen esto (necesito bibliotecas para trabajar en C #), pero nunca ningún algoritmo. Además, esta solución podría tener un problema con un círculo de partículas, que no detectaría el espacio vacío en el medio.
Mientras investigaba el casco cóncavo me topé con algo llamado formas alfa. Lo que parece ser exactamente lo que quiero hacer, sin embargo, al igual que con el casco cóncavo, no he encontrado ninguna fuente que explique cómo funcionan realmente. He encontrado algunos materiales de presentación, pero no lo suficiente como para continuar. Es como un gran secreto que todos conocen excepto yo: - /
Después de calcular el casco cóncavo o la forma alfa, quiero que sea una curva Bézier para que sea suave y agradable.
Aunque considero que mi enfoque es demasiado complejo, ¿tal vez estoy tratando de resolverlo de la manera incorrecta? Si puede sugerir alguna otra solución a mi problema o explicar las piezas que me faltan, estaría muy feliz y agradecido :-)
Gracias.
Respuestas:
La palabra clave que puede necesitar es "Metaballs", y abarca desde la compleja muestra de gemas de GPU nVidia hasta las versiones basadas en escenas de demostración diseñadas solo para verse bien y funcionar rápidamente.
fuente
Para convertir un grupo de partículas en una malla para poder renderizar, estilo metaballs, puede echar un vistazo al algoritmo Marching Cubes , que genera una malla poligonal a partir de datos de vóxel. Hay una demostración de demoscene que tiene un gran ejemplo de esto, con todo lo generado en la GPU: numb res .
fuente
Como se mencionó anteriormente, estás pensando en Metaballs.
Este es un gran artículo sobre el tema con algunos debates teóricos básicos y ejemplos.
Explorando Metabolas e Isosuperficies en 2D
fuente