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.

CONTENIDO RELACIONADO  La verdadera historia de la compatibilidad con Vista

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.

CONTENIDO RELACIONADO  Startup diseña drones para proteger a los animales en peligro de extinción de los cazadores furtivos

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...

Microsoft afirma estar «empleado» con Windows 10 Mobile

El director de Microsoft Windows and Devices, Terry Myerson, reafirmó el compromiso de la compañía con la problemática plataforma Windows 10 Mobile. En un correo electrónico interno, obtenido por Windows Central, Myerson aborda las preocupaciones

El experto del gobierno dice que es de código abierto

Un experto de la sede de seguridad informática del gobierno del Reino Unido, CESG (Communications-Electronics Security Group), apoyó a Linux junto con el modelo de código abierto para el desarrollo de software como la arquitectura

925 vs 920 muestras con poca luz

Nokia parece haber resuelto finalmente los problemas de balance de blancos y claridad. A continuación se muestran ejemplos de imágenes de 925 frente a 920. Como puede ver, 925 se ve bastante mejor con un

Ys 8: Lacrimosa of Dana llegará a PC a finales de mes

Ys 8: Lacrimosa of Dana tuvo algunos inconvenientes el año pasado en su camino hacia un lanzamiento que finalmente se pospuso a principios de 2018 debido a algunos problemas de localización inesperadamente arraigados. Ahora que

GTA 5: Dónde encontrar la base militar

Sólo hay una base militar en Grand Theft Auto 5: Fort Zancudo. La base militar de GTA 5 está escondida en las afueras del condado de Blaine, San Andreas, y hay buenas razones para visitarla.

Teléfonos Nokia X: No mucho para este mundo

Nokia, un socio de Microsoft dedicado desde hace mucho tiempo que pronto los venderá a la división de telefonía móvil, presentó una línea de teléfonos inteligentes con Android en el Congreso Mundial. Los teléfonos Nokia

Samsung agrega nuevas esferas de reloj a Galaxy Watch 4

Samsung está trayendo algunas características nuevas para sus relojes inteligentes Galaxy Watch 4 en una nueva actualización, anunció la compañía el miércoles. Quizás el cambio más significativo son las cuatro nuevas caras del reloj, que

Plantas bandera de Hitachi Data Systems en SA

El proveedor de almacenamiento Hitachi Data Systems ha decidido establecer una oficina local en el sur de Australia. Hitachi Data Systems dijo hoy en un comunicado que la nueva oficina tiene como objetivo brindar un

Toyota deja de vender varios modelos en EE. UU.

Toyota ha pedido a los concesionarios estadounidenses que no vendan ciertos modelos debido a las últimas preocupaciones de seguridad que afectan la reputación del fabricante de automóviles. Toyota Avalon, Camry, Corolla, Sienna, Tacoma y Tundra

Los principales socios comerciales de China

A pesar de la guerra comercial entre Estados Unidos y China El volumen de comercio exterior aumentó un 9,7% en 2018 alcanzó un récord de 30,51 billones de yuanes (4,5 billones de dólares). Registró un