stringtranslate.com

Motor de física

Un motor de física es un software informático que proporciona una simulación aproximada de ciertos sistemas físicos , como la dinámica de cuerpos rígidos (incluida la detección de colisiones ), la dinámica de cuerpos blandos y la dinámica de fluidos , de uso en los dominios de los gráficos por computadora , los videojuegos y el cine ( CGI ). Sus principales usos son en los videojuegos (normalmente como middleware ), en cuyo caso las simulaciones son en tiempo real . El término a veces se utiliza de forma más general para describir cualquier sistema de software para simular fenómenos físicos, como la simulación científica de alto rendimiento .

Descripción

En general, existen dos clases de motores de física : en tiempo real y de alta precisión. Los motores de física de alta precisión requieren más potencia de procesamiento para calcular física muy precisa y, por lo general, los utilizan los científicos y las películas animadas por computadora. Los motores de física en tiempo real, como los que se utilizan en los videojuegos y otras formas de computación interactiva, utilizan cálculos simplificados y una precisión reducida para realizar los cálculos a tiempo para que el juego responda a una velocidad adecuada para el juego. Un motor de física es, en esencia, una gran calculadora que realiza los cálculos necesarios para simular la física. [1]

Motores científicos

Una de las primeras computadoras de propósito general, ENIAC , se utilizó como un tipo muy simple de motor de física. Se utilizó para diseñar tablas balísticas para ayudar al ejército de los Estados Unidos a estimar dónde caerían los proyectiles de artillería de diversas masas al dispararse en ángulos variables y cargas de pólvora, teniendo en cuenta también la deriva causada por el viento. Los resultados se calcularon una sola vez y se tabularon en tablas impresas que se entregaron a los comandantes de artillería.

Los motores de física se han utilizado comúnmente en supercomputadoras desde la década de 1980 para realizar modelos computacionales de dinámica de fluidos , donde a las partículas se les asignan vectores de fuerza que se combinan para mostrar la circulación. Debido a los requisitos de velocidad y alta precisión, se desarrollaron procesadores informáticos especiales conocidos como procesadores vectoriales para acelerar los cálculos. Las técnicas se pueden utilizar para modelar patrones climáticos en la predicción meteorológica , datos de túneles de viento para diseñar aeronaves y embarcaciones o vehículos de motor, incluidos los autos de carrera, y enfriamiento térmico de procesadores de computadora para mejorar los disipadores de calor . Al igual que con muchos procesos cargados de cálculos en informática, la precisión de la simulación está relacionada con la resolución de la simulación y la precisión de los cálculos; pequeñas fluctuaciones no modeladas en la simulación pueden cambiar drásticamente los resultados previstos.

Los fabricantes de neumáticos utilizan simulaciones físicas para examinar cómo se comportarán los nuevos tipos de bandas de rodadura en condiciones húmedas y secas, utilizando nuevos materiales de neumáticos de diversa flexibilidad y bajo diferentes niveles de carga de peso.

Motores de juego

En la mayoría de los juegos de ordenador, la velocidad de los procesadores y la jugabilidad son más importantes que la precisión de la simulación. Esto conduce a diseños de motores de física que producen resultados en tiempo real, pero que replican la física del mundo real solo para casos simples y, por lo general, con cierta aproximación. La mayoría de las veces, la simulación está orientada a proporcionar una aproximación "perceptualmente correcta" en lugar de una simulación real. Sin embargo, algunos motores de juegos, como Source , utilizan la física en rompecabezas o en situaciones de combate. Esto requiere una física más precisa para que, por ejemplo, el impulso de un objeto pueda derribar un obstáculo o levantar un objeto que se hunde.

En el pasado, la animación de personajes basada en la física solo utilizaba dinámicas de cuerpo rígido porque son más rápidas y fáciles de calcular, pero los juegos y películas modernos están empezando a utilizar la física de cuerpo blando . La física de cuerpo blando también se utiliza para efectos de partículas, líquidos y telas. A veces se proporciona alguna forma de simulación limitada de dinámica de fluidos para simular agua y otros líquidos, así como el flujo de fuego y explosiones a través del aire.

Detección de colisiones

Los objetos de los juegos interactúan con el jugador, el entorno y entre sí. Normalmente, la mayoría de los objetos 3D de los juegos se representan mediante dos mallas o formas independientes. Una de estas mallas es la forma altamente compleja y detallada que el jugador puede ver en el juego, como un jarrón con elegantes asas curvas y en forma de bucle. Para aumentar la velocidad, se utiliza una segunda malla invisible simplificada para representar el objeto al motor de física, de modo que este trate el jarrón de ejemplo como un simple cilindro. Por lo tanto, sería imposible insertar una varilla o disparar un proyectil a través de los orificios de las asas del jarrón, porque el modelo del motor de física se basa en el cilindro y no tiene en cuenta las asas. La malla simplificada que se utiliza para el procesamiento de la física se suele denominar geometría de colisión. Puede ser un cuadro delimitador , una esfera o un casco convexo . Los motores que utilizan cuadros delimitadores o esferas delimitadoras como forma final para la detección de colisiones se consideran extremadamente simples. Generalmente, se utiliza un cuadro delimitador para la detección de colisiones de fase amplia para limitar el número de colisiones posibles antes de que se realice una costosa detección de colisiones de malla sobre malla en la fase estrecha de detección de colisiones.

Otro aspecto de la precisión en la detección de colisiones discretas involucra la velocidad de cuadros , o el número de momentos en el tiempo por segundo cuando se calcula la física. Cada cuadro se trata como separado de todos los demás cuadros, y el espacio entre cuadros no se calcula. Una baja velocidad de cuadros y un objeto pequeño que se mueve rápidamente provoca una situación en la que el objeto no se mueve suavemente a través del espacio, sino que parece teletransportarse de un punto en el espacio al siguiente a medida que se calcula cada cuadro. Los proyectiles que se mueven a velocidades suficientemente altas no alcanzarán sus objetivos, si el objetivo es lo suficientemente pequeño como para caber en el espacio entre los cuadros calculados del proyectil que se mueve rápidamente. Se utilizan varias técnicas para superar esta falla, como la representación de proyectiles de Second Life como flechas con colas invisibles posteriores más largas que el espacio en los cuadros para colisionar con cualquier objeto que pueda caber entre los cuadros calculados. Por el contrario, la detección de colisiones continuas como en Bullet o Havok no sufre este problema.

Dinámica de cuerpos blandos

Una alternativa al uso de sistemas de física de cuerpos rígidos basados ​​en cuadros delimitadores es utilizar un sistema basado en elementos finitos . En un sistema de este tipo, se crea una teselación volumétrica tridimensional del objeto 3D. La teselación da como resultado una serie de elementos finitos que representan aspectos de las propiedades físicas del objeto, como dureza, plasticidad y conservación del volumen. Una vez construidos, un solucionador utiliza los elementos finitos para modelar la tensión dentro del objeto 3D. La tensión se puede utilizar para generar fracturas, deformaciones y otros efectos físicos con un alto grado de realismo y singularidad. A medida que aumenta la cantidad de elementos modelados, aumenta la capacidad del motor para modelar el comportamiento físico. La representación visual del objeto 3D se altera mediante el sistema de elementos finitos mediante el uso de un sombreador de deformación que se ejecuta en la CPU o la GPU. Los sistemas basados ​​en elementos finitos habían sido poco prácticos para su uso en juegos debido a la sobrecarga de rendimiento y la falta de herramientas para crear representaciones de elementos finitos a partir de objetos artísticos 3D. Con procesadores de mayor rendimiento y herramientas para crear rápidamente teselaciones volumétricas, los sistemas de elementos finitos en tiempo real comenzaron a usarse en los juegos, comenzando con Star Wars: The Force Unleashed que utilizó materia molecular digital para los efectos de deformación y destrucción de madera, acero, carne y plantas utilizando un algoritmo desarrollado por el Dr. James O'Brien como parte de su tesis doctoral. [2]

Movimiento browniano

En el mundo real, la física siempre está activa. Existe una vibración constante del movimiento browniano en todas las partículas de nuestro universo a medida que las fuerzas se empujan unas contra otras. Para un motor de física de juegos , esa precisión activa constante desperdicia innecesariamente la limitada potencia de la CPU, lo que puede causar problemas como una disminución de la velocidad de cuadros . Por lo tanto, los juegos pueden poner objetos a "dormir" deshabilitando el cálculo de la física en objetos que no se han movido una distancia particular dentro de una cierta cantidad de tiempo. Por ejemplo, en el mundo virtual 3D Second Life , si un objeto está descansando en el piso y el objeto no se mueve más allá de una distancia mínima en aproximadamente dos segundos, entonces los cálculos de física se deshabilitan para el objeto y se congela en su lugar. El objeto permanece congelado hasta que el procesamiento de física se reactiva para el objeto después de que ocurre una colisión con algún otro objeto físico activo. [3]

Paradigmas

Los motores de física para videojuegos suelen tener dos componentes principales: un sistema de detección de colisiones / respuesta a colisiones y el componente de simulación dinámica responsable de resolver las fuerzas que afectan a los objetos simulados. Los motores de física modernos también pueden contener simulaciones de fluidos , sistemas de control de animación y herramientas de integración de activos . Existen tres paradigmas principales para la simulación física de sólidos: [4]

Finalmente, son posibles métodos híbridos que combinan aspectos de los paradigmas anteriores.

Limitaciones

Un límite principal del realismo del motor de física es el resultado aproximado de las resoluciones de restricción y el resultado de la colisión debido a la convergencia lenta de los algoritmos. La detección de colisiones calculada a una frecuencia demasiado baja puede dar como resultado que los objetos pasen entre sí y luego sean repelidos con una fuerza de corrección anormal. Por otro lado, los resultados aproximados de la fuerza de reacción se deben a la convergencia lenta del solucionador de Gauss Seidel proyectado típico, lo que da como resultado un rebote anormal. Cualquier tipo de objeto de física compuesto de movimiento libre puede demostrar este problema, pero es especialmente propenso a afectar los eslabones de la cadena bajo alta tensión y los objetos con ruedas con superficies de apoyo físicas activas. Una mayor precisión reduce los errores de posición/fuerza, pero a costa de necesitar mayor potencia de CPU para los cálculos.

Unidad de procesamiento físico (PPU)

Una unidad de procesamiento de física (PPU) es un microprocesador dedicado diseñado para manejar los cálculos de física, especialmente en el motor de física de los videojuegos . Ejemplos de cálculos que involucran una PPU pueden incluir dinámica de cuerpos rígidos , dinámica de cuerpos blandos , detección de colisiones , dinámica de fluidos , simulación de cabello y ropa, análisis de elementos finitos y fracturación de objetos. La idea es que los procesadores especializados descarguen tareas que consumen mucho tiempo de la CPU de una computadora, de manera similar a cómo una GPU realiza operaciones gráficas en lugar de la CPU principal. El término fue acuñado por el marketing de Ageia para describir su chip PhysX a los consumidores. Varias otras tecnologías en el espectro CPU-GPU tienen algunas características en común con él, aunque la solución de Ageia fue la única completa diseñada, comercializada, respaldada y colocada dentro de un sistema exclusivamente como una PPU.

Computación de propósito general en la unidad de procesamiento gráfico (GPGPU)

La aceleración de hardware para el procesamiento de la física ahora suele proporcionarse mediante unidades de procesamiento gráfico que admiten cálculos más generales, un concepto conocido como computación de propósito general en unidades de procesamiento gráfico (GPGPU). AMD y NVIDIA ofrecen compatibilidad con cálculos de dinámica de cuerpos rígidos en sus últimas tarjetas gráficas.

La serie GeForce 8 de NVIDIA admite una tecnología de aceleración de física newtoniana basada en GPU denominada Quantum Effects Technology . NVIDIA proporciona un kit de herramientas SDK para la tecnología CUDA ( Compute Unified Device Architecture ) que ofrece una API de bajo y alto nivel para la GPU. [5] Para sus GPU, AMD ofrece un SDK similar, llamado Close to Metal (CTM), que proporciona una interfaz de hardware delgada.

PhysX es un ejemplo de un motor de física que puede utilizar aceleración de hardware basada en GPGPU cuando esté disponible.

Motores

Motores de física en tiempo real

Motores de física de alta precisión

Véase también

Referencias

  1. ^ Millington, Ian (7 de marzo de 2007). Desarrollo de un motor de física de juegos. CRC Press. ISBN 978-1-4822-6732-7.
  2. ^ "Modelado gráfico y animación de fractura frágil". Graphics.eecs.berkeley.edu . Consultado el 1 de septiembre de 2012 .
  3. ^ "Doc:Manual/Motor de juego/Lógica/Tipo de objeto/Cuerpo rígido - BlenderWiki". Wiki.blender.org. 20 de noviembre de 2009. Archivado desde el original el 1 de octubre de 2011. Consultado el 16 de agosto de 2010 .
  4. ^ Erleben, Kenny; Deportivo, Jon; Henriksen, Knud; Dohlmann, Henrik (2005). Animación basada en la física .
  5. ^ "Página de características de NVIDIA 8800: tecnología de efectos cuánticos". Nvidia.com . Consultado el 16 de agosto de 2010 .
  6. ^ Repositorio de GitHub de Jolt Physics

Lectura adicional

Enlaces externos