Está en la página 1de 4

11/Extend.

En la última década, Processing se ha utilizado para hacer vídeos musicales para Radiohead y
R.E.M., para hacer ilustraciones para publicaciones como Nature y el New York Times, para
producir esculturas para exposiciones en galerías, para controlar un muro de vídeo de 120×12
pies, para tejer jerséis y mucho más. Processing tiene esta flexibilidad gracias a su sistema de
bibliotecas.

Una biblioteca de Processing es una colección de código que extiende el software más allá de sus
funciones y clases principales. Las bibliotecas han sido importantes para el crecimiento del
proyecto, porque permiten a los desarrolladores añadir nuevas características rápidamente. Al ser
proyectos más pequeños y autónomos, las bibliotecas son más fáciles de gestionar que si estas
funciones estuvieran integradas en el software principal.

3D.
Many of the functions introduced in this book have variations for work- ing in 3D. For instance,
the basic drawing functions point(), line(), and vertex() simply add z-parameters to the x- and y-
parameters that were covered earlier. The transformations translate(), rotate(), and scale() also
operate in 3D.

Image export.
Las imágenes animadas creadas por un programa de Processing pueden convertirse en una
secuencia de archivos con la función saveFrame(). Cuando saveFrame() aparece al final de
draw(), guarda una secuencia numerada de imágenes en formato TIFF de la salida del programa
llamada screen-0001.tif, screen-0002.tif, y así sucesivamente, en la carpeta del boceto. Estos
archivos pueden importarse a un programa de vídeo o animación y guardarse como un archivo de
película. También puedes especificar tu propio nombre de archivo y formato de archivo de
imagen con una línea de código como esta:

saveFrame("output-####.png");

Hello Arduino.
Arduino es una plataforma de creación de prototipos electrónicos con una serie de placas
microcontroladoras y el software para programarlas. Processing y Arduino comparten una larga
historia juntos; son proyectos hermanos con muchas ideas y objetivos similares, aunque abordan
ámbitos distintos. Debido a que comparten el mismo editor y entorno de programación y una
sintaxis similar, es fácil pasar de uno a otro y transferir los conocimientos de uno a otro.

Los datos pueden ser transferidos entre un boceto de Processing y una placa Arduino con un
poco de ayuda de la Biblioteca Serial de Processing. Serial es un formato de datos que envía un
byte a la vez. En el mundo de Arduino, un byte es un tipo de datos que puede almacenar valores
entre 0 y 255; funciona como un int, pero con un rango mucho menor. Los números más grandes
se envían dividiéndolos en una lista de bytes y volviéndolos a ensamblar después.
Textures.
El ejemplo anterior es un simple cuadrado con cuatro
vértices, un contorno blanco y un relleno gris. Para
aplicar una imagen a la forma, tenemos que seguir tres pasos.

Cargar una imagen en un objeto PImage.|


PImage img;

void setup() {
size(640, 360, P3D);
img = loadImage("berlin-1.jpg");
}

Llamar a texture(). La función texture() debe ser llamada entre beginShape() y endShape() y
antes de cualquier llamada a vertex(). La función texture() recibe un solo argumento, la PImage
que se aplicará como textura.

void draw() {
background(0);
translate(width / 2, height / 2);
stroke(255);
fill(127);
beginShape();
textura(img);
}

Una vez que hemos especificado la textura en sí, tenemos que definir el mapeo de la imagen a la
forma en sí. Esto es un problema sencillo cuando la forma es rectangular (cuatro esquinas de una
forma se asignan a cuatro esquinas de una imagen), pero se vuelve más complejo cuando tienes
muchos más vértices en una forma (como en el ejemplo del globo terráqueo de arriba). Para
definir el mapeo, se añaden dos argumentos más (normalmente denominados u y v) a cada
llamada a vertex(). Por defecto, las coordenadas utilizadas para u y v se especifican en relación
con el tamaño de la imagen en píxeles, pero esta relación puede cambiarse con textureMode().
Además, cuando las texturas están en uso, el color de relleno se ignora. En su lugar, utilice tint()
para especificar el color de la textura que se aplica a la forma.

Lighting.
En P3D, también puede manipular la iluminación de los elementos de su escena. Por supuesto, al
igual que el dibujo en tres dimensiones es una ilusión, la adición de la iluminación a un boceto
de Processing es una simulación de la idea de la iluminación del mundo real con el fin de crear
una variedad de efectos. Esto es particularmente útil ya que algunos objetos (como una esfera) no
parecen tridimensionales hasta que son iluminados.

Si no quiere entrar en los detalles de establecer una iluminación personalizada para una escena
3D, puede utilizar la función lights() de Processing, que establece la iluminación por defecto.

Para establecer una iluminación personalizada para su escena hay cuatro tipos diferentes de
luces:

 ambientLight() -- La luz ambiental no viene de una dirección específica, los rayos de luz
han rebotado tanto que los objetos están iluminados uniformemente desde todos los
lados. Las luces de ambiente se utilizan casi siempre en combinación con otros tipos de
luces. Una luz ambiental se especifica con un color RGB y, opcionalmente, con una
ubicación xyz para la luz. Por ejemplo, se puede añadir una luz ambiental azul a una
escena de la siguiente manera:

ambientLight(0,0,255);

 directionalLight() -La luz direccional proviene de una dirección y es más fuerte cuando
golpea una superficie de forma directa y más débil si golpea en un ángulo suave. Después
de golpear una superficie, una luz direccional se dispersa en todas las direcciones. Una
luz direccional se especifica con un color RGB y un vector xyz que define una dirección
para la luz. Por ejemplo, una luz verde que proviene de la parte inferior de la escena se
puede añadir a una escena de la siguiente manera:

directionalLight(0, 255, 0, 0, -1, 0);

 spotLight() -- Un foco es similar a una luz direccional, pero permite controlar el efecto de
iluminación con mayor especificidad. Al igual que antes, la luz se define con un color y
una dirección. Sin embargo, también requiere una ubicación xyz para la luz, así como un
ángulo que controla el cono del foco. Un valor de ángulo pequeño dará como resultado
una luz muy enfocada y un ángulo mayor dará como resultado una mayor cantidad de luz.
Finalmente, un último argumento determina la concentración de la luz, es decir, la
inclinación de la luz hacia el centro del cono de luz. Estos son los argumentos que
necesitará para una luz roja concentrada, situada delante de la ventana de procesamiento
y apuntando directamente hacia atrás.
El color rojo: 255, 0, 0
Situado delante de la ventana de procesamiento: width/2, height/2, 400
Apuntando hacia atrás: 0, 0, -1
Un ángulo pequeño: PI/4
Concentración: 2

Todo junto se ve así


spotLight(255, 0, 0, width/2, height/2, 400, 0, 0, -1, PI/4, 2);
 pointLight() -- Una luz puntual es un foco con un cono de 180 grados. Para crear un
punto de luz, sólo necesitas un color RGB y una posición.

pointLight(255, 0, 0, width/2, height/2, 400);

También podría gustarte