stringtranslate.com

Dinámica del cuerpo blando

La dinámica de cuerpos blandos es un campo de los gráficos por computadora que se centra en simulaciones físicas visualmente realistas del movimiento y las propiedades de objetos deformables (o cuerpos blandos ). [1] Las aplicaciones se encuentran principalmente en videojuegos y películas. A diferencia de la simulación de cuerpos rígidos , la forma de los cuerpos blandos puede cambiar, lo que significa que la distancia relativa de dos puntos del objeto no es fija. Si bien las distancias relativas de los puntos no son fijas, se espera que el cuerpo conserve su forma hasta cierto punto (a diferencia de un fluido ). El alcance de la dinámica del cuerpo blando es bastante amplio e incluye la simulación de materiales orgánicos blandos como músculos, grasa, cabello y vegetación, así como otros materiales deformables como ropa y tejidos. Generalmente, estos métodos sólo proporcionan emulaciones visualmente plausibles en lugar de simulaciones científicas o de ingeniería precisas, aunque existe cierto cruce con los métodos científicos, particularmente en el caso de simulaciones de elementos finitos. Actualmente, varios motores de física proporcionan software para la simulación de cuerpos blandos. [2] [3] [4] [5] [6] [7]

Los objetos de cuerpo blando reaccionan a las fuerzas y pueden chocar con otros objetos 3D. Este ejemplo ha sido creado con Blender .

Sólidos deformables

La simulación de cuerpos blandos sólidos volumétricos [8] se puede realizar utilizando una variedad de enfoques.

Modelos de resorte/masa

Dos nodos como puntos de masa conectados por un circuito paralelo de un resorte y un amortiguador.

En este enfoque, el cuerpo se modela como un conjunto de masas puntuales (nodos) conectadas por resortes elásticos ingrávidos ideales que obedecen alguna variante de la ley de Hooke . Los nodos pueden derivar de los bordes de una representación de malla poligonal bidimensional de la superficie del objeto, o de una red tridimensional de nodos y bordes que modelan la estructura interna del objeto (o incluso un sistema unidimensional de eslabones, si por ejemplo se simula una cuerda o un mechón de cabello). Se pueden agregar resortes adicionales entre nodos, o modificar la ley de fuerza de los resortes, para lograr los efectos deseados. Al aplicar la segunda ley de Newton a las masas puntuales, incluidas las fuerzas aplicadas por los resortes y cualquier fuerza externa (debida al contacto, la gravedad, la resistencia del aire, el viento, etc.), se obtiene un sistema de ecuaciones diferenciales para el movimiento de los nodos, que es Resuelto mediante esquemas numéricos estándar para resolver EDO . [9] La representación de una red tridimensional de masa y resorte a menudo se realiza mediante deformación de forma libre , [10] en la que la malla renderizada se incrusta en la red y se distorsiona para adaptarse a la forma de la red a medida que evoluciona. Suponiendo que todas las masas puntuales sean iguales a cero, se puede obtener el método de rejilla estirada destinado a la solución de varios problemas de ingeniería relacionados con el comportamiento de la rejilla elástica. A veces se les conoce como modelos de amortiguador de masa-resorte . En cuerpos blandos presurizados [11] el modelo resorte-masa se combina con una fuerza de presión basada en la ley de los gases ideales .

Simulación de elementos finitos

Este es un enfoque físicamente más preciso, que utiliza el método de elementos finitos ampliamente utilizado para resolver las ecuaciones diferenciales parciales que gobiernan la dinámica de un material elástico . El cuerpo se modela como un continuo elástico tridimensional dividiéndolo en una gran cantidad de elementos sólidos que encajan entre sí y resolviendo las tensiones y deformaciones en cada elemento utilizando un modelo del material. [12] Los elementos son típicamente tetraédricos, siendo los nodos los vértices de los tetraedros (existen métodos relativamente simples [13] [14] para tetraedralizar una región tridimensional delimitada por una malla poligonal en tetraedros , de manera similar a como un polígono bidimensional puede triangularse en triángulos). La deformación (que mide la deformación local de los puntos del material a partir de su estado de reposo) se cuantifica mediante el tensor de deformación . La tensión (que mide las fuerzas locales por unidad de área en todas las direcciones que actúan sobre el material) se cuantifica mediante el tensor de tensión de Cauchy . Dada la deformación local actual, la tensión local se puede calcular mediante la forma generalizada de la ley de Hooke : donde está el tensor de elasticidad , que codifica las propiedades del material (parametrizado en elasticidad lineal para un material isotrópico mediante la relación de Poisson y el módulo de Young ).

La ecuación de movimiento de los nodos de los elementos se obtiene integrando el campo de tensiones sobre cada elemento y relacionándolo, mediante la segunda ley de Newton , con las aceleraciones de los nodos.

Pixelux (desarrolladores del sistema Digital Molecular Matter ) utiliza un enfoque basado en elementos finitos para sus cuerpos blandos, utilizando una malla tetraédrica y convirtiendo el tensor de tensión directamente en fuerzas nodales. [15] La renderización se realiza mediante una forma de deformación de forma libre . [10]

Métodos de minimización de energía.

Este enfoque está motivado por principios variacionales y la física de las superficies, que dictan que una superficie restringida asumirá la forma que minimice la energía total de deformación (análoga a una pompa de jabón ). Al expresar la energía de una superficie en términos de su deformación local (la energía se debe a una combinación de estiramiento y flexión), la fuerza local sobre la superficie se obtiene diferenciando la energía con respecto a la posición, lo que produce una ecuación de movimiento que puede resolverse de la manera estándar. [16] [17]

Coincidencia de formas

En este esquema, se aplican fuerzas de penalización o restricciones al modelo para llevarlo hacia su forma original [18] (es decir, el material se comporta como si tuviera memoria de forma ). Para conservar el impulso, la rotación del cuerpo debe estimarse correctamente, por ejemplo mediante descomposición polar . Para aproximar la simulación de elementos finitos, se puede aplicar la coincidencia de formas a redes tridimensionales y combinar múltiples restricciones de coincidencia de formas. [19]

Deformación basada en cuerpo rígido

La deformación también se puede manejar mediante un motor de física de cuerpo rígido tradicional , modelando el movimiento del cuerpo blando usando una red de múltiples cuerpos rígidos conectados por restricciones y usando (por ejemplo) un revestimiento de paleta de matriz para generar una malla de superficie para renderizar. Este es el enfoque utilizado para los objetos deformables en Havok Destruction . [20]

simulación de tela

En el contexto de los gráficos por computadora, la simulación de tela se refiere a la simulación de cuerpos blandos en forma de membranas elásticas continuas bidimensionales, es decir, para este propósito, se puede ignorar la estructura real de la tela real en el nivel del hilo (aunque el modelado de tela en el nivel del hilo ha sido probado). [21] A través de efectos de renderizado , esto puede producir una emulación visualmente plausible de textiles y prendas de vestir , utilizados en una variedad de contextos en videojuegos, animación y películas. También se puede utilizar para simular láminas bidimensionales de materiales distintos de los textiles, como paneles metálicos deformables o vegetación. En los videojuegos se suele utilizar para realzar el realismo de personajes animados vestidos .

Los simuladores de tela se basan generalmente en modelos masa-resorte , pero se debe hacer una distinción entre solucionadores basados ​​en fuerza y ​​solucionadores basados ​​en posición.

Tela basada en la fuerza

El modelo masa-resorte (obtenido a partir de una representación de malla poligonal de la tela) determina las fuerzas internas del resorte que actúan sobre los nodos en cada paso de tiempo (en combinación con la gravedad y las fuerzas aplicadas). La segunda ley de Newton proporciona ecuaciones de movimiento que pueden resolverse mediante solucionadores de EDO estándar . Sin embargo, no es posible crear tela de alta resolución con una rigidez realista con solucionadores explícitos simples (como la integración directa de Euler ), a menos que el paso de tiempo sea demasiado pequeño para aplicaciones interactivas (ya que, como es bien sabido [ cita requerida ] , los integradores explícitos son numéricamente inestable para sistemas suficientemente rígidos ). Por lo tanto, se deben utilizar solucionadores implícitos , [22] que requieren la solución de un sistema de matriz dispersa grande (a través, por ejemplo, del método de gradiente conjugado ), que a su vez también puede ser difícil de lograr a velocidades de cuadro interactivas. Una alternativa [23] [24] es utilizar un método explícito con baja rigidez, con métodos ad hoc para evitar la inestabilidad y el estiramiento excesivo (por ejemplo, correcciones limitantes de deformación).

Dinámica basada en la posición

Para evitar la necesidad de realizar una costosa solución implícita de un sistema de EDO , muchos simuladores de tela en tiempo real (en particular PhysX , Havok Cloth y Maya nCloth ) utilizan dinámica basada en la posición (PBD), [25] un enfoque basado en la relajación de restricciones. El modelo masa-resorte se convierte en un sistema de restricciones, que exige que la distancia entre los nodos conectados sea igual a la distancia inicial. Este sistema se resuelve de forma secuencial e iterativa, moviendo directamente los nodos para satisfacer cada restricción, hasta obtener una tela suficientemente rígida. Esto es similar a una solución de Gauss-Seidel del sistema matricial implícito para el modelo masa-resorte. Sin embargo, se debe tener cuidado de resolver las restricciones en la misma secuencia en cada paso de tiempo, para evitar oscilaciones espurias y para asegurarse de que las restricciones no violen la conservación del momento lineal y angular . Se pueden aplicar restricciones de posición adicionales, por ejemplo, para mantener los nodos dentro de las regiones deseadas del espacio (lo suficientemente cerca de un modelo animado, por ejemplo), o para mantener la forma general del cuerpo mediante la coincidencia de formas.

Detección de colisiones para objetos deformables

La interacción realista de objetos blandos simulados con su entorno puede ser importante para obtener resultados visualmente realistas. La autointersección de la tela es importante en algunas aplicaciones para prendas simuladas con un realismo aceptable. Esto es un desafío de lograr a velocidades de cuadro interactivas, particularmente en el caso de detectar y resolver autocolisiones y colisiones mutuas entre dos o más objetos deformables.

La detección de colisiones puede ser discreta/a posteriori (lo que significa que los objetos avanzan en el tiempo a través de un intervalo predeterminado, y luego se detecta y resuelve cualquier penetración), o continua/a priori (los objetos avanzan sólo hasta que ocurre una colisión, y la colisión es manejado antes de proceder). El primero es más fácil de implementar y más rápido, pero conduce a fallas en la detección de colisiones (o detección de colisiones espurias) si los objetos se mueven lo suficientemente rápido. Los sistemas en tiempo real generalmente tienen que utilizar detección de colisiones discreta, con otras formas ad hoc para evitar fallas en la detección de colisiones.

La detección de colisiones entre tela y objetos ambientales con un "interior" bien definido es sencilla ya que el sistema puede detectar sin ambigüedades si los vértices y las caras de la malla de tela se cruzan con el cuerpo y resolverlos en consecuencia. Si no existe un "interior" bien definido (por ejemplo, en el caso de colisión con una malla que no forma un límite cerrado), se puede construir un "interior" mediante extrusión. Las colisiones mutuas o autocolisiones de cuerpos blandos definidos por tetraedros son sencillas, ya que se reducen a la detección de colisiones entre tetraedros sólidos.

Sin embargo, la detección de colisiones entre dos telas poligonales (o la colisión de una tela consigo misma) mediante la detección de colisiones discretas es mucho más difícil, ya que no existe una forma inequívoca de detectar localmente después de un intervalo de tiempo si un nodo de tela que ha penetrado está en el " lado equivocado" o no. Las soluciones implican utilizar el historial del movimiento de la tela para determinar si se ha producido un evento de intersección o realizar un análisis global del estado de la tela para detectar y resolver autointersecciones. Pixar ha presentado un método que utiliza un análisis topológico global de intersecciones de malla en el espacio de configuración para detectar y resolver la autointerpenetración de la tela. [26] Actualmente, esto es generalmente demasiado costoso desde el punto de vista computacional para los sistemas de tela en tiempo real.

Para realizar una detección de colisiones eficiente, las primitivas que ciertamente no colisionan deben identificarse lo antes posible y descartarse de la consideración para evitar perder tiempo. Para hacer esto, es esencial algún tipo de esquema de subdivisión espacial , para evitar una prueba de fuerza bruta de colisiones primitivas. Los enfoques utilizados incluyen:

Otras aplicaciones

Otros efectos que pueden simularse mediante métodos de dinámica de cuerpo blando son:

La simulación de fluidos en el contexto de los gráficos por computadora normalmente no se consideraría dinámica de cuerpo blando, que generalmente se restringe a la simulación de materiales que tienen tendencia a conservar su forma. Por el contrario, un fluido adopta la forma de cualquier recipiente que lo contenga, ya que las partículas están unidas por fuerzas relativamente débiles.

Software que apoya la física del cuerpo blando

Motores de simulación

Juegos

Ver también

Referencias

  1. ^ Nealen, Müller, Keiser, Boxerman y Carlson (2005). "Modelos deformables de base física en gráficos por computadora". CiteSeerX  10.1.1.124.4664 . {{cite web}}: Falta o está vacío |url=( ayuda )CS1 maint: multiple names: authors list (link)
  2. ^ "Software Numerion - Física del carbono".
  3. ^ "Cuerpos blandos PhysX". 24 de febrero de 2014.
  4. ^ "Materia Molecular Digital (DMM) de Pixelux". Archivado desde el original el 21 de septiembre de 2009 . Consultado el 7 de marzo de 2010 .
  5. ^ "Paño Havok". Archivado desde el original el 29 de febrero de 2012 . Consultado el 7 de marzo de 2010 .
  6. ^ "Física de balas".
  7. ^ "Núcleo Maya".
  8. ^ "Doc:2.4/Manual/Física/Cuerpos blandos 2.46 - BlenderWiki". wiki.blender.org . Archivado desde el original el 4 de noviembre de 2015 . Consultado el 19 de septiembre de 2015 .
  9. ^ Desbrun, Schroder y Barr (1999). «Animación interactiva de objetos estructurados deformables» (PDF) .
  10. ^ ab Sederberg y Parry (1986). "Deformación de forma libre de modelos geométricos sólidos" (PDF) .
  11. ^ Matyka y Ollila (2003). "Un modelo de presión para la simulación de cuerpos blandos" (PDF) .
  12. ^ Kaufmann, Martín, Botsch y Gross (2008). "Simulación flexible de modelos deformables utilizando Galerkin FEM discontinuo" (PDF) .{{cite web}}: CS1 maint: multiple names: authors list (link)
  13. ^ Spillmann, Wagner y Teschner (2006). "Robusto mallado tetraédrico de sopas triangulares" (PDF) .
  14. ^ Bridson, Terán, Molino y Fedkiw (2003). "Generación de malla tetraédrica basada en física adaptativa utilizando conjuntos de niveles" (PDF) .{{cite web}}: CS1 maint: multiple names: authors list (link)
  15. ^ ab Parker y O'Brien (2009). "Deformación y fractura en tiempo real en un entorno de juego".
  16. ^ Terzopoulos, Platt, Barr y Fleischer (1987). «Modelos elásticamente deformables» (PDF) .{{cite web}}: CS1 maint: multiple names: authors list (link)
  17. ^ Wardetzky, Bergou, Harmon, Zorin y Grinspun (2007). "Energías de curvatura cuadrática discreta" (PDF) .{{cite web}}: CS1 maint: multiple names: authors list (link)
  18. ^ ab Müller, Heidelberger, Teschner y Gross (2005). "Deformaciones sin malla basadas en la coincidencia de formas" (PDF) .{{cite web}}: CS1 maint: multiple names: authors list (link)
  19. ^ Steinemann, Otaduy y Gross (2008). "Deformaciones de adaptación de formas de rápida adaptación". Archivado desde el original el 10 de enero de 2011 . Consultado el 8 de marzo de 2010 .
  20. ^ "Destrucción Havok". Archivado desde el original el 21 de febrero de 2010 . Consultado el 7 de marzo de 2010 .
  21. ^ Kaldor, James y Marschner (2008). "Simulación de tela tejida a nivel de hilo" (PDF) .
  22. ^ Baraff y Witkin (1998). "Grandes pasos en la simulación de telas" (PDF) .
  23. ^ Provot (1997). "Manejo de colisiones y autocolisiones en modelo de tela dedicado al diseño de prendas". CiteSeerX 10.1.1.89.9232 .  {{cite web}}: Falta o está vacío |url=( ayuda )
  24. ^ Bridson, Fedkiw y Anderson (2002). "Tratamiento robusto de colisiones, contactos y fricciones para animación de telas" (PDF) .
  25. ^ Müller, Heidelberger, Hennix y Ratcliff (2006). "Dinámica basada en la posición" (PDF) .{{cite web}}: CS1 maint: multiple names: authors list (link)
  26. ^ Baraff, Witkin y Kass (2003). "Desenredar la tela" (PDF) .
  27. ^ Van Den Bergen (1998). "Detección eficiente de colisiones de modelos deformables complejos utilizando árboles AABB" (PDF) .
  28. ^ Teschner, Heidelberger, Müller, Pomeranets y Gross (2003). "Hashing espacial optimizado para la detección de colisiones de objetos deformables" (PDF) .{{cite web}}: CS1 maint: multiple names: authors list (link)
  29. ^ Steinemann, Otaduy y Gross (2006). "División rápida y arbitraria de objetos deformados" (PDF) .
  30. ^ Müller, Keiser, Nealen, Pauly, Gross y Alexa (2004). "Animación basada en puntos de objetos elásticos, plásticos y de fusión" (PDF) .{{cite web}}: CS1 maint: multiple names: authors list (link)
  31. ^ Selle, Lentine y Fedkiw (2008). "Un modelo de resorte masivo para simulación de cabello". Archivado desde el original el 14 de diciembre de 2009 . Consultado el 7 de marzo de 2010 .
  32. ^ "¿Cuándo dará el paso la cirugía virtual?". Científico americano . 2007.
  33. ^ "$jigglebone". desarrollador.valvesoftware . Consultado el 4 de agosto de 2022 .

enlaces externos