Cannon.js es un motor de física 3D de código abierto en JavaScript creado por Stefan "schteppe" Hedman. [ 2 ] A diferencia de las bibliotecas de motores de física portadas de C++ a JavaScript, cannon.js está escrito en JavaScript desde el principio y puede aprovechar sus características. [ 3 ] En una comparación de 2013 con Ammo.js, se encontró que cannon.js era "más compacto, más comprensible, más potente en cuanto a su rendimiento y también más fácil de entender", pero no tenía tantas características. [ 4 ]
Características
Cannon.js admite las siguientes formas: esfera, plano, caja, cilindro, poliedro convexo , partícula y campo de alturas . Esta colección de formas coincide con la utilizada por motores de renderizado como Three.js y Babylon , pero no es completa. Por ejemplo, no es suficiente para X3DOM, [ 4 ] una aplicación de X3D que permite incluir gráficos 3D en páginas web sin necesidad de un complemento . [ 5 ]
El motor de física implementa dinámica de cuerpos rígidos, detección discreta de colisiones y un solucionador de restricciones de Gauss-Seidel . [ 6 ] Puede realizar simulación de telas [ 7 ]
Cannon.js se puede usar con los renderizadores WebGL Three.js y Babylon.js [ 8 ] [ 9 ] para generar escenas 3D basadas en la física. También se puede usar para proporcionar sincronización de física en red para juegos multijugador en línea usando Lance.gg [ 10 ].
Ejemplo
El código de ejemplo que se muestra a continuación crea una esfera en un plano, ejecuta la simulación paso a paso e imprime la simulación de la esfera en la consola. Tenga en cuenta que Cannon.js utiliza unidades del SI (metro, kilogramo, segundo, etc.). [ 11 ]
// Configuramos nuestro mundo var world = new CANNON . World (); world . gravity . set ( 0 , 0 , - 9.82 ); // m/s²// Crea una esfera var radio = 1 ; // m var cuerpoEsfera = new CANNON.Body ({ masa : 5 , // kg posición : new CANNON.Vec3 ( 0 , 0 , 10 ) , // m forma : new CANNON.Sphere ( radio ) } ) ; mundo.addCuerpo ( cuerpoEsfera ) ;// Crea un plano var groundBody = new CANNON . Body ({ mass : 0 // mass == 0 hace que el cuerpo sea estático }); var groundShape = new CANNON . Plane (); groundBody . addShape ( groundShape ); world . addBody ( groundBody );var PasoTiempoFijo = 1,0 / 60,0 ; // segundos var maxSubSteps = 3 ;// Iniciar el bucle de simulación var lastTime ; ( function simloop ( time ) { requestAnimationFrame ( simloop ); if ( lastTime !== undefined ) { var dt = ( time - lastTime ) / 1000 ; world . step ( fixedTimeStep , dt , maxSubSteps ); } console . log ( "Posición z de la esfera: " + sphereBody . position . z ); lastTime = time ; })();Referencias
- ↑ "Versiones · schteppe/cannon.js" . GitHub.com . Consultado el 11 de mayo de 2021 .
- ↑ "Stefan Hedman" . GitHub . Consultado el 27 de abril de 2017 .
- ↑ Prall, Chandler (10 de abril de 2012). "Comparación de motores de física de JavaScript" . Build New Games . Consultado el 27 de abril de 2017 .
- 1 2 Huber, Linda (2013). Jan Bender; Jeremie Dequidt; Christian Duriez; Gabriel Zachmann (eds.). Pasos iniciales para el acoplamiento de motores de física JavaScript con X3DOM . Taller sobre interacción en realidad virtual y simulación física (VRIPHYS 2013). La Asociación Eurographics. págs. 81–90 . doi : 10.2312/PE.vriphys.vriphys13.081-090 . ISBN 978-3-905674-57-6.
- ↑ "Antecedentes: ¿Qué es X3DOM y qué puede hacer por mí?" . Documentación oficial de x3dom . x3dom.org . Consultado el 27 de abril de 2017 .
- ↑ "Rama: master.cannon.js/README.markdown" . GitHub. 22 de abril de 2015. Consultado el 27 de abril de 2017 .
- ↑ "Simulación de la física de la tela" .
- ↑ "Crea maravillosos juegos interactivos para la web: Uso de webgl y un motor de física (babylon.js y cannon.js)" . Consultado el 21 de febrero de 2017 .
- ↑ "Desarrollo de juegos con Babylon.js en MSDN" . Consultado el 21 de febrero de 2017 .
- ↑ "Repositorio de código fuente de Lance" . GitHub .
- ↑ "Cannon.js - JavaScripting" . www.javascripting.com . Archivado del original el 26 de septiembre de 2020. Consultado el 22 de diciembre de 2020 .
Enlaces externos
- cannon.js en GitHub
- Motores de física computacional
- Software que utiliza la licencia MIT.