Comienza con WebVR

Sep 13, 2025
Cómo
[dieciséis]

WebVR es una API de JavaScript para crear experiencias de realidad virtual 3D en el navegador. Esto requiere baja latencia, alta velocidad de fotogramas y excelente rendimiento. Su objetivo es facilitar que cualquiera pueda meterse en las experiencias de VR reduciendo las barreras a la entrada.

WebGL permite a los desarrolladores crear experiencias ricas en la calidad de la consola que rinden en tiempo real en dispositivos móviles y navegadores de escritorio (solo asegúrese de obtener el Alojamiento web derecho para una capacidad óptima). El navegador casi universal y el soporte del dispositivo lo convierten en un enfoque perfecto para los desarrolladores web que desean crear experiencias de VR increíbles. Aquí, le mostramos cómo empezar con WebVR. En la parte inferior de este artículo, encontrará algunos recursos útiles para promover su conocimiento.

En nuestro tutorial, usaremos WEBVR en combinación con tres.js - una opción de ir a los muchos Herramientas de diseño web Disponible para 3D y VR en la web. Es gratuito y de código abierto, ligero e innumerables sitios web galardonados, lo usan. Aparte de tener un fondo de JavaScript, puede sumergirse en este tutorial sin ningún conocimiento previo y crear su primera experiencia WebVR. El objetivo de este tutorial es iniciar e inspirarlo para continuar explorando esta tecnología muy emocionante. ¿Quieres algo más sencillo? Probar un Creador de sitios web .

01. Habilitar la bandera de WEBVR en Chrome [sesenta y cinco]

WebVV es todavía una tecnología experimental y requiere que HTTPS se ejecute en su servidor. No se ejecutará en dispositivos móviles sin un Polyfill.github.com/immersive-web/webvr-polyfill . Sin embargo, puede ejecutar contenido localmente en Chrome para probar y construir. Asegúrese de habilitar la bandera de Chrome WebVR. Escribe Chrome: // banderas / habilitar-webvr en su navegador de URL, y luego haga clic en Habilitar para activarlo. Es posible que necesite reiniciar Chrome también.

02. Instale el complemento de emulación API de WebVR. [sesenta y cinco]

Para probar localmente en su escritorio y evitar la necesidad de un dispositivo, hay un gran complemento que puede usar en Chrome por ClickTorelease. El plugin emulará un Auriculares VR Para usted y le permite moverse y girar los auriculares virtualmente ( Consiguelo aqui ).

03. Abra la barra de herramientas del dispositivo en las herramientas de desarrollador [sesenta y cinco]

Device toolbar within dev tools

[dieciséis] Esto imita un dispositivo móvil o auricular.

Para emular un dispositivo móvil o auricular, funciona mejor para usar la emulación del dispositivo en herramientas de cromo. Abra las herramientas del desarrollador en Chrome, y alternar en la barra de herramientas del dispositivo para ver la vista móvil, gire a horizontal y seleccione la emulación del teléfono favorito.

04. Crear un archivo HTML básico [sesenta y cinco]

A continuación, debe configurar un archivo HTML básico. Puede configurar CSS externos y archivos JavaScript o incluir en línea para simplificar. Three.js 'Renderer Class creará un & lt; lienzo & gt; elemento para ti. Agregue el siguiente código a su index.html expediente:

 & lt; html lang = "en" & gt;
& lt; cabeza y gt;
& lt; title & gt; Webvr Demo & Lt; / Title & GT;
& lt; meta charset = "UTF-8" & gt;
& lt; meta name = "viewport" content =
"Ancho = ancho de dispositivo, escala inicial =
1.0, usuario-escalable = no "& gt;
& lt; estilo & gt;
html, cuerpo {margen: 0; relleno: 0;
Desbordamiento: oculto; }
& lt; / estilo & gt;
& lt; / cabeza y gt;
& lt; cuerpo y gt;
& lt; script & gt;
// el código irá aquí
& lt; / script & gt;
& lt; / body & gt; 

05. Incluir clases de tres.js. [sesenta y cinco]

Incluya un enlace a la biblioteca Three.js en la cabeza de su archivo, ya sea alojada externamente, o la descargue desde el repositorio de Three.js. También necesitará la nueva clase de Clase WEBVR y BoxlineGeometry para este tutorial. Puedes encontrar la biblioteca y las clases de apoyo. aquí . Nota: El código en este tutorial se ha probado en la última versión de THE.JS V99.

 & lt; script src = "libs / three.min.js" & gt; / lt; / script & gt;
& lt; script src = "libs / webvr.js" & gt; & lt; / script & gt;
& lt; script src = "libs / boxlinegeomeome.js" & gt;
& lt; / script & gt; 

06. Añadir variables globales [sesenta y cinco]

Entre las etiquetas de script para el código, agregue las siguientes variables globales para acceder a la cámara, la escena, los rendimientos, los objetos y el raycaster. También agregue un PEGAR Variable para realizar un seguimiento de los objetos que se intersectan por la mirada de la cámara. Esto demostrará cómo saber qué está mirando un usuario en VR.

 var reloj = nuevo tres.clock ();
VAR Contenedor, Cámara, Escena, Renderista, Habitación,
Crosshair, golpeó;
var objetos = []; // colección de objetos
var num = 100; // Número de objetos
var raycaster = nuevo tres.raycaster (); 

07. Crea una escena 3D [sesenta y cinco]

Vas a agregar una escena 3D básica, que será el contenedor para sus objetos. La escena es la etapa que representará con la cámara. Todas las presentaciones en 3D tendrán una escena o etapa de algún formulario. Lo que está en esa etapa y en vista de la cámara es lo que verá el usuario. Agregue el siguiente código para agregar una escena:

 // Crea un objeto de escena
var escena = nuevo tres.scene (); 

08. Añadir una cámara en perspectiva [sesenta y cinco]

A continuación, necesitas agregar una cámara. Usará la cámara en perspectiva, destinada a escenas 3D. El primer atributo es el campo de la vista de la cámara. El segundo es la relación de aspecto ( Ancho / altura ). Luego, puede indicar el plano cercano de recorte y las distancias del plano de recortes lejanas, que definen lo que debe ser visible para la cámara.

 // Crea Cámara
cámara = nuevo tres.perpectiveCamera
(70, ventana.innerwid / window.innerheight,
0.1, 1000);
escena.add (cámara); 

09. Añadir un renderizador y elemento de lona. [sesenta y cinco]

El renderizador maneja el dibujo de los objetos en su escena que son visibles para la cámara. Establezca la propiedad antialias en fiel para obtener bordes suaves en el objeto. El renderizador crea un dominamiento , que en realidad es un HTML & lt; lienzo & gt; elemento. Luego puedes agregar al cuerpo. Tenga en cuenta el uso de la nueva bandera activada por VR del renderizador.

 Renderer = NUEVO TRES.WEBGLRENDERER (
{antialias: verdadero});
render.setpixelratio (ventana.
devicepixelratio);
render.setsize (ventana.innerwidth, ventana.
innerheight);
render.vr.enabled = verdadero;
Documento.body.appendchild (Renderer.
dominacion); 

10. Añadir cámara cruzada [sesenta y cinco]

Para ayudar a los usuarios a orientarse hacia el punto de enfoque de la cámara, es una buena práctica agregar un ícono de sierra o objetivo frente a la cámara. Puede agregarlo directamente al objeto de la cámara para que siempre sea donde debería serlo.

 Crosshair = Nuevo Three.Mesh (
Nuevo Three.RBUBUFFERGEOMETRY (0.02, 0.04, 32),
Nuevo Three.MeshBasicMaterial ({
Color: 0xFFFFFF,
Opacidad: 0.5,
transparente: cierto
})
)
crosshair.position.z = - 2;
cámara.add (Crosshair); 

11. Crea un objeto de habitación VR (opcional) [sesenta y cinco]

A continuación, cree un objeto de habitación simple. Esto es bueno para darle al usuario un sentido de orientación en el mundo VR. Crea una caja de habitación sencilla con líneas para indicar las paredes, el piso y el techo.

 Room = NUEVO TRES.LEESEGMENTOS (
Nuevo Tres.boxEtraometría (6, 6, 6, 10, 10, 10),
NUEVO TRES.LINEBASICMATERALIAL ({COLOR:
0x808080}));
room.position.y = 2;
escena.add (habitación); 

12. Añadir luces a la escena. [sesenta y cinco]

Para encender la escena, usaremos una luz simple hemisferio y una luz direccional. Le dará una bonita visibilidad ambiental y un sombreado realista de una fuente de luz uniforme también.

 SCENE.ADD (Nuevo Three.Hemispherightight
(0x806060, 0x404040));
var luz = new three.directionallight
(0xFFFFFF);
luz.position.set (1, 1, 1) .normalizar ();
escena.add (luz); 

13. Crea algunos objetos. [sesenta y cinco]

Vas a llenar la habitación con objetos a continuación. Aplícalos al azar alrededor de la habitación. También establecerá la rotación y la escala al azar para la variedad. Puedes agregar un poco más de código en el siguiente paso, donde dice crear atributos de órbita para habilitar algunas rutas de órbita personalizada.

 var geometría = nuevo tres.boxbuffereometría
(0.15, 0.15, 0.15);
para (i = 0; i & lt; = num; i ++) {
vario var = nuevo tres.meshlambertmaterial
({color: math.random () * 0xffffff});
var objeto = nuevo tres.mesh
(geometría, material);
objeto.position.set (math.random () * 4.0
- 2.0, matemath.random () * 4.0 - 2.0, matemáticas.
aleatorio () * 4.0 - 2.0);
objeto.scale.set (math.random () +. 5, matemáticas.
aleatorio () +. 5, math.random () +. 5);
objeto.rotation.set (math.random () * 2 *
Math.pi, math.random () * 2 * math.pi, matemáticas.
aleatorio () * 2 * math.pi);
// crear atributos de órbita} 

14. Añadir los atributos de órbita a los objetos. [sesenta y cinco]

Para habilitar un buen movimiento de órbita aleatoria, y mantener los objetos de 'escapar de la habitación', asignaremos algunos datos de ángulo inicial (en radianes) y una distancia. Permite una forma sencilla de animar los objetos en el bucle de renderizado después.

 // Crear atributos de órbita
// Distancia de Calc como constante y asignar a
objeto
var a = nuevo tres.vector3 (0, 0, 0);
var b = objeto.position;
var d = a.distanceto (b);
objeto.distance = d;
objeto.radians = math.random () * 360 * Matemáticas.
PI / 180; // ángulo inicial
objeto.radians2 = math.random () * 360 * Matemáticas.
PI / 180; // ángulo inicial
objeto.radians3 = math.random () * 360 * Matemáticas.
PI / 180; // ángulo inicial
sala.add (objeto);
objetos.push (objeto); 

15. Añadir una ventana Cambiar el manipulador [sesenta y cinco]

Mientras probamos nuestra aplicación WEBVR, cambiaremos el tamaño de la pantalla, moviéndolo, y así sucesivamente. Es una buena idea tener un manejador que ajuste las dimensiones del área de render y actualiza cosas para mantenerlo llenando la pantalla correctamente y se ve bien.

 ventana.addeventlistener ('tamaño de tamaño',
onewindowresize, falso);
función onwindowresize () {
Cámara.aspect = window.innerwidth / ventana.
inernheight;
camera.UpdateProyZYMAYMATRIX ();
renderer.setsize (ventana.innerwidth,
ventana.innerheight);
} 

16. Crea el botón WEBVR. [sesenta y cinco]
Imagen 1 de 2

Non-VR mode

[dieciséis] MODO NO VR

Imagen 2 de 2

In VR mode

[dieciséis] En modo vr

La nueva clase de WebVR de tres.js incluye un botón WEBVR, que maneja alternar y salir del modo VR para nosotros. También se maneja si el dispositivo no admite el modo VR. Puedes incluirlo con este simple código:

 // Three.js Botón webvr para entrar /
Salir del modo VR
Documento.body.appendchild (webvr.createbutton
(renderizador)); 

17. Iniciar el bucle de animación VR [sesenta y cinco]

Típicamente, estarías usando el solicitud de solicitud Para manejar el bucle de renderizado, pero en VR debe usar un controlador de bucle diferente para asegurarse de que todo esté listo para representar y que evite las cuestiones de latencia y renderizar. En su lugar, usa el nuevo setanimationloop y pasar en su función de renderizado.

 // Iniciar el bucle de animación VR
render.setanimationloop (render); 

18. Crea la función de renderizado. [sesenta y cinco]

A continuación, cree una función de renderizado. Si no quiso animar sus objetos o prueba para la cámara / cruzada que se intersecina con objetos, podría usar el siguiente código:

 Función Render () {
// encontrar intersecciones
// animar los objetos
// Render la escena
render.render (escena, cámara);
} 

19. Prueba de intersecciones. [sesenta y cinco]

Para habilitar las pruebas para los objetos que se cruzan el rayo trazado de la cámara en el espacio z, agregue el siguiente código a su bucle de renderizado donde lo comentó en el último paso:

 RayCaster.SetFromCamera ({X: 0, Y: 0},
cámara);
var intersecta = raycaster.intersectobjects
(Room.Children);
if (intersects.length & gt; 0) {
Si (golpee! = se intersecta 
.Object) { Si (golpe) {hit.material.missive. sethex (hit.currenthex); } HIT = Intersige
.Object; Hit.currenthex = hit.material.missive. gethex (); Hit.material.emissive.sethex (0x00ff00); } } demás { if (hit) {hit.material.emissive.sethex (Hit.currenthex); } Golpear = indefinido; }

20. Animar objetos a lo largo de las órbitas. [sesenta y cinco]

A continuación, puede animar sus objetos a lo largo de sus rutas de órbita utilizando este código:

 para (i = 0; i & lt; = num; i ++) {
var o = objetos [i];
o.Rotation.y + =. 01;
Si (I% 2 == 0) {
O.RADIANS + =. 004;
o.Radians2 + =. 005;
O.RADIANS3 + =. 008;
} demás {
O.RADIANS - =. 006;
O.RADIANS2 - =. 005;
O.RADIANS3 - =. 003;
}
o.position.x = (math.cos (O.RADIANS) *
o.distance);
o.position.z = (mathsin (O.RADIANS3) *
o.distance);
o.position.y = (mathsin (O.RADIANS2) *
o.distance * .5);
} 

21. Renderizar la escena webvr. [sesenta y cinco]

Finalmente, puede hacer su escena utilizando las funciones de renderización constantemente. Si aún no ha agregado esta línea, hágalo ahora. Una vez que haya agregado esto, puede probarlo todo y debe ver una reproducción de escena WEBVR en su navegador. También puede verlo en su dispositivo móvil o auriculares VR.

 // Render la escena
render.render (escena, cámara); 

Recursos webvr

Comenzar en WebVR puede ser abrumador. Hemos reunido algunos ejemplos de sitios que utilizan WebVR y recursos para ayudarlo a rodar.

SketchFab homepage

Boceto
Probablemente ya sepa este sitio debido a su increíble galería de activos, pero también tiene un modo de WebVV que le permite navegar en VR.

Un cuadro
Este es un marco de rock-sólido para AR y VR. Maneja los dolores de los falgos y el soporte de dispositivos para usted, incluso lo que le permite prestarle en su navegador para las pruebas. Incluso se abstrae la creación de objetos 3D comunes.

Tres.js
Esta biblioteca tiene numerosos. ejemplos Con código fuente para ayudarlo a ir con WEBVR. Es un punto de partida perfecto.

WebVR
Dado que WebVR es una tecnología emergente, es una buena idea mantenerse al día con los últimos desarrollos. Debe saber qué dispositivos son compatibles y en qué condiciones. Este sitio te ayudará a mantenerse al día. Hay una Página dedicada a los ejemplos. , también.

Y siempre ayuda a tener el derecho. almacenamiento en la nube , también.

Este artículo se publicó originalmente en cuestión 283 de la revista Creative Web Design Design Diseñador web . Comprar emito 283 o suscribir .

Leer más:

  • 7 Tendencias VR de Bonkers que se dirigen a tu manera
  • Empiece con Redux Thunk
  • 11 tendencias web en caliente ahora mismo

Cómo - Artículos más populares

Hojas de caracteres para modeladores 3D: 15 puntas superiores

Cómo Sep 13, 2025

[dieciséis] (Crédito de la imagen: Dahlia Khodur) Las hojas de caracteres son el orden del día en este tutorial, que cubre ..


10 maneras de construir mejores entornos del mundo 3D

Cómo Sep 13, 2025

[dieciséis] [Imagen: Albert Valls Punsich] Si desea permanecer en la cima de su juego como artista en 3D, es importante que s..


Cómo pintar un castillo con SketchUp

Cómo Sep 13, 2025

[dieciséis] Hay un rango de Técnicas de arte Eso puede ayudar con su pintura digital, pero no se está negando esa creaci�..


Diseña un avatar juguetable para un videojuego

Cómo Sep 13, 2025

[dieciséis] Para esto Tutorial de Photoshop , Estaré creando un humano jugable, mujer. Carácter de videojuegos ..


Crea imágenes 3D interactivas con tres.js

Cómo Sep 13, 2025

[dieciséis] Este tutorial de WebGL demuestra cómo crear una simulación ambiental en 3D que muestra lo que sucede con el mundo a medi..


Cómo moverse entre DAZ Studio y Cinema 4D

Cómo Sep 13, 2025

[dieciséis] Moverse entre los programas puede ser confuso. Tiendo a adherirme a cuatro grupos de alimentos: Cinema 4D, Zbrush, Daz Stu..


Cómo crear un carácter 3D estilizado para los juegos

Cómo Sep 13, 2025

[dieciséis] Esta Arte 3d El tutorial se centrará en la creación de un avatar semi-estilizado en el creador de personajes ..


15 consejos para la optimización de dispositivos cruzados

Cómo Sep 13, 2025

[dieciséis] Diseño para todos los dispositivos! Anna Dahlström estará hablando de la importancia de ..


Categorías