Cuando se desarrollan aplicaciones de realidad virtual, uno de los principales desafíos es lograr realismo e inmersión a un costo computacional aceptable. Con las placas gráficas actuales es posible obtener imágenes muy cercanas a la realidad, aunque también se debe incluir comportamiento físico para lograr escenas que brinden una verdadera inmersión.
Para cumplir este objetivo, se han desarrollado en los últimos años varios motores físicos implementados en forma de bibliotecas (ODE, NGD, TPE, BPL1) o en placas dedicadas a la simulación de modelos físicos (por ejemplo, el producto de nVIDIA® denominado PhysX); los cuales permiten agregar comportamiento físico a escenas tridimensionales.
Es posible que los usuarios deseen realizar pruebas de rendimiento y/o precisión a cada motor físico para determinar cual de ellos se ajusta mejor a sus necesidades; o utilizar distintas funcionalidades de cada uno en una misma aplicación, pero ocurre que cada uno de estos motores necesita una configuración distinta de inicialización y muchas veces la funcionalidad implementada difiere entre uno y otro, haciendo que el código implementado sea obsoleto, requiriendo de un esfuerzo considerable para portar la aplicación a otro motor.
Para solucionar dichos problemas, el presente trabajo se centra principalmente en crear una capa de abstracción o PAL (del inglés, Physics Abstraction Layer) que sea utilizada por un motor gráfico, la cual brinde una comunicación fluida con diversos motores físicos maximizando la reutilización de código y permita cambiar el uso entre ellos.