3d en processing: 1, Flujo de ejecución

Esta es la primera parte del tutorial de 3d básico en processing. Es una introducción general y he intentado q sirva independientemente del resto de los pasos: no contiene nada de 3d.

Para probar el código basta con copiarlo y pegarlo en el editor*. Al principio de cada tutorial incluiré enlaces de las funciones utilizadas a la referencia en castellano de processing, amablemente traducida por Pedro Alpera.

*Nota: Al pegar en el editor de processing ejemplos de código copiados de una página web éste se cuelga (probablemente por los datos de formato), por lo que es mejor copiar el código fuente en los applets o simplemente escribirlo.

Funciones utilizadas

rect()
fill()
stroke()

1. Flujo de ejecución:

Dado que en processing carecemos de la típica línea de tiempo de flash o director, el orden de ejecución del código sólo va a estar determinado por el orden en que lo escribamos (estamos hablando de código simple, sin funciones ni objetos). Lo primero que hayamos escrito se ejecutará primero, y así sucesivamente.

Ejemplo 1:


// SECUENCIALIDAD DEL CÓDIGO EN PROCESSING 00
// El cuadrado de arriba a la izquierda es el primero
// en ser dibujado, y queda más al fondo.
rect(15, 15, 50, 50);
// el siguiente queda en la mitad
rect(25, 25, 50, 50);
// y el de más abajo es el último y queda al frente
rect(35, 35, 50, 50);

El resultado es el siguiente:
3 cuadrados blancos solapados sobre fondo gris

Aunque parezca trivial, no lo es. Si por ejemplo quisieramos crear un cuadrado y rellenarlo de un color, lo haríamos en ese orden, ¿no?


rect(15, 15, 50, 50);  // crea un cuadrado
fill(0); // lo rellena del color negro...?

Efectivamente, no. Como se comprobará si se prueba el ejemplo, el cuadrado permanece blanco (que es el color en el que se dibuja por defecto). En processing es necesario hacerlo al revés: primero se especifica una propiedad y luego el objeto al que ha de ser aplicada.


fill(0);   // ahora si, especificamos el color negro.
rect(15, 15, 50, 50);   // y se aplica a el cuadrado.

2. Persistencia de las propiedades

Una vez establecida una propiedad (como fill() o color() ), ésta se aplica a todos los objetos siguientes (hasta que se especifique lo contrario):


fill(0); //especificamos el color negro
rect(15,15, 34, 37); // creamos un cuadrado
rect(25,25, 10, 50); // y otro. los dos son negros.

¿Cómo se especifica lo contrario? Pues simplemente llamando de nuevo a la misma propiedad y cambiando el valor…


fill(0); //especificamos el color negro
rect(15,15, 34, 37); // creamos un cuadrado
rect(25,25, 10, 50); // y otro. los dos son negros.
fill(127); //ahora el relleno es gris
rect(10,10, 20, 20);  // y este cuadrado es gris

También se pueden anular algunas propiedades mediante comandos especiales (por ejemplo, noFill() para quitar el relleno o noStroke() para… bueno, creo que se entiende).

Un segundo ejemplo con todos los pasos combinados.
Ejemplo 2:


// SECUENCIALIDAD DEL CÓDIGO EN PROCESSING 01
// Dado que el código es secuencial,
// si queremos aplicar una propiedad a un
// objeto, tenemos que especificarla antes.
// Especificamos un color de relleno
fill(150);
// el primer cuadrado se rellena con ese color
rect(50, 25, 45, 45);
// especificamos un color de linea
stroke(240);
// Como no hemos cambiado el color de relleno,
// el siguiente cuadrado mantiene el gris del primero.
// El color de linea si ha cambiado.
rect(55, 30, 35, 35);
 // Ahora cambiamos el color de relleno
fill(200);
// El tercer cuadrado tiene un relleno distinto
// y mantiene el color de linea de el anterior.
rect(60, 35, 25, 25);
// y finalmente quitamos el relleno
noFill();
// y creamos un último rectangulo
rect(45, 45, 50, 50);

El resultado es este:
4 cuadrados con bordes y rellenos de diferentes colores

Y eso es todo por ahora.

Para saber más:

Acabando este tutorial me encontré uno muy parecido en los foros de processing, y es que quizás sea un poco inútil hacer más tutoriales sobre una herramienta con tantos recursos para aprender. En cualquier caso aquí está:
drawing statements and execution flow, part I

Hasta el siguiente.

Por supuesto, si tienen alguna duda, corrección, comentario o sugerencia, no duden en utilizar el formulario destinado a tal efecto. Justo debajo de esta línea :)

tags:No tags

7 Responses to “3d en processing: 1, Flujo de ejecución”

  1. Federico Carra Says:

    Muy buena información. Yo soy más diseñador que programador, pero siempre es gratificante ver información de este tipo en español y online. Muchas gracias por mantenernos informados! :D

  2. jesus gollonet Says:

    Gracias a usté por sus amables comentarios. Y disculpe… por alguna extraña razón mi wordpress había pensado que su comentario era spam y lo tenía pendiente de moderación. Ahora aparece :)

  3. adriana Says:

    Hola. Soy una estudiante de dieño grafico. Para mi proyecto final de carrera utilizaré processing, y necesitaría saber como se renderiza en una pelicula quicktime. Gracias

  4. jesús gollonet Says:

    buenas, adriana.

    pues… Cuando lo he necesitado simplemente he guardado imágenes de cada frame con saveframe() y luego en otro software monto el video.

    Para renderizar un quicktime directamente probablemente necesites una librería de java… yo que tú echaría un vistazo en el foro de processing, que creo recordar haber visto algún hilo sobre el tema.

    Siento no ser de más ayuda.

    Saludos.

  5. Carlos Londoño Says:

    Hola Jesus, es un alivio encontrar a alguien que investigue processing en español, me llamo Carlos Londoño, te cuento; soy estudiante de artes plásticas en la universidad de Antioquia en Medellín Colombia, mi propuesta artística a sido realizada desde flash, pero cuando me intere de processing quise crear un grupo interdisciplinario de ingenieros en electrónica y de sistemas, pero no con muy buen éxito, eran personas muy ocupadas y con otros perspectivas muy diferentes de lo que yo quería, pero igual aprendí de ellos, hoy me di cuenta que me toca aprender solo, mas aun para lo que quiero realizar, mi propuesta artística es una obra interactiva que involucra el cuerpo humano en movimiento, que mas adelante te contare en detalle de que trata si este correo te llega, la cosa es que ya tengo instalado processing en mi pc, tengo instalado quick time de java ,winvdig, se que esto es indispensable para acceder con éxito a las librerías donde se utiliza cámara web para capturar imagen en movimiento. , nunca he trabajado con processing, asi que quiero tener todo listo para arrancar con esta fabulosa experiencia pero quiero contar con personas que me ayuden con mis dudas, escribí hace poco a Zchari libermam, pero fue muy poca información la que me pudo dar para resolver problemas, espero podamos hacer contacto, . mucha suerte Jesus y gracias.

  6. Carlos Londoño Says:

    mi correo es decimapuerta2000@yahoo.es,
    mil gracias

  7. monk Says:

    hola como estan todos mi nombre es jose andres moncada, soy estudiante de 5to semestre de diseño de medios interactivos de la universidad icesi en cali, como uds trabajo en processing y tengo cierto conocimiento, me pareceria interezante poder compartir dudas y crecer en conocimiento en grupo; estare revisando el foro.. gracias mucha suerte

Leave a Reply