stringtranslate.com

Dinámica de cuerpos blandos

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 en el 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 de cuerpos blandos 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 tela. En general, estos métodos solo brindan emulaciones visualmente plausibles en lugar de simulaciones científicas o de ingeniería precisas, aunque existe cierta superposición con los métodos científicos, particularmente en el caso de las simulaciones de elementos finitos. Varios motores de física actualmente brindan software para simulación de cuerpos blandos. [2] [3] [4] [5] [6] [7]

Los objetos de cuerpo blando reaccionan a las fuerzas y pueden colisionar con otros objetos 3D. Este ejemplo se ha 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 ideales sin peso 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 enlaces, si, por ejemplo, se está simulando una cuerda o una hebra de cabello). Se pueden agregar resortes adicionales entre los nodos, o modificar la ley de fuerza de los resortes, para lograr los efectos deseados. La aplicación de 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.), proporciona un sistema de ecuaciones diferenciales para el movimiento de los nodos, que se resuelve mediante esquemas numéricos estándar para resolver EDO . [9] La representación de una red tridimensional de masa-resorte se realiza a menudo utilizando deformación de forma libre , [10] en la que la malla representada 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 son iguales a cero, se puede obtener el método de cuadrícula estirada destinado a varias soluciones de problemas de ingeniería en relación con el comportamiento de la cuadrícula elástica. Estos a veces se conocen como modelos masa-resorte-amortiguador . 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 al dividirlo en una gran cantidad de elementos sólidos que encajan entre sí y resolver 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 cómo un polígono bidimensional puede triangularse en triángulos). La deformación (que mide la deformación local de los puntos del material desde 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 a través de la forma generalizada de la ley de Hooke : donde es el tensor de elasticidad , que codifica las propiedades del material (parametrizadas en elasticidad lineal para un material isótropo por el coeficiente 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 relacionando esto, a través de 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 de nodo. [15] La representación se realiza a través de 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 superficies, que dictan que una superficie restringida asumirá la forma que minimice la energía total de deformación (análoga a una burbuja de jabón ). Expresando 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 da diferenciando la energía con respecto a la posición, lo que produce una ecuación de movimiento que se puede resolver de las formas estándar. [16] [17]

Coincidencia de formas

En este esquema, se aplican fuerzas de penalización o restricciones al modelo para impulsarlo hacia su forma original [18] (es decir, el material se comporta como si tuviera memoria de forma ). Para conservar el momento, la rotación del cuerpo debe estimarse correctamente, por ejemplo, mediante descomposición polar . Para aproximarse a 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 puede ser manejada por 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) el uso de una paleta de matriz para generar una malla de superficie para la representación. Este es el enfoque utilizado para 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, la estructura real de la tela real en el nivel del hilo se puede ignorar (aunque se ha intentado modelar la tela en el nivel del hilo). [21] A través de efectos de renderizado , esto puede producir una emulación visualmente plausible de textiles y ropa , utilizada 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 utiliza a menudo para mejorar el realismo de personajes animados vestidos .

Los simuladores de tela generalmente se basan en modelos de masa-resorte , pero se debe hacer una distinción entre solucionadores basados ​​en fuerza y ​​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 se pueden resolver 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 de Euler hacia adelante ), a menos que el paso de tiempo se haga demasiado pequeño para aplicaciones interactivas (ya que, como es bien sabido [ cita requerida ] , los integradores explícitos son numéricamente inestables para sistemas suficientemente rígidos ). Por lo tanto, se deben utilizar solucionadores implícitos [22] , que requieren la solución de un gran sistema de matriz dispersa (a través, por ejemplo, del método del gradiente conjugado ), que en sí mismo 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 de limitación de la 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 (notablemente 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 de 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 que se obtiene una tela suficientemente rígida. Esto es similar a una solución de Gauss-Seidel del sistema de matriz implícita para el modelo de 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 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 de 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 difícil de lograr a velocidades de cuadros interactivas, en particular en el caso de detectar y resolver colisiones entre sí y 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 detectan y resuelven las penetraciones) o continua/a priori (los objetos avanzan solo hasta que se produce una colisión y esta se maneja antes de continuar). La primera es más fácil de implementar y más rápida, pero conduce a fallas en la detección de colisiones (o detección de colisiones falsas) si los objetos se mueven lo suficientemente rápido. Los sistemas en tiempo real generalmente tienen que usar detección de colisiones discretas, con otras formas ad hoc para evitar fallas en la detección de colisiones.

La detección de colisiones entre objetos de tela y del entorno con un "interior" bien definido es sencilla, ya que el sistema puede detectar de forma inequívoca si los vértices y las caras de la malla de tela intersecan el cuerpo y resolverlos en consecuencia. Si no existe un "interior" bien definido (por ejemplo, en el caso de una 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) a través de la detección de colisiones discretas es mucho más difícil, ya que no hay una manera inequívoca de detectar localmente después de un intervalo de tiempo si un nodo de tela que ha penetrado está en el lado "incorrecto" 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 las autointersecciones. Pixar ha presentado un método que utiliza un análisis topológico global de las intersecciones de malla en el espacio de configuración para detectar y resolver la autointerpenetración de la tela. [26] Actualmente, esto suele ser demasiado costoso computacionalmente para los sistemas de tela en tiempo real.

Para detectar colisiones de manera eficiente, es necesario identificar lo antes posible los elementos primitivos que no colisionan y descartarlos para evitar perder tiempo. Para ello, es esencial algún tipo de esquema de subdivisión espacial , a fin de evitar una prueba de fuerza bruta de las colisiones de elementos primitivos. Los enfoques utilizados incluyen:

Otras aplicaciones

Otros efectos que pueden simularse mediante los métodos de dinámica de cuerpos blandos son:

La simulación de fluidos en el contexto de los gráficos por ordenador normalmente no se consideraría dinámica de cuerpos blandos, que suele limitarse a la simulación de materiales que tienden a conservar su forma. Por el contrario, un fluido adopta la forma del recipiente que lo contiene, ya que las partículas están unidas entre sí por fuerzas relativamente débiles.

Software que apoya la física de cuerpos blandos

Motores de simulación

Juegos

Véase también

Referencias

  1. ^ Nealen, Müller, Keiser, Boxerman y Carlson (2005). "Modelos deformables basados ​​en la 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. ^ "Numerion Software - Física del carbono".
  3. ^ "Cuerpos blandos de 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 de Havok". Archivado desde el original el 29 de febrero de 2012. Consultado el 7 de marzo de 2010 .
  6. ^ "Física de balas". 21 de marzo de 2022.
  7. ^ "Núcleo Maya".
  8. ^ "Doc:2.4/Manual/Física/Cuerpos blandos 2.46 - BlenderWiki". wiki.blender.org . Archivado desde el original el 2015-11-04 . Consultado el 2015-09-19 .
  9. ^ Desbrun, Schroder y Barr (1999). "Animación interactiva de objetos deformables estructurados" (PDF) .
  10. ^ ab Sederberg & 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, Martin, Botsch y Gross (2008). "Simulación flexible de modelos deformables utilizando el método de elementos finitos Galerkin 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, Teran, Molino y Fedkiw (2003). "Generación de mallas tetraédricas basada en física adaptativa utilizando conjuntos de niveles" (PDF) .{{cite web}}: CS1 maint: multiple names: authors list (link)
  15. ^ ab Parker & 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). "Fast Adaptive Shape Matching Deformations". Archivado desde el original el 2011-01-10 . Consultado el 2010-03-08 .
  20. ^ "Destrucción de 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 tejido de punto 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 modelos de tela dedicados 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, contacto y fricción 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). "Desenredando 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). "Hash 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 arbitraria rápida de objetos deformables" (PDF) .
  30. ^ Müller, Keiser, Nealen, Pauly, Gross y Alexa (2004). "Animación basada en puntos de objetos elásticos, plásticos y en fusión" (PDF) .{{cite web}}: CS1 maint: multiple names: authors list (link)
  31. ^ Selle, Lentine y Fedkiw (2008). "Un modelo de resorte de masa 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 se popularizará la cirugía virtual?". Scientific American . 2007.
  33. ^ "$jigglebone". developer.valvesoftware . Consultado el 4 de agosto de 2022 .

Enlaces externos