Three.js: un motor 3D ligero y eficiente en Javascript

Si hace unos años nos hubiesen dicho que se iban a popularizar motores de renderizado en 3D hechos en Javascript, hubiésemos tildado de locos a los visionarios y todo hubiera servido como chiste de portada un buen tiempo. Incluso hoy, cuando ya son una realidad, nos sigue sorprendiendo alguna pieza de software como esta que nos trae mrdoob.

En la página disponemos de algo de documentación de la API pero está muy incompleta ya que parece, por la actividad en GitHub, que están centrando los esfuerzos en mejorar vertiginosamente las funcionalidades y el rendimiento. También podremos acceder a varias demos, muchas de las cuales necesitarán soporte de WebGL y que nos servirán para indagar en su código para saber cómo funciona esta estupenda librería. También está en portada un trozo de código de apenas 30 lineas que nos muestra cómo crear una escena con una cámara, añadir un cubo y situarlo en el viewport para renderizarlo en la vista. Realmente alucinante.

Leyendo en la espartana web que luce Three.js podemos ver, por la lista de cambios, que se han incluido funcionalidades para detectar colisiones, manejar sprites, aplicar LensFlares, nuevos tipos de cámara (ej. QuakeCamera para hacer flybys) por lo que parece claro cual puede ser un importante campo donde aplicarlo: gaming!

Usando la demo de canvas geometry terrain he mirado el rendimiento y no está mal teniendo en cuenta la plataforma donde nos estamos moviendo y la resolución de 1440x900 que estaba usando en ese momento (Intel Core2Duo 1.8Ghz + Intel X3100 + Chrome 12 canary build).

Nos da unos 11-18 frames/segundo pero podemos comprobar que la CPU no se utiliza en su totalidad, parece que el tema multicore dentro del navegador no está tan bien como nos gustaría, pero seguro que este tipo de utilidades sirven de acicate para mejorar estos temas.

Así, en la coctelera tenemos navegadores con Javascript cada vez más potente, con funcionalidades multimedia estandarizadas gracias a HTML5 y con todas estas utilidades listas para unir los componentes necesarios para forjar lo que puede ser una revolución en el software de entretenimiento de un futuro cada vez más presente. La posibilidad de que las aplicaciones pesadas dejen paso a opciones integradas en el mismo soporte donde leemos noticias y blogs cada día avanza un paso más. ¿Se estrenará Duke Nukem Forever en un motor Three.js?

Más información | https://github.com/mrdoob/three.js

Portada de Genbeta