17/02/2016

Three.js: animaciones tridimensionales para nuestro sitio web

Three.js: animaciones tridimensionales para nuestro sitio web

Una de las ventajas de WebGL (la API de gráficos para la Web que conocemos en el último artículo) es la existencia de muchas bibliotecas externas que facilitan en buena medida su uso. Entre ellas encontramos Three.js, una API/biblioteca diseñada para crear animaciones en 3D que puedan mostrarse en un navegador web.

HexGL, un videojuego desarrollado con Three.js

Three.js abstrae muchas de las características de WebGL, volviéndolas más fácil de manipular para el programador. Por ejemplo, podemos aprovechar todas las prestaciones de OpenGL Shading Language (GLSL), el lenguaje de programación de shaders (segmentos independientes que conforman un programa gráfico) de WebGL. Three.js es una biblioteca de alto nivel, y esto supone una menor complejidad que si utilizáramos WebGL (de bajo nivel) sin ninguna capa de abstracción superior.

Three.js ofrece varios elementos que no son directamente soportados por WebGL, al menos con la misma facilidad:

  • Escenas. Contendrán todos los elementos gráficos que queramos mostrar. En las escenas encontramos los siguientes elementos esenciales:
    • Cámara. Define el punto de vista del usuario. Se pueden crear cámaras perspectivas u ortográficas. Si lo deseamos, el usuario puede controlar variables como la posición, el zoom y el FPS (cantidad de cuadros por segundo).
    • Mesh (malla). Es cualquier colección de vértices, bordes y caras que define la forma de un objeto poliédrico. Como veremos en los siguientes ítems, Three.js ya trae algunos meshes definidos y muchas herramientas para editar su aspecto.
    • Luz. Define la iluminación que recibirán los objetos. Podemos editar parámetros como el ambiente, la dirección y las sombras que proyectan las luces.
  • Renderers. Elementos que podemos usar para mostrar las escenas en nuestra página web: WebGL, <canvas>, SVG, CSS3/DOM, etc.
  • Geometría. Poliedros listos para usar, como planos, cubos, esferas, toroides, texto en 3D, etc.
  • Objetos. Meshes, partículas, sprites, líneas, cintas, bones, etc. Cabe destacar que los bones, o huesos, forman la estructura interna (esqueleto) que permite a los objetos tener un movimiento articulado; mientras que los meshes integran la capa externa que ve el usuario.
  • Materiales. Describen la apariencia de los objetos. Podemos elegir entre distintos algoritmos de shading (crean la ilusión de profundidad en la pantalla) e iluminación.
  • Importación y exportación. Podemos migrar modelos 3D entre Three.js y otras herramientas, como Blender, Maya, Cinema3D, etc.

Además de estas ventajas, Three.js cuenta con buena documentación y una gran comunidad de usuarios alrededor del mundo, que, en caso de tener dificultades, nos facilitarán más aun el trabajo con gráficos en WebGL.

Enlaces externos

0

angularjs Aplicaciones en Facebook aplicaciones mobile behavioral targeting Botones Call-to-action breadcrumbs breadcrumbs web búsqueda de personal búsqueda facetada Call-to-action buttons Client-side cliente-destacado cms a medida coding comercio electrónico content marketing CSS3 PIE cuanto debe pesar un sitio data-driven web design Datos estructurados Defacement Denegación de servicio Desarrollar una aplicación web desventajas de PhoneGap diseñar newsletters diseño web diseño web argentina diseño web esqueuomórfico Diseño web responsive Diseño web responsivo diseño web santa fe diseño web Smart TV diseño web televisores DOM desde PHP enlaces rotos filtros de búsqueda flash flat web design formularios sitio web fragmentos enriquecidos función de autocompletar futuro de la realidad aumentada html HTML5 html5shiv inbound marketing Initializr interfaces Web para televisores javascript jobs jQuery Mobile Mapbox maquetado html/css maquetador web masonry layout menú de navegación menú desplegable Metodologías ágiles Modernizr MVC Navegación por teclado oferta laboral OpenStreetMap paginas de Facebook Paper js Paper js framework personas Phishing plan de QA Polyfills polymer portfolio-destacados portfolio-inicio programacion de CMS Programadores WordPress página de contacto página de error 404 que es Backbone.js Realidad aumentada Resultados instantáneos server-side skeuomorphic design sliders y usabilidad soporte Internet Explorer Storytelling Underscores usabilidad usabilidad buscadores user-centered design ux velocidad de carga web Vendor prefixes ventajas jQuery Mobile Ventanas integradas versiones antiguas de Internet Explorer WAI-ARIA web components web imprimible Web Semántica WordPress para ecommerce