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( )
}