Krypton Solid

La última tecnología en raciones de 5 minutos

Construyendo 3D en el navegador con Three.Js

Construyendo 3D en el navegador con Three.Js

Tenemos capacidades en nuestros navegadores con las que no hubiéramos soñado hace 5 o 10 años. Se pueden ejecutar mundos de juegos en 3D completos en el navegador y los sitios web interactivos pueden ser experiencias más inmersivas.

Con una determinada empresa de realidad virtual comprada por una determinada empresa de redes sociales, ahora es el momento perfecto para empezar a trabajar con 3D. Sorprendentemente, ahora podemos crear 3D con JavaScript puro, incluidas mallas y materiales.

Por supuesto, aunque es posible, requiere una gran cantidad de código, y ahí es donde entra Three.js, que nos permite construir entornos 3D de forma sencilla y con menos código.

Compatibilidad del navegador

Desafortunadamente, debido a que es nuevo, 3D no es compatible con todos los navegadores. Actualmente estamos restringidos a Chrome, Safari y Firefox.

A medida que pase el tiempo, el soporte en IE mejorará, pero por ahora necesitará un respaldo para los devotos de Microsoft.

Empezando

Lo primero que debemos hacer es dirigirnos al sitio web de three.js y descargue la última versión de la biblioteca.

A continuación, haga referencia a él en el encabezado de su documento como lo haría con cualquier otro archivo JavaScript, y estamos listos para comenzar.

Creando nuestra primera escena

Lo primero que debemos hacer para renderizar cualquier cosa con three.js es crear una escena, una cámara y un renderizador. Comenzando con una escena:

var scene = new THREE.Scene();

A continuación, necesitamos una cámara. Piense en esto como el punto de vista desde el que el usuario está mirando. Three.js en realidad tiene muchas opciones aquí, pero en aras de la simplicidad, usaremos una cámara en perspectiva:

var camera = new THREE.PerspectiveCamera(100, window.innerWidth / window.innerHeight, 0.1, 1000);

Este método toma cuatro parámetros: el primero es el campo de visión, el segundo es la relación de aspecto (recomendaría siempre basar esto en la ventana del usuario), el plano de recorte cercano y, por último, el plano de recorte lejano. Estos dos últimos parámetros determinan los límites del renderizado, por lo que los objetos que están demasiado cerca o demasiado lejos no se dibujan, lo que desperdiciaría recursos.

A continuación, debemos configurar WebGL Renderer:

var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement );

Como puede ver, lo primero aquí es crear una instancia del renderizador, luego establecer su tamaño en la ventana gráfica del usuario, finalmente lo agregamos a la página para crear un lienzo en blanco para que podamos trabajar.

Añadiendo algunos objetos

Hasta ahora, todo lo que hemos hecho es configurar el escenario, ahora vamos a crear nuestro primer objeto 3D.

Para este tutorial, será un cilindro simple:

var geometry = new THREE.CylinderGeometry( 5, 5, 20, 32 );

Este método también toma 4 parámetros: el primero es el radio de la parte superior del cilindro, el segundo es el radio de la parte inferior del cilindro, el tercero es la altura, el último es el número de segmentos de altura.

Hemos configurado las matemáticas del objeto, ahora necesitamos envolverlo en un material para que realmente se vea como algo en la pantalla:

var material = new THREE.MeshBasicMaterial( { color: 0x0000ff, wireframe: true} );

Este código agrega un material simple para el objeto, en este caso un color azul. Yo he puesto estructura metálica a cierto porque mostrará el objeto con mayor claridad una vez que empecemos a animarlo.

Finalmente, necesitamos agregar nuestro cilindro a nuestra escena, así:

var cylinder = new THREE.Mesh( geometry, material ); scene.add( cylinder );

Lo último que debemos hacer antes de renderizar la escena es establecer la posición de la cámara:

Como puede ver, el JavaScript involucrado es extremadamente simple, eso se debe a que Three.js se ocupa de todas las cosas complicadas, por lo que no tenemos que hacerlo.

Renderizando la escena

Si prueba el archivo en un navegador ahora, verá que no sucede nada. Eso es porque no le hemos dicho a la escena que se renderice. Para renderizar la escena necesitamos el siguiente código:

function render() {
  requestAnimationFrame(render);
  renderer.render(scene, camera);
}
render();

Si ahora echa un vistazo al archivo en su navegador, verá que de hecho representa un cilindro, pero no es muy emocionante.

Para mejorar realmente el valor de 3D, debe comenzar a animar, lo que podemos hacer con un par de pequeños cambios en nuestra hacer función:

function render() {
  requestAnimationFrame(render);
        cylinder.rotation.z += 0.01;
        cylinder.rotation.y += 0.1;
  renderer.render(scene, camera);
}
render();

Si prueba en su navegador ahora, verá un cilindro 3D que se anima correctamente.

Conclusión

Si desea ver una demostración y jugar con el código, puede hazlo aquí.

Como puede ver, la creación de esta escena (ciertamente muy simple) tomó menos de dos docenas de líneas de código y hay muy pocas matemáticas involucradas.

Si echa un vistazo al ejemplos en el sitio web three.js verá un trabajo increíble que se ha realizado.

Esta increíble biblioteca para JavaScript realmente ha reducido el nivel de entrada para codificar 3D hasta el punto de que cualquier persona que pueda escribir JavaScript básico puede participar.

Imagen destacada / miniatura, Imagen 3D a través de Shutterstock.

Deja un comentario

También te puede interesar...

Las 6 mejores plataformas de crowdfunding de 2022

Patreón Con recaudación de fondos y opciones de suscripción fáciles de usar para artistas y otros creadores que buscan «patrones», más de 200 000 creadores confían en la plataforma Patreon, incluidos podcasters, músicos, artistas y escritores.

Definición de variación de rendimiento

¿Qué es la variación del rendimiento? La variación del rendimiento es la diferencia entre la producción real y la producción estándar de un proceso de producción o fabricación, en función de los insumos estándar de

Tecnología a seguir en 2002

COMENTARIO – La tentación de recordar el año pasado con amor y nostalgia es grande. Pero me resistiré y lo esperaré. Sin duda, 2001 fue un gran año para la tecnología. La lista de cosas

Cómo actualizar Ubuntu | Krypton Solid

Llevas unas semanas probando Ubuntu y te has sorprendido gratamente: no esperabas que un sistema operativo gratuito y poco promocionado por los fabricantes de hardware fuera tan rápido, estable y lleno de aplicaciones interesantes. También

¿Qué es la cadena de suministro de servicios?

La cadena de suministro de servicios es la parte de la cadena de suministro dedicada a brindar servicios a los productos. Aborda el suministro de piezas, materiales, personal y servicios necesarios para proporcionar un servicio

Sidekick Sync trae Exchange en el Sidekick LX 2009

Lo he revisado antes T-Mobile Sidekick LX 2009 y una característica que mencioné que surgirá en el futuro y que atraerá clientes comerciales es el soporte de Exchange. Microsoft adquirió Danger el año pasado, así

La TSA manejó mal el contrato de Unisys, informa IG

La Administración de Seguridad en el Transporte ha engañado seriamente a la administración del proyecto de un contrato de mil millones de dólares para el programa de servicios administrados por tecnología de la información, dijo

Cómo crear un paquete de Clash Royale

Últimamente, a menudo tomas tu teléfono inteligente o tableta para divertirte choque real, el famoso juego de estrategia de Supercell que incorpora muchas mecánicas de defensa de torres (aunque con las necesarias diferencias). Poco a

Cómics de la semana # 389

Cómics de la semana # 389 Cada semana presentamos un conjunto de cómics creados exclusivamente para WDD. El contenido gira en torno al diseño web, los blogs y las situaciones divertidas que encontramos en nuestra

2 invitaciones más de OnePlus One

Banner para cookies Utilizamos cookies y otras tecnologías de seguimiento para mejorar su experiencia de navegación en nuestro sitio, mostrar contenido personalizado y anuncios dirigidos, analizar el tráfico en el sitio y comprender de dónde

Samsung y LG ven talento en China

El personal de LG Electronics, en su mayoría diseñadores de productos en la división móvil, está abandonando la compañía voluntariamente debido a ofertas de gigantes tecnológicos chinos como Xiaomi, dicen los miembros de LG. Las