Three.js-ESP Documentation. Versión latest

Documentos relacionados
Editor Gráfico GIMP en Blender

API CANVAS HTML Y JAVASCRIPT. EJEMPLOS. DIBUJAR CÍRCULOS, FORMAS, GRÁFICOS, ANIMACIONES, JUEGOS, ETC. (CU01195E)

Práctica #7 PRIMITIVAS Y CLASES DE MATERIAL CON THREE.JS

PREPARANDO EL ENTORNO DE DESARROLLO. DESCARGAR E INSTALAR NOTEPAD++ COMO EDITOR DE CÓDIGO (CU00708B)

DESCARGAR E INSTALAR EL NAVEGADOR. VENTAJAS DE GOOGLE CHROME. FIREFOX, TAMBIÉN ENTRE LOS MEJORES (CU00710B)

Ejercicios - Introducción al desarrollo web para móviles

INGENIERIA INVERSA APLICADA A LA ANATOMÍA ANIMAL

Aplicaciones 3D con WebGL

Ejercicios - Introducción a Sencha Touch

P/. Factura electrónica D/. Manual de usuario

Ejercicio 1 - La primera imagen

Ejercicios - HTML5 y CSS3

Taller de Videojuegos con HTML 5 Creación del Videojuego Space Invaders

En el primer tema vimos donde encontrar plantillas para nuestra web, descargarla y descomprimirla para ver el contenido del paquete de la plantilla.

CONSTRUCTORES JAVASCRIPT. CREAR OBJETOS VACÍOS. AÑADIR PROPIEDADES Y MÉTODOS. OBJETOS ÚNICOS O SINGLETON. EJEMPLOS (CU01145E)

Librerías JavaScript Processing.js

Fotografía é Imagen - FotoMix (Composición de Imágenes)

INTERNET. Uso de navegadores

Taller de Videojuegos con HTML 5 Animación de objetos con HTML 5

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION

GPU - Procesadores de vértices

MG- Shade. Guía de usuario. Universidad de Málaga

DESARROLLO DE APLICACIONES INTERACTIVAS EN 3D CON WEBGL Y THREE.JS

Introducción al desarrollo web (idesweb)

Taller: Adobe Flash. Tutorial 2: LA PELÍCULA PRINCIPAL: ELEMENTOS Y PROPIEDADES

Ejemplos de JavaScript

Módulo E: Reportes. Objetivo del Módulo:

Descarga e Instalación CCleaner

Fernando Lacunza.

Taller de Videojuegos con HTML 5 Creación del Videojuego Memoria

Ponerle los valores es tan fácil como seleccionar el objeto que queremos (en este caso el cubo grande) y en Physics le marcamos la barra FLUID

1. GeoGebra aplicado a Geometría sintética GeoGebra

TALLER DE PROGRAMACIÓN

Puede renderizar formas sin necesidad de solevarlas antes. Hay tres pasos básicos en la renderización de una forma:

IMAGE JAVASCRIPT. NEW IMAGE. COMPLETE, NATURALWIDTH. OBTENER TODAS LAS IMÁGENES DE UNA WEB CON DOCUMENT.IMAGES (CU01186E)

TEST TICO 2º BACHILLERATO

Módulo F: GRÁFICAS. Brindar una herramienta que permita la representación gráfica de información generalmente numérica

Instalar Cape Pack. Requerimientos del sistema. Instalar el Programa

Sunday, August 18, 13. Flash básico

ARCHIVOS DE EXTENSIÓN JS. INCLUIR JAVASCRIPT EN WEBS REFERENCIANDO UN ARCHIVO EXTERNO CON SRC (CU01110E)

Conceptos básicos de Dreamweaver CS3

Sistema de Coordenadas Personales

Duración en horas: 40 OBJETIVOS DEL CURSO

Presentación de la formación y del formador 01:51

Introducción a la Informática Año XVII, No 05, Mes 09 de Añoxx. Universidad Tecnológica de Pereira. ISSN Ejemplos de JQuery

1. Herramientas para organizarnos

TRUECRYPT. QUÉ ES? PROCESO DE INSTALACIÓN.

Texto en movimiento. <MARQUEE> Texto que se desplaza </MARQUEE>

TUTORIAL 2 FPS. Física y Colisionadores. Crear un cubo básico que cae

Aplicaciones Google. -- Formularios Web en Google Drive. Fecha creación: 17/02/2017. Fecha revisión: 17/02/2017. Revisión: 01

LÍNEAS SEPARADORAS. ETIQUETA <HR>. COMENTARIOS EN HTML. ATRIBUTOS SIZE, WIDTH, NOSHADE (DEPRECATED). EJEMPLOS (CU00716B)

Desarrollo de un Prototipo de Librería Gráfica para las etapas de

Angular es un framework, diseñado por Google, de tipo MVW (Model View Whatever) para el frontend.

Tutorial Javafx + Inkscape + Netbeans

Guía de descarga e instalación de OpenOffice en Windows con imágenes.

Como el resto de aplicaciones de Office, PowerPoint puede arrancarse de distintas formas. Vamos a utilizar la siguiente:

CREAR UN DASHBOARD CON PENTAHO BI-SERVER. Dashboard Pentaho con CDE. Jortilles.com

MODIFICACIÓN DE UNA UNIDAD DIDÁCTICA DE DESCARTES

UNIDADES DE MEDIDA CSS. RELATIVAS O ABSOLUTAS. PULGADA IN, CM, MM, PUNTO PT, PICA PC, PIXEL PX, PORCENTAJE, EM, EX. (CU01024D)

Programación web para móviles

Introducción a los Sistemas Gráficos 3D

Construcción de interfaces de usuario, usando: Bootstrap 4, HTML, Imágenes

EJERCICIO PASO A PASO. CONSULTAS SIMPLES OBJETIVO. PRACTICAR LAS OPERACIONES DE CREAR, EJECUTAR Y GUARDAR UNA CONSULTA SIMPLE.

Identificar cuál es la estructura de una página Web y sus principales secciones. Desarrollar una página Web en un editor.

DISEÑO ASISTIDO POR ORDENADOR. GOOGLE SketchUP 8. 3ª parte

Para instalar esta extensión abre Google Chrome y entramos en esta página:

HTML es el lenguaje que se emplea para el desarrollo de páginas de internet.

MANUAL PARA CREAR NUESTRA PAGINA WEB EN DREAMWEAVER

Lección Misc01: Composición de Imágenes y Manejo de Transparencia

04 Nuestro Primer modelo 3D

Tema 4: Viendo en 3D

ÍNDICE ALFABÉTICO. Índice alfabético

CURSO SOBRE LA PDi SMART USO DEL SOFTWARE NOTEBOOK

ÍNDICE ALFABÉTICO. Índice alfabético

Tutorial de Fireworks MX 2004

Introducción a WebGL JUAN CARLOS CONDE RAMÍREZ COMPUTER ANIMATION

Tutorial de enlace entre Formulario Web y Servicio Web REST. Programación en Internet

Introducción al Modelado Virtual 3D

Ubuntu Nvidia driver problema tras actualizar

Práctica 3: Presentaciones con OpenOffice I

DISEÑO WEB AVANZADO CON HTML 5 Y CSS3

CÓMO DESCOMPRIMIR UN ARCHIVO DESDE EL EXPLORADOR DE WINDOWS XP

Manual de uso de Editor V.

Parte 2.1. El aplicativo Asistente para la confección de documentación técnica.

DISEÑO WEB AVANZADO CON HTML5 Y CSS3 MODALIDAD TELEFORMACIÓN HORAS: 40

Al utilizar las características nuevas del CSS no es necesario la parte de programación que antes era necesaria usando para ello JavaScript.

JAVASCRIPT CREATEELEMENT, CREATETEXTNODE, APPENDCHILD. MODIFICAR PROPIEDAD ONCLICK CON JAVASCRIPT (CU01140E)

Variantes en Documentos de Venta WhitePaper Febrero de 2007

Programas: Multimedia (Video) DVDStyler (Editor de DVD)

Apéndice C. Manual de usuario.

EJERCICIO PASO A PASO. CREAR FORMULARIOS OBJETIVO.

COLEGIO PABLO DE TARSO IED CONSTRUCCION DE PROYECTOS DE VIDA PRODUCTIVOS DREAMWEAVER UNO- PRÁCTICAS DOC RAUL MONROY PAMPLONA

Crear documentos de texto en Google Docs. Avanzado

PRIMEROS PASOS EN Sketch Up. DPTO DE TECNOLOGÍA Profesora Sol Murciego IES 8 de Marzo (Alicante)

Plataforma de Firma Electrónica

Ejemplo de estructura de Wiki

PIZARRA DIGITAL INTERACTIVA

APLICACIÓN 1: Saludo

Transcripción:

Three.js-ESP Documentation Versión latest 08 de marzo de 2017

Índice general 1. Presentación 3 2. Preparando el terreno 5 3. Conceptos básicos 7 4. Creando una escena 9 5. Añadiendo objetos 13 6. Movimiento 17 I

II

Tutorial en español que explica como utilizar la libreria Three.js, para crear y mostrar gráficos animados por ordenador en 3D en un navegador Web Introducción: Índice general 1

2 Índice general

CAPÍTULO 1 Presentación Que es una librería en Programación Es un fragmento de codigo que ya está hecho y puedes utilizar en tu proyecto, añadiendo funciones o mejorando las existentes. Que nos ofrece Three.js Nos permite crear y mostrar gráficos animados por ordenador en 3D en un navegador Web. Entre sus características, están las siguientes: Efectos: anaglifo, bizco y la barrera de paralaje. Escenas: añadir y eliminar objetos en tiempo de ejecución Cámaras: perspectiva y ortográfica Animación: armaduras, cinemática directa, cinemática inversa, morphing y fotogramas clave. Luces: ambiente, dirección, luz de puntos y espacios, sombras: emite y recibe. Shaders:reflejos en la lente, pase profundo y una extensa biblioteca de post-procesamiento Objetos: mallas, partículas, sprites, líneas, cintas, huesos y otros. Geometría: plano, cubo, esfera, toroide, texto en 3D y otras Exportación e importación: Los gráficos 3D se pueden crear desde Blender. Para que sirve? Es capaz de generar escenas 3D con WebGL*, Canvas (2D) y SVG, y utilizando la potencia de JavaScript, podemos interactuar con la animación desde el telcado, el ratón o incluso desde una WebCam. WebGL1 es una especificación estándar que está siendo desarrollada actualmente para mostrar gráficos en 3D en navegadores web. El WebGL permite mostrar gráficos en 3D acelerados por hardware (GPU) en páginas web, sin la necesidad de plug-ins. 3

4 Capítulo 1. Presentación

CAPÍTULO 2 Preparando el terreno Para poder utilizar Javascript o cualquiera de sus librerías, no necesitamos instalar nada, pero si habilitar en el navegador la utilización de WebGL. Google Chrome Paso 1: Abre el navegador y en la barra de direcciones escribe: chrome://flags/ Paso 2: Desde esta página podemos habilitar soporte adicional al navegador web, en nuestro caso para WebGL, necesitas habilitar los siguientes experimentos: WebGL (Importante) Ignorar la lista de renderización por software (Opcional si no funciona con el primero) Canvas 2D acelerado por GPU (opcional) Paso 3: Reinicia el navegador. Firefox Paso 1: Abre el navegador y en la barra de direcciones escribe: about:config Paso 2: Desde esta página podemos habilitar soporte adicional al navegador web, en nuestro caso para WebGL, necesitas habilitar los siguientes experimentos: webgl.force-enabled. (importante) layers.acceleration.force-enabled > solo en windows gfx.direct2d.force-enabled > solo en windows Paso 3: Reinicia el navegador. Una vez habilitado, abre esta página. get.webgl.org, te debería salir algo así: 5

Three.js Para poder utilizar la librería de Three.js, hace falta descargarla y añadirla en la carpeta del proyecto. Descargar la última versión. Una vez descargado, descomprimir en la carpeta en la que tengamos el proyecto. Solo utilizaremos el archivo three.min.js, que está en la carpeta build, hay que ponerlo en una carpeta que llamaremos js, en la que guardaremos todos los archivos.js. 6 Capítulo 2. Preparando el terreno

CAPÍTULO 3 Conceptos básicos Empecemos a diseñar nuestro proyecto Que vamos a hacer Para este tutorial haremos un proyecto en el cual aparecerá un cubo que podremos mover por la escena. Partes del proyecto Vamos a desgranar el proyecto en diferentes objetos, explicando cada uno: Canvas > Canvas (lienzo en inglés) es un elemento HTML que permite la generación de gráficos dinámicamente. El objeto canvas puede ser accedido a través de JavaScript, permitiendo generar gráficos 2D, juegos, animaciones y composición de imágenes. Escena > Una escena es un espacio tridimensional en el que puedes añadir objetos, interactuar con ellos y moverte por el. Render > Un render es el objeto WebGL donde la tarjeta gráfica pintará todos los gráficos. Un mundo 3D (escena) puede ser enorme, pero en pantalla sólo se pintará aquello que quede dentro del encuadre de la cámara. Ésto es lo que llamaremos render. Camara > Una escena puede contener tantas cámaras como deseemos, pero sólo se podrá utilizar una de ellas para renderizar la escena en un momento dado. Una cámara puede ser posicionada y rotada tantas veces como queramos.para definir una cámara hay que tener en cuenta qué tipo de proyección queremos tener. Three.js nos proporciona tres tipos de proyecciones: Proyección paralela, cámara del tipo OrthographicCamera Proyección cónica, cámara del tipo PerspectiveCamera Proyección combinada, cámara del tipo CombinedCamera, y que permite cambiar entre la proyección cónica y paralela en tiempo de ejecución. 7

La OrthographicCamera es una perspectiva que respeta el tamaño de los objetos, independientemente de la distancia a la que se encuentren de la cámara. La PerspectiveCamera es la que deforma los objetos según la distancia y posición que se encuentren con respecto a la cámara, tal y como ocurre en el mundo real. Figura > Una figura es la cosa que quieres pintar en la pantalla. Un punto, Una línea, un triángulo, Un cuadrado. Un cubo. Un coche. Three.js llama a este tipo de objeto como Mesh. Para crear una figura, Three.js necesita dos cosas: Una geometría y un material. Introducción: La geometría es la lista de vértices y caras que forman una figura determinada. Three.js permite crear geometrías de muy diversas formas, como puedes encontrar en su documentación. Hay clases para definir figuras vértice a vértice, a mano, pero también hay clases que nos dibujan cubos, esferas o conos. Los materiales son la piel de las figuras, sirven para definir de qué color es cada cara de una figura y cómo la luz actúa en dicha cara. Al igual que con las geometrías, Three.js nos proporciona un montón de clases para crear distintos tipos de materiales según el efecto que queramos tener. 8 Capítulo 3. Conceptos básicos

CAPÍTULO 4 Creando una escena Separaremos la parte estética, que contiene el canvas con la parte lógica que contendrá la manipulación del cubo. Parte estética Estará en el archivo index.html, y será el archivo ejecutable. <!DOCTYPE html> <html> <head> <title>cubo en three.js</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <script src="js/three.min.js"></script> <script src="js/javascript.js"></script> <!-- archivo que contendrá la parte lógica -- > </head> <body onload="webglstart();"> <div id="canvas" align="center"></div> </body> </html> Parte lógica Estará en el archivo javascript.js, está dentro de la carpeta js. var escena; var camara; var render; function startescena(){ //Render 9

render = new THREE.WebGLRenderer(); // definimos el renderizador render.setclearcolor(0x000000, 1); // el colorde limpieza, negro var canvaswidth = 500; // tamaño del canvas var canvasheight = 500; // tamaño del canvas render.setsize(canvaswidth, canvasheight); document.getelementbyid("canvas").appendchild(render.domelement); // indicamos que el render pinte la escena en el div canvas //Escena escena = new THREE.Scene(); // definimos la escena //Camara camara = new THREE.PerspectiveCamera(45, canvaswidth / canvasheight, 0.2, 150); // definimos la camara camara.position.set(0, 0, 0); // situamos la cámara en las coordenadas absolutas camara.lookat(escena.position); // le indicamos a la cámara que mire al centro de la escena. escena.add(camara); // añadimos la cámara a la escena } function renderescena(){ render.render(escena, camara); // para dibujar la escena } function webglstart() { //función llamada cuando se carga la página (onload) startescena(); renderescena(); } Respecto a la cámara, para crear una PerspectiveCamera necesitaremos poner cuatro opciones: Ángulo del campo de visión en grados Ratio de aspecto, que normalmente es la relación entre el WIDTH y el HEIGHT del canvas donde se va a renderizar la imagen Distancia mínima de dibujado Distancia máxima de dibujado Resultado Si abrimos el archivo index.html en el navegador, veremos algo como esto: El canvas negro es la escena, y se ve negro ya que no hemos añadido ningún objeto. 10 Capítulo 4. Creando una escena

4.3. Resultado 11

12 Capítulo 4. Creando una escena

CAPÍTULO 5 Añadiendo objetos Ahora ya tenemos la escena, pero vacía. En three.js hay dos grandes tipos de figuras, las geométricas o vectoriales, que las puedes generar desde el propio three.js, y las que generas con un editor de gráficos 3D, como blender. Figuras geométricas Las figuras geometrícas que genera three.js son de las más fáciles de usar. Vamos a dibujar un cubo: Material Crear un material, necesitamos utilizar la clase MeshBasicMaterial, que necesita que le indiquemos el color hexadecimal con el que pintar la figura. Vamos a hacer 6 materiales, uno por cara. var cubomateriales = [ new THREE.MeshBasicMaterial({color:0x33FF00}), new THREE.MeshBasicMaterial({color:0x00CCFF}), new THREE.MeshBasicMaterial({color:0xFF0000}), new THREE.MeshBasicMaterial({color:0xFFCC00}), new THREE.MeshBasicMaterial({color:0x99FFFF}), new THREE.MeshBasicMaterial({color:0xFFFFFF}) ]; var cubomaterial = new THREE.MeshFaceMaterial(cuboMateriales); Creamos un THREE.MeshFaceMaterial,que contiene los 6 materiales. Figura var cubogeometria = new THREE.BoxGeometry(2, 2, 2); cubo = new THREE.Mesh(cuboGeometria, cubomaterial); cubo.position.set(0, 0, -7.0); escena.add(cubo); 13

Creamos la geometría del cubo, usando CubeGeometry. Hay que pasar tres valores: Dimensiones de su ancho (x) Dimensiones de su alto (y) Dimensiones de su profundidad (z) A la clase new THREE.Mesh, hay que añadir la geometría, y el material. Según el orden de los colores puesto en el material, cambiará la disposición de estos. La distribución de colores sigue este patrón: - cara izquierda - cara derecha - cara superior - cara inferior - cara frontal - cara posterior con position.set cambiamos las coordenadas del cubo, y con escena.add lo añadimos a ella. El cubo lo tenemos que añadir dentro de la función startescena, quedando así: function startescena(){ //Render render = new THREE.WebGLRenderer(); // definimos el renderizador render.setclearcolor(0x000000, 1); // el colorde limpieza, negro var canvaswidth = 500; // tamaño del canvas var canvasheight = 500; // tamaño del canvas render.setsize(canvaswidth, canvasheight); document.getelementbyid("canvas").appendchild(render.domelement); // indicamos que el render pinte la escena en el div canvas //Escena escena = new THREE.Scene(); // definimos la escena //Camara camara = new THREE.PerspectiveCamera(45, canvaswidth / canvasheight, 0.2, 150); // definimos la camara camara.position.set(0, 0, 0); // situamos la cámara en las coordenadas absolutas camara.lookat(escena.position); // le indicamos a la cámara que mire al centro de la escena. escena.add(camara); // añadimos la cámara a la escena //Cubo var cubomateriales = [ new THREE.MeshBasicMaterial({color:0x33FF00}), new THREE.MeshBasicMaterial({color:0x00CCFF}), new THREE.MeshBasicMaterial({color:0xFF0000}), new THREE.MeshBasicMaterial({color:0xFFCC00}), new THREE.MeshBasicMaterial({color:0x99FFFF}), new THREE.MeshBasicMaterial({color:0xFFFFFF}) ]; var cubomaterial = new THREE.MeshFaceMaterial(cuboMateriales); var cubogeometria = new THREE.BoxGeometry(2, 2, 2); cubo = new THREE.Mesh(cuboGeometria, cubomaterial); cubo.position.set(0, 0, -7.0); escena.add(cubo); Resultado Si abrimos el archivo index.html en el navegador, veremos algo como esto: 14 Capítulo 5. Añadiendo objetos

Figuras vectoriales Consiste en indicar todos los vectores y caras que contendrá la figura. Esta opción es util para hacer objetos no regulares. Nosotros haremos un cuadrado. tenemos que indicar la cordenada de inicio y de final, de cada cara: var cuadradomaterial = new THREE.MeshBasicMaterial({ color:0x8080ff, side:three.doubleside }); var cuadradogeometria = new THREE.Geometry(); cuadradogeometria.vertices.push(new THREE.Vector3(-1.0, 1.0, 0.0)); cuadradogeometria.vertices.push(new THREE.Vector3( 1.0, 1.0, 0.0)); cuadradogeometria.vertices.push(new THREE.Vector3( 1.0, -1.0, 0.0)); cuadradogeometria.vertices.push(new THREE.Vector3(-1.0, -1.0, 0.0)); cuadradogeometria.faces.push(new THREE.Face4(0, 1, 2, 3)); cubo = new THREE.Mesh(cuadradoGeometria, cuadradomaterial); cubo.position.set(0, 0, -7.0); escena.add(cubo); Resultado Si abrimos el archivo index.html en el navegador, veremos algo como esto: 5.3. Figuras vectoriales 15

16 Capítulo 5. Añadiendo objetos

CAPÍTULO 6 Movimiento Ya tenemos la escena, y un objeto. Ahora toca hacer que se mueva el cubo. Creamos la función animarescena() Primero añadiremos una función, que se ejecutará cada pocas milésimas de segundo, en la que indicaremos que nuestro cubo rote. Tenemos que añadir la variable cubo al principio del archivo javascript.js, para poder utilizarlo en cualquier parte de nuestro código. Antes de la función startescena(), pondremos esta función: window.requestanimframe = ( function(){ return window.requestanimationframe window.webkitrequestanimationframe window.mozrequestanimationframe function( callback ){ window.settimeout(callback, 1000 / 60); }; } )(); Con esta función, conseguiremos que se ejecute la función animarescena() ciclicamente. function animarescena(){ requestanimframe(animarescena); // para ejecutar ciclicamente cubo.rotation.y+= 0.002; // rotamos el cubo en el eje y 0.002 unidades de medida. } renderescena(); Solo nos falta añadir a la función webglstart() una llamada a nuestra nueva función. 17

Tiene que quedar así: var escena; var camara; var render; var cubo; window.requestanimframe = ( function(){ return window.requestanimationframe window.webkitrequestanimationframe window.mozrequestanimationframe function( callback ){ window.settimeout(callback, 1000 / 60); }; } )(); function animarescena(){ requestanimframe(animarescena); // para ejecutar ciclicamente cubo.rotation.y+= 0.02; // rotamos el cubo en el eje y 0.02 unidades de medida. } renderescena(); function startescena(){ //Render render = new THREE.WebGLRenderer(); // definimos el renderizador render.setclearcolor(0x000000, 1); // el colorde limpieza, negro var canvaswidth = 500; // tamaño del canvas var canvasheight = 500; // tamaño del canvas render.setsize(canvaswidth, canvasheight); document.getelementbyid("canvas").appendchild(render.domelement); // indicamos que el render pinte la escena en el div canvas //Escena escena = new THREE.Scene(); // definimos la escena //Camara camara = new THREE.PerspectiveCamera(45, canvaswidth / canvasheight, 0.2, 150); // definimos la camara camara.position.set(0, 0, 0); // situamos la cámara en las coordenadas absolutas camara.lookat(escena.position); // le indicamos a la cámara que mire al centro de la escena. escena.add(camara); // añadimos la cámara a la escena //cubo var cubomateriales = [ new THREE.MeshBasicMaterial({color:0x33FF00}), new THREE.MeshBasicMaterial({color:0x00CCFF}), new THREE.MeshBasicMaterial({color:0xFF0000}), new THREE.MeshBasicMaterial({color:0xFFCC00}), new THREE.MeshBasicMaterial({color:0x99FFFF}), 18 Capítulo 6. Movimiento

new THREE.MeshBasicMaterial({color:0xFFFFFF}) ]; var cubomaterial = new THREE.MeshFaceMaterial(cuboMateriales); var cubogeometria = new THREE.BoxGeometry(2, 2, 2); cubo = new THREE.Mesh(cuboGeometria, cubomaterial); cubo.position.set(0, 0, -7.0); escena.add(cubo); } function renderescena(){ render.render(escena, camara); // para dibujar la escena } function webglstart() { //función llamada cuando se carga la página (onload) startescena(); animarescena(); renderescena(); } Resultado Si abrimos el archivo index.html en el navegador, veremos como el cubo rota: 6.2. Resultado 19

20 Capítulo 6. Movimiento