Dibujando partículas como una gota suave


12

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.



@BlueRaja Gracias por tu comentario. Aunque ya había encontrado esa publicación, pero la descarté porque las respuestas se vinculan a documentos que no resuelven directamente mi problema, pero sus referencias podrían o una patente que no puedo usar abiertamente (creo que no soy bueno con la burocracia) (Ni siquiera encontré el enlace de descarga de todos modos).
Nömmik

1
La patente de "cubos de marcha" expiró en 2005, la mayoría de los ejemplos 2D son mucho más antiguos y es por eso que puede haberlos advertido sobre su uso en páginas web antiguas.
Patrick Hughes

1
Aquí hay un artículo de gamedev que aborda tanto las metabolas como las isosuperficies, con algunas muestras para aclarar las ideas: enlace
Patrick Hughes

Gracias por aclararme sobre metaballs, parecen hacer lo que quiero :-)
Nömmik

Respuestas:


8

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.


De hecho, no conocía la palabra clave :-) La examinaré más de cerca y, si parece ser lo que necesito, aceptaré su respuesta. ¡Gracias!
Nömmik

1
+1 para mí pensando que eran "albóndigas" antes de leerlo por segunda vez.
James

2
¿Podría agregar un poco más de detalle a esta respuesta? +1 si lo haces.
AttackingHobo

@ James ¡Creo que todos cometen ese error la primera vez que ven la palabra!
Jeff

1

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 .


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.