Demo de ALPhysics.js

Como anuncié en la anterior entrada estoy desarrollando una librería de simulación física en tiempo real, actualmente está en una versión muy temprana y solo admite fuerzas gravitatorias.

He decidido dejar solamente un método de integración, el método de euler, hasta que se requieran métodos más precisos.

Aquí dejo la demostración, montada sobre un escenario 2D

http://angelluispg.es/AL3D/physics/

Novedades sobre AL3D

Después de unos cuantos meses (ya que esto lo hago en el poco tiempo libre que me queda) puedo enseñar algo más de AL3D el motor de renderizado para web que estoy preparando y viene con bastantes novedades.

La que más ilusión me hace es la incorporación de una nueva librería: ALPhysics.js que se encargará de llevar a cabo las físicas, estoy bastante ilusionado con esta librería y las posibilidades que puede ofrecer. Aunque todavía está en pañales y pasará bastante tiempo hasta que acabe integrada completamente en el proyecto.

Con esto ya son 3 las librerías del proyecto: AL3D.js, ALMath.js y ALPhysics.js.

Las novedades del motor son muchas y variadas, distribuidas entre todas las librerías, pero la que más novedades presenta es AL3D.js.

Novedades en ALMath.js:

  • Gestión de errores
  • Mejoras en el rendimiento, sobre todo en el cálculo de la matriz normal (ahora solo se calcula la inversa cuando sea necesario, calculando la transpuesta cuando sea posible)
  • Añadida la clase Quaternion
  • Correción de pequeños errores.

Novedades en ALPhysics.js:

  • Como principal novedad está la creación de esta misma librería.
  • Generador de fuerzas gravitatorias
  • 2 ODE Solver (Resolutor de ecuaciones diferenciales ordinarias
    • Euler ODE Solver
    • Fourth-Order Runge-Kutta ODE Solver
  • NO dispone de broad-phase (por ahora)
  • NO dispone de narrow-phase (por ahora)

Novedades en AL3D.js:

  • Posibilidad de renderizar escenas 3D
  • Añadidas figuras geométricas básicas:
    • Esfera
    • Cono
    • Cilindro
    • Plano
    • Circulo
    • Cubo
  • Añadidos distintas fuentes de luz
    • Point Light (Con atenuación lumínica)
    • Directional Ligth
    • Spot Ligth (Con atenuación lumínica)
  • Añadidos distintos tipos de materiales
    • Material Lambert (Aquél en el que la luz reflacta en todas las direcciones)
    • Material Phong (Aquél en el que la luz reflacta en todas las direcciones pero además hay una zona en la que refleja bastante luz al observador)
    • Material Blinn (Optimización del algoritmo de Phong)
    • Material Toon (Aquél que da una aspecto cartoon a la malla).
    • Material Básico (Aquél que no se ve afectado por la luz)
  • Añadidos 2 algoritmos de cálculo de luz
    • Gouraud
    • Phong
  • Generador dinámico de Shader y gestor de Shaders con cache.
  • Gestor de Texturas con cache.
  • Los materiales tienen la posibilidad de realizar el cálculo de luz por un lado o por ambos lados invirtiendo las normales

Aquí dejo un pequeño ejemplo que he hecho con él.

http://angelluispg.es/AL3D/example/

El código aún no está disponible en mi repositorio pero desde la página web pulsando Control+U podéis ver el código fuente, si lo haceis veréis que la librería ALPhysics.js aún no está integrada en el proyecto.

El proyecto tiene una licencia MIT.

Incorporaciones próximas futuras:

  • Optimizador de escenas mediante Octree y BSP
  • Mapas normales y especulares
  • Skyboxes
  • Sombras
  • Cargador de mallas.