Creando la Tardis

      Como me gusta mucho la serie Dr. Who y su máquina del tiempo (T.a.r.d.i.s.), decidí mostrarles a los chicos como generar un modelo partiendo de planos en un espacio 3D WEBGL.

Creando una TARDIS

En éste ejemplo realizaremos con algunos objetos una TARDIS, la cabina del tiempo del Dr. Who (soy un fan de esa serie 🤓). Para ello comenzaremos creando una Esfera de tamaño 1000 con la textura de las estrellas de fondo como se ve en las linea 23 y 26, las líneas 24 y 25 permiten rotar los objetos con el mouse.



En las líneas 31, 34, 37 y 39 creamos un plano pero en la línea 30 usamos scale(2,3,2) que indica que todos los objetos tendrán el doble del tamaño de ancho y profundidad, pero el triple de alto. 

  El plano es de tamaño 100, pero las dimensiones finales con el scale serán 200,300,200 (ancho, alto, y profundidad respectivamente).

En la línea 36, rotateY(PI/2) indica que luego de crear los 2 primeros planos se debe rotar 90 grados para los próximos 2 planos (PI/2 es el equivalente en RADIANES a 90 grados sexagesimales).   

Techo y la base

Para crear el techo y el piso, necesitamos necesitaremos 1 caja para la parte inferior y 3 para la parte superior.
  La primera que figura en la línea 43 para la base, pero en cuanto a los de la parte superior (líneas 46,48 y 50) con tamaño 105x105 de base por 10 de alto. Los próximos son más pequeños restándole 10 a cada dimensión: 100x100x10 y 90x10x90. 



Lámpara del Techo

   Para la lámpara usaremos 2 cilindros (línea 53 y 56), con 2 parámetros entre los paréntesis, el primero es el radio de la base y el segundo el alto del mismo.
  El último plano, simplemente tiene el cartel de Policebox como textura (linea 63).






//Código de la tardis para el Sketch.Js

var imagen1;
var imagen2;
var imagen3;
var imagen4;
var imagen5;
 function setup() {
    createCanvas( windowWidth , windowHeight , WEBGL  );
    imagen1 = loadImage ("imagenes/tardis0.jpg");
    imagen2 = loadImage ("imagenes/tardis1.jpg");
    imagen3 = loadImage ("imagenes/tardis2.jpg");
    imagen4 = loadImage ("imagenes/tardis3.jpg");
    imagen5 = loadImage ("imagenes/estrellas.jpg");
 }
function draw() {
   texture(imagen5)
  rotateY(mouseX/100)
  rotateX(mouseY /100)
  //fondo
sphere(1000)
  texture(imagen3)
    rotateY( frameCount /20)
  translate(0,0,100)
   scale(2, 3 ,2)
  //paredes
plane(100 )
         texture(imagen2)
  translate(0,0,-100)
   plane(100 )
  translate(50,0,50)
  rotateY( PI/2 )
  plane(100 )
  translate(0,0,-100)
  plane(100 )
  //base
  texture(imagen1)
  translate(0,50,50)
 box(105,10,105)
  //techo
   translate(0,-100,0)
 box(105,10,105) 
   translate(0,-3,0)
 box(100,10,100) 
  translate(0,-3,0)
 box(90,10,90)
  fill(255)
  translate(0,-3,0)
                //lampara
cylinder(8,20) texture(imagen1) translate(0,-10,0) cylinder(9,2) //cartel texture(imagen4) translate(-54.1,20,0) rotateY( -PI/2 ) scale(2, 0.2 ,2) plane( ) }