Transcripciones
1. Video de introducción y textura: Hola a todos, Mi nombre está pegado y esto es genitivo color y textura. Cuando aprendí por primera vez arte generativo, estaba sobre la luna por las posibilidades de las creaciones procedimentales. Pero sólo cuando empecé a empujar por ideas
listas para usar es cuando empecé a desarrollar un estilo. Siempre que aprendí nueva técnica, vuelvo a bocetos viejos e implementarlos, averiguando cómo amalgamar los dos proyectos. En este curso, discutiremos cómo puedes entregar profundidad y semi realismo en tu trabajo con métodos de texturizado y coloración
fáciles de implementar. Podría ocho lecciones diferentes sobre formas en que puedes enviar mensajes de texto y colorear tu diseño generativo. Y uno proyectos finales que muestran
la combinación de múltiples procedimientos en una obra de arte final. En cuatro de las lecciones, examinaremos cuatro formas de agregar textura a tu trabajo, desde parecerse a formas dibujadas a mano hasta agregar sombras desplegables gráficas simples. Y por último, no una paleta de colores descontada, perfectamente aleatorizada. Pero en este curso, te mostraré para técnicas de
coloración que elevarán tu trabajo al siguiente nivel, crearemos una obra de arte completa desde cero para cada método, demostrando cómo había pensado emplearlas y darte ideas de aplicación. Creo que eso es suficiente para una introducción. Entonces, empecemos.
2. Textura 01: Recreating de Recreating: En las dos primeras lecciones para la textura número uno, quería hablar de recrear las formas primitivas son las formas nativas en el procesamiento, como círculos y rectángulos, específicamente círculos y rectángulos. Entonces en esta primera lección hablaremos de círculos y luego en la siguiente lección hablaremos de recrear rectángulos. Entonces para éste, vamos a crear una nueva clase, y esa clase va a ser el círculo. Entonces para empezar, sólo lo
haremos, lo llamaremos blob. Ahora en esta clase vamos a definir todas las propiedades que
vamos a necesitar para crear un círculo usando puntos. Si lo piensas, un círculo tiene un punto central y luego tiene un radio. Y más tarde, los puntos que van a crear el perímetro del círculo. Entonces para los puntos que crean el perímetro, eso va a ser una matriz de carrozas que van a ser posiciones de x e y. y entonces también necesitamos la resolución para conocer la cantidad de puntos que necesitamos para crear ese círculo. Para eso, solo crearé un entero y solo lo voy a llamar Raz para su resolución. Y también vamos a necesitar centro x y centro y para el centro del círculo. Y entonces también dijimos que vamos a necesitar un radio. Entonces no olvidemos eso. De acuerdo, y para empezar, vamos a crear embalse aquí. Y voy a inicializar esas variables son esas propiedades en el constructor. Entonces lo haré y rojos. Y entonces también quiero definir el eje central y Central por qué después. Entonces no los voy a encontrar aquí. centro x va a ser igual a este centro x, luego centralizar lo mismo. Y ahora inicializaremos x e y. esos van a ser rojos de longitud. Porque x e y, solo
voy a ser las posiciones y la cantidad de ellas va a ser la resolución de ese círculo. Y para el radio, voy a empezar con valores aleatorios. Voy a quedarme con valores aleatorios en realidad. Mostrar para mí va a ser de 10 a 50 ahí flotadores antes de empezar a crear o mostrar el círculo usando los puntos x e y, tengo que inicializar los valores para x e y. así que voy a crear una función init. Y en esta función van a tener un bucle. Y eso por supuesto va a ser menos que la resolución. Y luego vamos a incrementar en uno solo normalmente. Ahora aquí dentro vamos a crear los puntos. Si has visitado mi Instagram o YouTube, entonces habrías visto cómo puedes crear puntos alrededor del círculo. O si has tomado mi curso Polar Grid. Pero generalmente vamos a crear esos puntos alrededor del círculo girando usando coseno y seno. Entonces vamos a utilizar esas funciones para,
para dibujar los puntos alrededor del círculo utilizando los ángulos de los puntos dentro de ese círculo. medida que pasemos por esto, podrás entender cómo funciona esto. Por lo que para el primero va a ser acento posiciono. Y para esto vamos a usar el coseno el ángulo. Y crearemos el ángulo en un poco. Y luego lo vamos a multiplicar por el radio. Básicamente estamos creando puntos en triángulos y luego girando en base al ángulo de esos triángulos y eso creará el círculo. Por eso la resolución es importante aquí. Porque cuanto mayor sea la resolución, más circular se verá la blob, y cuantos menos sean esos puntos donde, cuanto menor sea
el valor de la resolución, entonces vas a empezar a ver más de un forma hexagonal o una forma de diamante o incluso un triángulo si se baja a tres. Y eso es rotar con valores de uno negativo a uno porque coseno del ángulo, cualquiera que sea el ángulo que se me va a dar valores de uno negativo a uno. Entonces necesito multiplicarlo por el radio para
empujarlo en base a lo grande que quiero que sea el círculo. Por lo que ahora mismo, quiero que el círculo sea un aleatorio, un radio aleatorio de 10 a 50. Por lo que el ancho o el diámetro de este círculo va a ser de 20 a 100. Y luego para y, vamos a hacer seno. El ángulo. Multiplicado por el radio. Y después para empujarlo al centro, vamos a tener, porque esto va a dibujar alrededor del punto cero-cero. Entonces vamos a tener que empujarlo por centro x y centro y. entonces lo que sea
que los defina como, ahí es donde el centro del círculo va a estar al final. Y entonces el ángulo se va a definir dentro del, dentro del bucle for. Y va a ser I. Así que cada punto multiplicado por el ángulo de cada uno de esos rectángulos dentro del círculo. Entonces digamos que tengo seis puntos por resolución. Entonces este bucle va a iterar seis veces, lo que significa que la IA se va a multiplicar por 16 orden para que complete el ángulo de 360. Pero inicialmente no sabemos cuál va a ser la resolución, así que no sabemos qué ángulo poner aquí. Entonces para el ángulo, sólo voy a llamarlo rebanada. Y luego lo voy a calcular aquí arriba. Y sólo voy a llamarlo rebanada y lo definiré aquí arriba. Simplemente lo agregaré al radio. Por lo que no tenemos demasiadas propiedades el uno encima del otro. Y por aquí voy a dividir 360 por la resolución. 360 es la suma de ángulos en un círculo y luego dividirlo por la resolución me va a dar el ángulo de cada espacio que ese punto va a tomar. Y entonces tengo que convertir esto a radianes porque el coseno y el seno necesitan radianes para trabajar. Y ahora es el momento de la parte divertida que es exhibir y ver que funciona lo que creamos. Ahora para dibujar el círculo, vamos a necesitar recorrer los flotadores X e Y. Entonces pasaré por el mismo proceso que hicimos en la función init. Vamos a usar covértices. El motivo por el que estoy usando vértices curvos en lugar vértices es porque son más suaves. Por lo que el vértice curvado toma dos valores al igual que un vértice. Y luego le voy a dar x e y y yo también. Lo que necesitas saber de la función de vértice actual es que
necesita para las funciones de vértice actuales para que aparezcan, porque la primera va a ser el punto de control para la primera, y luego la segunda va a ser la primero de la curva. El tercero va a ser el segundo de la curva. Y entonces el último punto, que es el cuarto, va a ser el segundo punto de control. Entonces básicamente una curva Bezier, pero se crea usando una función de vértice curvado, lo que cada punto se dibuja por separado. Ahora ésta va a cuidar parte de sus vértices de curva, puntos de
control y los puntos. Pero si muestro esto, no
vamos a tener un círculo completo. Tenemos que ver esto primero antes de poder resolver el tema. Entonces si voy por aquí y creo un blob y luego inicializo un objeto. Vamos a necesitar una resolución. Entonces sólo voy a hacer seis porque eso es lo más fácil para nosotros de calcular. Y entonces haré anchura dividida por dos para el centro y altura dividida por 2 para central y En lugar de llamar a dos métodos aquí afuera, voy a llamar a una red aquí. Tan solo para que cada vez que inicializamos un objeto, ya está inicializado. Y entonces sólo mostraré éste por aquí. Y necesitamos comenzar la forma y esa forma para cualquier vértice básicamente. Y lo ponemos fuera del bucle for porque queremos comenzar la forma y luego dibujar todos los vértices que necesitamos para luego terminar las formas. Entonces todos estos se van a conectar porque si pones Begin forma dentro de aquí, dentro del bucle for y entrada también. Entonces cada vez que va a comenzar una nueva forma para cada iteración. De acuerdo, Entonces empezaré con un radio de un 100. No voy a empezar con aleatorio, por lo que se puede ver con claridad. Por lo que se puede ver que sólo tenemos 1234 puntos dibujados. Tenemos dos más que dibujar. Entonces cinco está por aquí, y seis por aquí. O en realidad es 1, 2, 3, 4, 5, y finalmente 6. Entonces, dejemos caer puntos. Por lo que podemos verlo. Voy a dibujarlo usando círculos y va a estar en la misma posición. Y entonces le daré un ancho de 20. Por lo que se puede ver con claridad. Y en realidad quitemos el relleno. Cómo está funcionando esto y por qué no tenemos todas las curvas es porque el for-loop tiene cuidando el primer punto de control para la primera curva. Por lo que el punto número 0 actuó como primer punto de control. Y entonces éste va a ser el primero en la curva. Y entonces este va a ser el segundo en la curva, y éste va a ser su punto de control. Ahora mirando al segundo, este va a ser un punto de control para este arranque, para esta curva de inicio. Y entonces este es el final de la curva y estos son sus puntos de control. Y vamos a dar vueltas y vueltas. Entonces si vas a esta parte, entonces no hay curva por aquí porque esto actuó como el punto de control y este es el último punto. Lo que tenemos que hacer ahora para arreglar esto como sumar tres puntos más. Por lo que el primero va a ser antes del bucle. Y ese va a ser el último punto. Por lo que resolución menos 1. Y luego para y también el último punto. Y ahora si corro esto, se
puede ver que ahora tenemos un punto de control para esta curva, que es esta parte. Y como se dibuja antes de la primera, ahora entiende que esto también es una curva y necesitamos otra después. Eso va a ser la salida 0 e y a 0. Porque después de este último punto, necesito que esto exista para que se dibuje esta curva. Entonces ahora este es un punto de control para esta curva. Y ahora tengo una curva final que dibujar, que es ésta. Entonces mientras que el punto de control para
esto, va a ser esto. Entonces este es el número uno. Y si dibujo este vértice de curva en x, o no necesariamente número uno, pero en la posición 1 en la matriz. Ahora si ejecuto esto, está completo. Entonces me voy a pegar, digamos con el sida porque eso es lindo. Círculo no lo hace, ya no ves mucho de los puntos. Ahora este es un buen punto para que animemos esto. Una de las razones por las que quería recrear un círculo en primer lugar es tener un poco de variación. Y para ello, es extremadamente sencillo. Todo lo que tienes que hacer es simplemente crear un método de actualización dentro de tu clase y luego crear una variable. Puedes llamarlo como sea. Pero este va a ser nuestro offset. Y también vamos a bucear. Y vamos a entrar en cada uno de los puntos para moverlo. Entonces para la primera, va a ser x en la posición I más igual a un valor aleatorio de menos offset a offset. Y lo mismo va para y Entonces estamos incrementando lo que sean estos por un valor aleatorio. Por lo que se va a mover hasta que empiece a distorsionar el círculo. Y me sentí ir por aquí y lo hago, bueno, tengo que moverlo a la función de sorteo. Ahora puedo empezar a verlo moverse. Por lo que primero tenemos que restablecer el fondo. Por lo que no dibuja. Y puedes aumentar esto hasta el valor que quieras para las compensaciones. Cuanto más alto sea, más rápido lo va a distorsionar y no volverás al círculo. Tan bajo valor como 0.5 va a mantener esa forma de círculo durante mucho tiempo, pero aún así nos permitirá tener variaciones en el perímetro del círculo. Y tampoco se puede animar, sino simplemente compensar los valores por aquí o cuando se inicializa. No, Para este ejemplo, esta primera sección se trata de crear o recrear el círculo. Pero para la segunda parte, cuando hablé de crear realmente el ejemplo, vamos a hablar un poco más sobre la detección de colisiones. Por lo que la detección del gluten es muy fácil de entender. Es sencillamente, sobre todo para los círculos. Es simplemente encontrar la distancia entre el centro de dos adyacentes o círculos en el mismo espacio. Y viendo si esa distancia entre los dos centros es menor que la suma de los ojos de dos radios. Entonces si hay menos que la suma de los dos radios, eso significa que se están cruzando, lo que significa que están colisionando. Por lo que queremos evitar eso. El modo en que puedes comprobar si dos círculos se están intersecando es. Usando la función dist, que básicamente obtiene la distancia entre dos puntos. Entonces, en realidad creemos eso por aquí. Crearé un método dentro de nuestra clase blob llamado collide. Y ese método va a tomar porque está comprobando la distancia entre sí mismo y otro objeto de la misma clase, entonces necesitamos pasar en un blob también. Entonces esto es algo genial que puedes hacer dentro de clases donde puedes dejar que el objeto de la clase actual que estás usando
interactúe con otra clase o con un objeto de otra clase. Pero aquí sólo lo necesitamos para interactuar consigo mismo o con objetos de la misma clase. Por lo que no necesitamos crear múltiples clases de esto porque ya tenemos la clase misma. Y la forma en que podemos usar esto es así. Entonces si hago flotar y lo llamaré d, esto va a tomar el centro x y centro y de éste ahora mismo. Por lo que sólo podemos llamarlo CX y CY. Y luego se va a comprobar la distancia de este círculo. Entonces la x e y de este círculo dos y x e
y del otro círculo que estamos pasando por aquí. Entonces podemos simplemente hacer otro punto c, dx, y podemos agarrar lo que sea que este objeto tenga de propiedades. Entonces podemos hacer dot cx y luego otro punto ver Y. Y entonces si d es menor que la suma de los dos radios, eso significa el radio que tenemos en este momento, que es R más otro punto r. Y entonces si eso sucede, entonces voy a volver verdad. Eso significa colisionar. Entonces lo que necesito cambiar aquí es el valor de retorno porque ahora no está devolviendo nada, en
realidad está devolviendo un valor booleano. Y luego de lo contrario, o si esto no comprueba lo que necesitaba para devolver falso. Y no necesitamos una declaración else por aquí porque el retorno tipo de sale de la función. Devuelve la función. Ya no llegarás a esta parte. Y ahora si voy por aquí, eliminaré la blob que creé, y luego convertiré esto en un ArrayList. Y te compartiré por qué estoy creando un ArrayList en lugar de una matriz. Entonces voy a llamarlo blobs. Lo inicializaré por aquí. Por lo que sólo voy a hacer nueva ArrayList de tipo blob. Y ahora aquí abajo. Y por eso estoy usando ArrayLists. Solo puedo agregar blobs sin saber cuántas necesito. Por lo que sólo puedo hacer blogs, punto, agregar, nueva blob. Y voy a hacer de ella una resolución seis por ahora. Y entonces lo tendré a ancho aleatorio y altura aleatoria para centro x y centro y. y ahora para mostrar cada enlace va a hacer cuatro pulg. Entonces para blob, blob, blobs, Eso es un montón de blogs y mostrarlo. Entonces ahora sólo los va a sumar porque aún no hemos detectado colisión. Para detectar colisión, simplemente podemos usar un bucle for para
recorrer todos los blogs existentes contra el nuevo agregado. Cómo puedo hacer esto es creando un bucle normal que va desde 02 blobs tamaño menos uno porque no quiero llegar al último. El último es qué? Voy a comprobar contra los otros de la matriz. Y luego voy a aumentar. Y aquí voy a decir, voy a crear el índice para el último bloque que se crearon dentro de esa matriz. Entonces eso va a ser blobs tamaño de punto negativo uno. Entonces esto va a ir menos que este último. Y éste va a ser el último. Y ahora voy a revisar para el blog en posición j contra el otro bloque. Entonces el ojo de gato de punto de Bob. Entonces si el blob en la posición j, que es el último añadido, está chocando con cualquiera de los que están existentes en la matriz ahora mismo que no son el último, por
supuesto, entonces necesito que elimines esa blob. Ahora, cada vez que esto está agregando un blob, va a comprobar si choca con alguno de los existentes y luego lo va a quitar para que ya no exista. Y luego va a bucear y hacer eso una y otra vez. Y ahora se puede ver que nada choca realmente. Si ahora vuelvo a la clase y cambio esto a aleatorio de 10 a 50. Y por eso uso un número más pequeño porque tienen una pantalla muy pequeña. Y ahora tenemos un montón de círculos que no chocan. Si elimino esto, que son las guías, entonces puedo ver que no chocan. El único momento en que van a colisionar como cuando se están distorsionando. Podemos reducir la velocidad para eso porque ahora son más pequeños, por lo que es más evidente. Por lo que solo puedes reducir la velocidad y ahora no los ves moverse tanto. Ahora solo puedes colorearlos al azar. Voy a agarrar un montón de colores que tengo. Puede elegir los colores que quieras. Y también elegí un color para el fondo. Entonces voy a usar eso por aquí. Y por aquí. Si por cierto estás restableciendo por aquí, no necesitas éste. El único motivo por el que lo uso aquí es porque cada vez que se trata de R1, se
puede vislumbrar el fondo que está aquí. Entonces si tienes un fondo negro, entonces puedes vislumbrarlo al principio. No importa, pero si estás guardando cada fotograma, entonces lo vas a ver. Y entonces tengo mis colores por aquí. Simplemente puedo definir el color por aquí, y luego colorear todos los diseños aleatoriamente de la matriz de carbones. Y entonces el índice va a ser uno aleatorio de 0 a colores longitud de punto. Y la razón por la que subo dos colores esa longitud es porque la voy a lanzar en un entero ya que no podemos tener flotador para índices. Y entonces esto lo va a pisar. Entonces sea cual sea este número, va a ser menos uno. Y ahora voy a ir por aquí y el método de visualización, voy a hacer color de relleno y verás los colores aleatorios. También puedes quitar el trazo si quieres, o puedes hacer que el trazo sea blanco. También le darán un aspecto diferente. En la siguiente lección, hablaremos de recrear. rectángulos son una de las formas en que puedes recrear los rectángulos.
3. Textura 01: cuadrados de reacción: En esta lección, vamos a crear un montón de rectángulos usando lo que parece líneas dibujadas a mano. En lugar de usar la función nativa en el procesamiento para empezar a entender cómo se crean las líneas de los rectángulos. Entonces vamos a necesitar empezar con esas líneas. En primer lugar. Voy a crear sólo una función normal. Y aquí antes de crear cualquier clase para ese nuevo objeto, y voy a llamarlo ola. Esto así como garantizar utilizar un vértice curvo con el fin de crear ese movimiento que fluye. Porque los vértices tienden a ser muy Angulares y también necesitaremos un for-loop porque vamos a dibujar, porque los covértices son básicamente puntos y vamos a necesitar múltiples puntos para dibujar una línea. Entonces en lugar de usar la función de línea, estamos usando puntos para dibujar la línea que vamos a usar para dibujar rectángulos. Para eso, también necesitaremos tener una resolución y también necesitaremos tener una posición x e y. Entonces ahora si llamo a onda por aquí, solo
puedo usar una resolución de seis, digamos. Y entonces puedo iniciarlo en 0 para x y luego para y va a estar a la altura dividida por dos, lo que al centro, verticalmente. Y en realidad empecemos
aquí la resolución porque también la vamos a utilizar varias veces. Y entonces una ola también necesitará un ancho o una línea de puntos también va a necesitar un ancho. Entonces voy a crear un ancho aquí arriba, o un valor para el ancho. Y luego más tarde cuando
vayamos verticalmente, también vamos a ir con altura. Pero por ahora sólo vamos a dibujar una línea horizontalmente en la pantalla para que podamos ver cómo realmente está funcionando esto. Por lo que sólo definiré con una v aquí. Entonces hagámoslo el ancho de la pantalla. Y entonces también vamos a necesitar un hueco. El motivo por el que vamos a necesitar la brecha, porque tenemos puntos, pero necesitamos saber qué parte van a estar para trazar la línea a lo largo del ancho aunque solicitamos. Entonces primero, dibuja desde 0.02 ancho, vamos a necesitar saber cuánto va a ser el espaciado entre cada uno de los puntos y que podemos encontrar por. Entonces si solo defino brecha que vamos a encontrar dividiendo el ancho por la resolución. Entonces sea cual sea el ancho, si lo divido por el número de puntos que tengo, entonces obtengo la cantidad de huecos para espaciar los puntos. Básicamente como dibujar una cuadrícula. Entonces cuando dibujas cuadrícula, quieres saber cuánto va a ser el ancho de cada celda. Para saber cuánto movimiento vas a necesitar ir hacia la derecha o hacia abajo con el fin de crear esas celdas en la cuadrícula. Entonces estamos haciendo lo mismo, pero lo vamos a hacer con sólo una línea. Entonces iniciando forma y luego terminando forma porque estamos usando vértices curvos. Y luego voy a hacer un bucle. Y entonces aquí va a ser vértice curvado en exactamente lo que hacemos con las rejillas. Entonces lo haré, lo multiplico por el hueco, que suele ser el ancho de celda. Entonces exactamente igual que una celda en una cuadrícula o cómo dibujarías rejillas. Pero necesitamos agregarle x porque x no siempre va a estar en 0 como una cuadrícula, lo
vamos a mover a través de la pantalla. Entonces exactamente como hicimos con Cx y CY para el círculo. Pero esta vez va a estar en línea. Y entonces aquí va a ser sólo por qué? Porque sólo lo estamos moviendo en la línea horizontal. Ahora si lo dibujo, tengo la línea. Pero como notan, es exactamente como lo que hicimos con los círculos. A éste le falta unos puntos de control y por lo tanto no está dibujando el vértice de la curva por aquí. Entonces para dibujarlo desde el punto cero, voy a tener que añadir un vértice actual ante él para que actúe como su punto de control. Y eso va a ser un hueco más x No
necesitamos multiplicarnos por yo porque va a ser el primero. Y luego para Y, solo vamos a hacer una y por ahora. Entonces ahora tenemos un punto empezando por aquí. Y para que lo veamos también dibujará un círculo como lo hicimos antes. Y lo voy a poner en la misma posición. Y entonces lo haré 10. Por lo que se ven los puntos. Vemos que tenemos monedas en todas partes que la necesitamos. Y luego para que dibujemos también el último punto. Porque sólo tenemos las brechas. Y en una cuadrícula por lo general solo estás dibujando de esquina y luego el rectángulo o la celda nos va a dibujar tener este último se va a secar también. Pero aquí no tenemos un rectángulo, sólo
necesitamos puntos. Entonces también voy a decir que soy menor o igual, subir. Vía, voy a tener un punto al final también. Y luego para dibujar el del final que sólo voy a decir vértice actual en el de Rey, que es el último multiplicado por la brecha. Y entonces esto va a ser
yY ahora tenemos esto también. Ah, y que no se te olvide agregar la x porque en este momento sólo estamos dibujando de 0, así que no importa, pero después va a importar. Entonces ahora si ajusto el ancho, así que hagámoslo un 100 y ejecutemos esto. Entonces podemos ver que está por aquí. Y si cambio la posición x a ancho dividido por dos, ahora, podemos ver que se está moviendo porque ahora hemos agregado x a cada uno de esos. Entonces nos estamos asegurando de que todo se mueve con la X que lo necesitamos. Por lo que es además de donde el eje, esto va a suceder. Y ahora lo es, lo haces más interesante. Y para hacer la forma de onda nos vamos a encontrar al offset aleatorio cada uno de estos puntos. Sólo lo haré por el y por ahora. Y eso va a ser un valor aleatorio. Yo lo llamaré V offset. En realidad lo ha cambiado a Yoffset. Y luego aquí dentro voy a hacer carga dos veces offset, y vamos a darle un valor de cuatro. Por lo que aleatorio va a ir de 0 a cualquier valor a cuatro. Y no recomendaría copiar y pegar, pero voy a copiar y pegar, hacer este video más corto. Y en realidad algunos de los círculos, ya no los necesitamos. Ahora, cada vez que corra esto, verás que se parece más a una ola. Entonces hagámoslo realmente más grande. Hagámoslo un ancho, y empecemos desde 0 para que lo veas más claro. Y debido a que sólo tenemos una resolución de seis, los puntos están demasiado espaciados. Entonces si hago esto, digamos 16, sólo añadir uno, podemos verlo más curvilíneo. Y luego si aumento el offset para dejar decir 10, y se pueden ver más curvas en nuestra línea. Ahora podemos usar esta línea para crear nuestros rectángulos. Y de esa manera se va a ver más dibujado a mano, pero con un desplazamiento de inquilinos demasiado. Entonces voy a reducirlo a cuatro. Y entonces también reduciré la resolución a algo así como seis porque cuanto más espaciada,
más se asemeja a una sensación dibujada a mano. Porque cada vez que lo estás dibujando, no tiene sentido que todos estemos muy temblorosos y estemos dibujando con las compensaciones de Tumaini. Pero en general la forma en que dibujamos es haciendo un movimiento fluido. Por lo que no siempre se ve muy temblorosa como antes. Ahora con el fin de crear un rectángulo, voy a hacerlo en lugar de tener solo ancho, para tener ancho y alto. Y entonces también tendré x gap. Y por qué brecha. Y para esto va a ser x gap. Y luego para la otra va a ser h dividida por la de Rey, que es altura dividida por raza. Y luego las alturas, voy a hacer que la altura sea dividida por dos. Y por ancho lo voy a hacer también con dividido por dos para que
podamos verlo porque si hago toda la pantalla, entonces vas a ver solo parte de la línea. Y ahora arreglaremos esta función agregando los huecos por aquí. X brecha y luego por qué brecha. Y luego finalmente vamos a tener x offset y y offset. Se puede tener el mismo offset para todos ellos, pero yo los voy a tener diferentes porque entonces se puede jugar con ellos más tarde. Y también se puede sólo para limpiarlo. Y así se pueden ver todos los parámetros. Simplemente puedes golpear Enter. Y luego si haces Comando T, entonces lo formatear para ti. Por lo que ahora tiene la misma sangría que la otra. Y ahora podemos arreglar esto para que sea x cap para todos estos. Y entonces en lugar de solo
y, y gap plus
y, y aquí también, Va a ser yo multiplicado por y plus y. y lo mismo va para éste, pero éste va a ser eras, multiplicarlo por y gap plus y. y entonces podemos sumar el offset, cada uno de esos. Por lo que sólo voy a hacer más offset X aleatorio. Y aquí más offset Y aleatorio. También puedes hacer lo mismo aquí. Y último. Ahora sé que hemos creado lo mismo para x e y. así que nos estamos moviendo tipo de diagonal que estás en este momento. Pero no vamos a usar esta función de onda horizontal y verticalmente al mismo tiempo. Lo vamos a utilizar para algunas líneas verticales y horizontales por separado, pero estamos usando la misma función. Definitivamente puedes hacer una línea horizontal y luego una función separada para una línea vertical. Pero vas a ver que cada vez es muy similar. Pero de esta manera solo estás creando una función y luego la estás usando tanto para línea vertical como horizontal. Y la forma en que puedes hacer esto es así. Entonces digamos que estoy probando muertes desde el punto cero. Y luego para éste también, la estoy secando. Entonces a partir del 00 básicamente, eso son x e y. y entonces la resolución va a seguir siendo la misma. Y luego para la primera, que es x gap, vamos a usar x cap e y gap. Y luego finalmente un valor para cada offset. Entonces lo voy a seguir para. Y ahora este es el truco. Entonces, por ahora, esto es lo que tenemos. Y si hago esto, va a ser una línea diagonal, como un saco porque estamos usando x e y juntos. Entonces cómo puedes crear solo una línea horizontal o una línea vertical es creando la posición de la primera en esta línea. Entonces eso son x e y. y luego para x cap e y gap, sólo
vas a usar uno de ellos. Entonces por qué gap, va a ser 0 porque no tengo nada que dividir. Y luego para el desplazamiento X, porque lo estamos dibujando horizontalmente, no
necesitamos un offset para x, necesitamos un offset para
yY ahora si dibujo esto, se va a alinear en 000. Entonces si muevo esto la altura dividida por dos. Por lo que en el centro de la pantalla, entonces podemos ver que está funcionando para asegurarnos de que también funcione para líneas verticales. Voy a copiar esto y voy a dejar esto como 0. Pero usa amplia brecha. Y luego el offset para la x, van a ser cuatro. Y el offset para y va a ser 0. Y esa es la línea por aquí. Por lo que tengo que moverlo a ancho dividido por dos para que puedas verlo. Y esa es la línea vertical. Por lo que sabemos que esto funciona para líneas verticales y horizontales. Ahora es el momento de crear nuestra clase, de crear el rectángulo. Crearé una nueva pestaña, y simplemente lo llamaré poli. Entonces para el polígono, puedes llamarlo como sea. No voy a especificar esto como un rectángulo, pero siéntete libre de hacerlo. Y ahora puedes definir el polígono usando solo la resolución y luego especificar el ancho y la altura aleatoriamente. O puedes usar XY, ancho y alto con una resolución. Entonces básicamente creando un rectángulo, voy a hacer ambos constructores. Entonces el primero va a ser el aleatorio sólo para que podamos ver cómo funciona. Entonces voy a hacer resolución por aquí. Y por supuesto tiene que ser visible por aquí también. También tiene que definirse allá arriba. Ahora Raz va a igualar descanso de subrayado para x. vamos a ir de 02 anchos al azar. Y luego para y va a ser altura aleatoria. Y esos se van a definir aquí también. Y también definir ancho y alto. Por lo que estas son las propiedades para cualquier rectángulo básicamente. Y el ancho y la altura van a ser, porque quería que fueran cuadrados por ahora porque creo que las plazas son más fáciles de trabajar. Y entonces los rectángulos son simplemente una altura diferente al ancho. Haré de 20 a 100. Y luego para la altura, voy a hacer que sea igual a ancho. Después de eso, voy a tirar todo esto a esta clase. Ahora lo tenemos por aquí y luego Comando T o control T en Windows para formatear ahí, solo para limpiarlo. Y luego terminó el método de visualización. Vamos a crear un rectángulo como referencia. Entonces haré este rectángulo x a x e y, y luego ancho y alto. Y luego crearé esos rectángulos. Entonces los agarraré. Y luego definiré la brecha x por aquí. Y por qué brecha también. Y por último, el offset va a ser a las cuatro. Ahora ya no los necesitamos. Tampoco los necesitamos por ahora. Y en lugar de usar estos valores, voy a usar x e y. así que para el primero va a estar donde esté x e y. Entonces esa es la esquina de cualquier rectángulo. Y esta es nuestra referencia aquí. Entonces X e Y va a ser la esquina, entonces ahí es donde vamos a empezar. Y esta es la horizontal y luego va a ser x gap. Y luego no hay,
No por qué huecos por aquí, porque esta es una línea horizontal. Y entonces no necesitamos un offset para x porque. Sólo necesitamos compensarlo en el eje y. Y luego para éste, vamos a dibujar la línea vertical a la derecha. Entonces lo que vamos a hacer es agregar el ancho a x Eso básicamente lo va a empujar por el ancho diverso cuadrado o rectángulo. Y luego vamos a tener 0 para x gap. ¿Y entonces por qué brecha? Nuevamente, por cada línea horizontal, Va a
haber una tapa x y un desplazamiento Y. Por cada, por cada línea vertical
ahí, va a haber una amplia brecha y un desplazamiento X. Entonces offset va a ser para la x y luego y va a ser 0. Ahora para el de abajo, va a estar en la posición x porque vamos
a arrancarlo desde el mismo punto que el de arriba. Y luego vamos a sumar la altura a y porque estamos por aquí y tenemos que bajar por aquí. Esto tendrá una tapa x porque es una línea horizontal. Y luego va a tener un desplazamiento y. Y para el último va a tener x e y porque estamos empezando desde la misma esquina inicial. Porque para las líneas verticales vamos de arriba a abajo. Y luego no va a tener desplazamiento
ni hueco para x y luego una amplia brecha y luego Offset y 0. De acuerdo, El polígono Paul por aquí. Y Pablo II va a igualar un nuevo polígono o una clase de poli. Y luego haremos la resolución. Entonces simplemente empezaré con, hagamos cinco. Y luego lo dibujaremos al margen, margen. Y lo haré aquí mismo. Entonces solo crearé un margen para que lo veas. Porque si solo hago 000, entonces va a estar escondido a los lados a veces. Entonces para que sea más claro, para que lo veamos, entonces sólo voy a hacer un margen de 50 o incluso 20 está bien. Y entonces lo haré con menos el margen. Por lo que tenemos el margen del lado derecho también. Y luego lo mismo para la altura. Ah, se me olvidó eso. Todavía no creé este constructor, así que solo vamos a hacer esto, el aleatorio. Por lo que sólo definirá la resolución. Y entonces dibujaré. Mostraré esto por aquí. Lo que estás viendo debajo es la referencia o rectángulo, por lo que puedes ver que lo está siguiendo perfectamente. Ahora si quito esta parte, entonces podemos ver nuestro rectángulo. Y cuanto más pequeño sea, más distorsionado se va a ver porque la resolución está fija para todos ellos. Entonces si solo reduciste la resolución, entonces va a ser más como un look dibujado a mano. Esto va a funcionar bien. Si tengo un ArrayList, digamos, de polígonos. Y luego añadiré una nueva lista. Tengo que crear un bucle. Entonces para, digamos 10, entonces esto va a funcionar bien. Es, no es importante saber la posición X e Y exacta o el ancho y la altura. No obstante, si quiero crear algo como esto, entonces voy a necesitar saber específicamente dónde va a estar
la x e y o si quiero crear una cuadrícula usando esos rectángulos que voy a tener que ser más específico con establecer el x e y y ancho y alto para cada uno de los rectángulos. Entonces voy a crear otro constructor, y esta vez solo copiaré y pegaré esto. Y voy a añadir el valor x. Y luego también añadiré y, ancho y finalmente altura. Por lo que tenemos las propiedades básicas para que nuestro rectángulo se dibuje. Y ahora voy a cambiar todos estos para tener ancho y XOM subrayado y. y voy a cambiar esto a altura para que
luego pueda definirlo cuando queramos crearlo. Y si voy por aquí y yo, digamos que quiero crear un hilo o una línea. Rectángulos. Entonces solo puedo hacer yo multiplicado por el ancho dividido por 10. Y luego haremos altura dividida por dos para la posición de su altura. O si la posición y. Y entonces todos hacen ancho dividido por 10. Y éste además va a ser ancho dividido por 10, que es la altura de cada uno de los rectángulos, lo que los hace cuadrados. Y ahora tienes una línea de rectángulos. También tenga en cuenta que esto se está dibujando desde la esquina. Entonces si necesitas empujarlo hacia arriba para que la altura esté perfectamente en el centro. Vas a necesitar restar el ancho dividido por 10, dividido por 2. Y eso va a ser exactamente en el centro. Porque con dividido por 10 es el ancho y la altura de estos rectángulos. Y dividir eso por 2 sólo va a empujar esta esquina hacia arriba por la mitad de la altura, lo
que hace que el punto central pase ahora por el centro de estos rectángulos. La otra mitad de la lección que puedes crear usando el curso de recursiones. No tienes que tomar ese curso porque voy a tratar de explicar esto tan bien como puedo en poco tiempo. Pero por supuesto que es un poco absurdo tomar todo ese curso y marcarlo hacia abajo
sólo en esta lección y esperar que entiendas todo si no
tienes una comprensión de lo que son las recursiones. También las otras partes de algunas de las lecciones solo van a ser ejemplos para mostrarte cómo puedes usar lo que estamos creando para la textura. En otros ejemplos que hemos creado ya sea antes o simplemente en su trabajo general. Por lo que puedes usar esto usando la intro al curso de arte generativo. Significa que puedes usarlo para crear una cuadrícula de este tipo de rectángulos. O puedes hacer lo que voy a hacer ahora mismo para sustituir lo que usamos como rectángulos o los rectángulos primitivos que usamos en el
curso de funciones recursivas con este rectángulo que acabamos de crear para agregar textura a eso. Por lo que las funciones recursivas en pocas palabras están repitiendo el mismo código una y otra vez usando funciones anidadas. Entonces en lugar de usar bucles, solo
vamos a llamar a la función dentro de sí misma, que puede producir un bucle infinito. Pero si lo controlas con una condición, entonces estás bien y puedes crear resultados realmente grandes con ella. Vamos a hacer el ejemplo más simple fuera de los de la clase de funciones recursivas, y ese es el ejemplo de cuadrados. Entonces lo que voy a hacer aquí es quitar lo que creé por aquí y quitar el método de visualización, solo lo pondré en el cajón para que tenga
más sentido que estemos secando dentro de pantalla. Pero entonces sólo voy a llamar a ningún bucle todos los años. Para hacer esto muy rápidamente. De lo que vamos a necesitar es un método que se pueda llamar como sea, pero lo vamos a llamar generar porque
va a generar nueva generación cada vez. Y entonces le vamos a dar un número. Y ese número va a ser el número de generaciones. Y luego dentro de ella, vamos a tener un ArrayList al que voy a llamar temp por temporal. Y entonces este ArrayList va a tener los polígonos que va a ser la próxima generación. Y van a ser de tipo Holly o nuestra clase que creamos. Y entonces porque dije que vamos a
llamar a la función dentro de sí misma para crear ese bucle infinito. Sólo vamos a llamarlo aquí. Y luego voy a pasar degeneración porque también vamos a disminuir la generación cada vez. Y entonces voy a hacer, o voy a pedir a esta función que sólo haga lo que le esté pidiendo que haga dentro de esta condición si la generación es mayor que uno. Porque quiero evitar el bucle infinito. Por lo que es un poco similar a un bucle while de alguna manera porque un bucle while tiene todo
el o tiene variable de tema aquí arriba o antes. Y luego hay una condición, y luego hay un incremento dentro de ese bucle. Y nuestro bucle es toda esta función. Entonces lo vamos a poner aquí fuera. Y vamos a decrementar cada vez. Entonces si pongo aquí cinco generaciones, entonces va a hacer esto para la primera. Se va a comprobar si es mayor que 15 es mayor que uno. Eso va a disminuir después de que todo se haga aquí dentro. Y luego van a ser cuatro. Y una vez que llegue a uno, entonces comprobará si es mayor que uno, no lo es. Entonces se va a parar. Y ahora dentro de esto, vamos a recorrer todos los polígonos que están dentro de su ArrayList. Por el momento, no tenemos nada, así que agreguemos uno a eso. Démosle una resolución. Entonces estoy llegando a llamar, llamarlo resina Polya, llamarlo por aquí o una definida por aquí. Y hagámoslo sólo tres. Y entonces dibujaré un rectángulo grande desde el margen, margen a qué? Menos margen y altura menos margen. Nuestro se olvidó de agregar nueva MyClass. Ahora tenemos uno de nuestros rectángulos y porque lo estamos mostrando por aquí, si golpeo correr, entonces tenemos eso. También. Voy a tener que multiplicar esto por dos porque estoy empujando esto por el margen, y luego estoy empujando esto por el margen, pero está aquí arriba, así que necesito empujarlo por margen multiplicado por dos. Y ahora tenemos un rectángulo o un cuadrado. Entonces lo que estoy haciendo por aquí es recorrer. Entonces solo haré Paulie, Paulie en Holly's. Estoy revisando todos los artículos en el ArrayList, y los voy a dividir por aquí. Entonces ahora sólo tenemos uno. Lo vamos a dividir por aquí. Y después voy a hacer lo que sea que los pollicis lo hagan lo que esté a temp, porque vamos a crear todo dentro de la ArrayList temporal. Y luego me voy a llevar todo dentro de tmp y cambiar o sobrescribir lo que haya en los polys. Por lo que ahora tenemos una nueva generación y el ArrayList de Pauli. Y más tarde vamos a recorrer todos esos y luego dividirlos de nuevo. Entonces va a ser un bucle de división. Y la forma en que puedes hacer esto es en primer lugar simplemente agregarlo a la matriz temporal, pero vas a agregar un nuevo polígono. Y el nuevo polígono va a ser una fracción
del tamaño del polígono original de la primera generación que estamos agarrando. Entonces para eso, van a ser épocas de poli. Y luego vamos a, en realidad, voy a cambiar esto a sólo p porque esto va a ser muy, muy largo. Entonces voy a agarrar la exposición porque para la primera quiero que sea en la misma posición x e y. Y yo también voy a agarrar la posición y. Pero entonces quiero tener el ancho y luego la altura. Voy a dividir eso por dos. Y luego voy a llamar a generar dentro de la configuración. Y lo haré sólo para, así que le daré dos generaciones. De acuerdo, Así que cometí un error, que es poner esto fuera del condicional if, pero dije que es como un loop while y el while loop decrementa dentro del condicional. Entonces ahora si lo ejecuto, tenemos eso. Ahora no tienes la primera generación, solo
tienes la segunda. Si hago esto tres veces, entonces verás que no sólo es una cuarta parte del tamaño de la más grande, sino también de la más pequeña. Entonces volveré a dos y creemos los otros cuatro. Porque queremos hacer cada una de las plazas en cuatro plazas diferentes. Ahora para el segundo, nos estamos moviendo por ancho dividido por dos de la original porque estamos buceando por lo que haya en el principio. Se refiere a uno de aquí. Para que puedas ver esos y nosotros podamos entender lo que está pasando. Entonces empezó el primero por aquí y luego fuimos sólo a la mitad del ancho y a la mitad de la altura. Entonces eso es sólo la cuarta parte de la plaza original. Y luego para el segundo va a empezar desde aquí. Por lo que la mitad del ancho. Entonces voy a hacer lo que sea x más ancho dividido por dos. Por lo que p punto ancho dividido por dos, el resto se va a quedar igual. Entonces si hago dos generaciones, entonces verás que está funcionando bien. Tampoco voy a hacer relleno. Para que se puedan ver las líneas. Y ahora para la tercera, no
moveré el ancho o no me moveré horizontalmente, pero me moveré verticalmente. Entonces eso será y más la altura dividida por dos. Y entonces la final va a empujar tanto el ancho como la altura. Ahora tenemos cuatro. Entonces si hago esto tres generaciones, entonces verás que está recortando eso a la mitad. Y luego si hago cuatro generaciones, entonces es cortarlas o cortarlas a una cuarta parte del cuadrado original, y así sucesivamente y así sucesivamente. Pero para que esto sea un poco más interesante, lo que hay que hacer es simplemente no cortar cada cuadrado. Entonces si hago flotar, volver a escuchar solo un valor aleatorio de 0 a uno, y luego reviso si r, Así que le doy una probabilidad del 50 por ciento para que se divida. Y luego el otro 50 por ciento, las plazas se van a quedar igual. Por lo que se va a quedar en P dot SPDY como va a tener el ancho completo y la altura completa. Por lo que ahora se puede ver que es más interesante porque esta parte se
dividió para todas las generaciones. Este sólo se dividió dos veces. Por lo que uno se dividió sólo una vez. Puedes ejecutarlo tantas veces como quieras y siempre obtendrás resultados diferentes. También puedes cambiar la probabilidad por aquí de 50 por ciento para cada uno hacer algo diferente. Entonces digamos que quieres que se corte la mayoría, entonces harás el 70% para que esto se recorte. Entonces si r es menor a 0.7, entonces verás que se cortarán más de ellos. Y si quieres colorear esto, entonces simplemente puedes agregar una matriz de colores a esto. Entonces podemos simplemente llenar esto de color porque las líneas en realidad no estaban dibujando un rectángulo. Solo estamos probando un montón de líneas para que
solo puedas dibujar rectángulos y esos van a ser coloreados. También puedes agregar márgenes a estos. Entonces si hago x menos 2 o x más dos en realidad. Entonces si subo aquí y hago más dos por esos y luego menos 2 por esos. Entonces como si agregara el margen de dos y luego añadí un margen extra para el uno. Entonces si hago esto ahora mismo se puede ver que hay un poco de espacio. Y luego puedo agregar otro margen o margen extra solo para los rectángulos internos. Se puede ver un poco más claro y se puede quitar el trazo de éste. Porque ahora estamos viendo el doble del trazo. Entonces simplemente no puedes hacer trazo por aquí y luego trazo de negro para éste. Y tenemos un nuevo rectángulo inventado usado y funciones recursivas. Eso es más o menos todo lo que necesitas saber sobre esta parte de textura uno. En la siguiente lección, hablaremos más sobre el color, específicamente la interpolación aleatoria de color.
4. Color 01: interpolación del color al azar: En esta lección, comenzaremos a hablar de color, específicamente de la interpolación de color. Hablé de esto en otro curso. Pero quería compartirlo aquí solo para que
tengamos una acumulación de formas de colorear tu diseño. Por lo que la interpolación de color básicamente crea un gradiente de un color de tu elección a otro color basado en tu mapeo de valor. Entonces basado en el tiempo, que es el tercer argumento para esta función o para este método de color de labios. No obstante, hoy no vamos a mapear el tiempo ni el valor del tercer argumento a nada en la pantalla. Solo vamos a usar la aleatoriedad para jugar con los colores que crea este método. Para esta lección profundizará directamente en el ejemplo, porque no va a ser un ejemplo muy difícil. Y vamos a utilizar algunas de las técnicas que utilizamos en los ejemplos anteriores. Entonces crearé una nueva pestaña porque vamos a crear una clase de agente. Para este agente Tom va a exhibir arcos y círculos y líneas. Entonces para eso vamos a necesitar una posición x e y y un radio. Y luego definitivamente usaremos el color. Entonces voy a crear tres colores. Una, solo llamaré llamada, y las otras dos, voy a llamar a una y cultura para el primer color y el gradiente y el segundo color. Ahora dentro del constructor, vamos a inicializar nuestro x e y el radio. Por lo que x va a ser un valor aleatorio. Y hagámoslo de margen a ancho menos margen. Y definiré margen. Aquí mismo. Y va a ser lo mismo, pero con altura. De esta manera tenemos espacio alrededor de la pantalla. Entonces nada está abarrotado hasta las fronteras. Y luego r va a ser sólo un valor aleatorio de, digamos, 3200. Y ahora para los colores, Empecemos primero con blanco y negro. Así es como me gusta empezar. Siempre que un diseño algo nuevo, haré el primer color, soldados
blancos para colorear. Y luego 255 para el blanco. Y luego dos van a ser negros. Y ahora definiremos el método de interpolación de color. Por lo que el método se llama Blurb color. Y luego toma el primer color, el segundo color, y yo tomo el valor del tiempo. Entonces si quieres mapear esto desde 0 hasta el ancho de la pantalla, entonces los colores cambiarán de ese punto al otro punto en función de qué formas todavía. Por lo tanto, si todas tus formas están abarrotadas al lado derecho de la pantalla, entonces van a tener el segundo color. Porque este valor va de 0 a 10 va a ser el primer color y uno va a ser este. Y entonces cualquier número en el medio va a ser cualquiera que los colores estén entre 255, que es blanco y 0 que es negro. Pero aquí sólo voy a decir, quiero un valor aleatorio de 0 a uno. Y eso nos va a hacer el truco. Y ahora vamos a mostrar algo. Empecemos con un círculo. Y voy a darle x e y. y luego el radio. También, sí uso radio y círculos a pesar de que esto se considera el diámetro. Entonces a pesar de que estoy inicializando un radio por aquí, todavía lo uso aquí como el diámetro. Por lo que también se puede hacer multiplicado por dos, pero lo voy a mantener así. Y luego el color. Por lo que el relleno de la misma va a ser lo que definimos con el método de interpolación de color. Ahora volvamos aquí y definamos una matriz de Adrian's o una ArrayList de agentes. Y luego me voy a ir por aquí. Y voy a hacer agentes punto añadir un nuevo agente. Y luego me iré. Todos ellos. Entonces para agente, lo llamaremos agentes agente. Y entonces mostraré eso. Entonces como pueden ver, estamos obteniendo un relleno que es aleatorio de 0 a 255. Esto es similar a elegir un color aleatorio de negro a blanco o de 0 a 255 cuando lo estás haciendo por aquí. Entonces diciendo aleatorio de 0 a 255, y no necesitamos hacer el 0. Es lo mismo. La única diferencia es que se va a destellar porque agregamos el relleno por aquí. Entonces si lo hago por aquí, y vamos a tener que convertirlo en un entero porque los colores en realidad un entero. Y eso es lo mismo. No obstante, si voy a elegir diferentes colores del blanco y el negro, vamos a conseguir un resultado muy diferente. Entonces definamos una matriz de colores. Tengo uno que sólo voy a definir aquí arriba. Y ahora en lugar de obtener o en lugar de definir los colores manualmente, solo
podemos obtener un valor aleatorio de la matriz. Entonces tenemos un montón de colores por aquí de los que puedo elegir. Y lo haremos de la misma manera que antes hicimos la coloración aleatoria. Entonces estamos obteniendo un índice aleatorio para la matriz. Y tenemos que lanzarlo en un entero porque los índices no pueden ser flotadores. Por lo que puedo hacer llamadas longitud de punto. Y ahora por esto, va a ser un entero y va a funcionar. Ahora lo mismo va para el otro. También puedes usar dos rayos diferentes para estos. O puedes elegir manualmente los colores que quieras. Pero voy a mantenerlo al azar. Y entonces por aquí se va a quedar igual. Y el relleno se va a llevar este interpolador de color. Ahora si corro esto, empezaremos a ver más colores. Ahora algunos de estos colores como este color de película o este color verde oscuro no están en mi matriz, sino porque estamos obteniendo un color y lo
interpolamos funcionan creando un gradiente de ese color al segundo color. Es agarrar lo que sea que esté en el medio entre esos colores. Entonces digamos que voy de rosa a azul, entonces definitivamente voy a conseguir más colores de película. Entonces éste y éste definitivamente es algo que va de rosa a naranja o amarillo. Y esta forma de repleción de colorantes cambia en función de tu modo de color. Entonces si cambiamos el modo de color a algo como HSB, digamos. Y luego ejecuto esto, vamos a conseguir una variedad diferente de colores. El motivo de esto es porque sólo la velocidad va alrededor de la rueda de color. Entonces entre los dos colores no es necesariamente lo que considerarías la acumulación de esos dos colores. Entonces antes con RGB, si tomo rojo y azul, entonces me voy a meter morados entre ellos. No obstante, con el modo HSB, vamos a pasar por la rueda de color. El único propósito de esta técnica es mostrarte que puedes usar el método aleatorio para,
con el método de interpolación de color para obtener una matriz de colores de tan solo cinco colores, lo
que le da un poco más de interés que el normal matriz de colores que elijas. Entonces voy a volver a, y puedes ver los cambios de humor incluso cuando lo cambie de un modo a otro. De acuerdo, ahora en lugar de hacerlo de esta manera, Vamos a continuar con el ejemplo, que no necesariamente es importante
para, para que aprendas esta lección, pero quería que este fuera un ejemplo completo que te muestre cómo uso interpolación de color o cómo potencialmente utilizaría la interpolación de color en mis diseños. Entonces una cosa que hice con este ejemplo es obtener un valor aleatorio. Simplemente lo llamaré aleatorio porque ya tienen R como radio. Y luego lo voy a inicializar por aquí. Y como es un entero, voy a lanzar aleatorio en un entero. Y quiero cinco formas diferentes. Entonces voy a usar sólo cinco. Entonces voy a conseguir 0 a cuatro. Y ahora aquí abajo en el método de visualización, en lugar de usar solo el círculo, voy a comprobar si es aleatorio. Es igual a 0. Y quiero otra forma. Y luego si lo demás, si aleatorio es igual 1 o aleatorio igual a 4. Entonces en realidad no son cinco formas, pero consideraría cinco formas sólo porque quiero que la probabilidad de conseguir un círculo sea más alta. Y elegí si es uno o cuatro, f igual a dos, y luego tres. Entonces un amigo m igual a 0, voy a crear un arco. Y va a ser una x e y En realidad es en lugar de x e y porque después también lo voy a mover. Voy a empujar. A los estilos se añade un método push y pop. Para utilizar traducir y girar. Traducir va a definir la posición de cada una de estas formas son ahora sólo podemos usar 00 para cada una de estas posiciones. Y luego el arte toma la posición X e Y primero, y luego toma el diámetro, el ancho y la altura. Entonces solo voy a usar el radio como lo hice con el círculo para ambos porque quiero que sea un círculo. No quiero que sea una elipse. Y luego voy a ir de 0 a pi porque esos últimos argumentos son el ángulo de inicio y el angular final o donde terminará el ángulo. Por lo que imaginando un círculo teniendo dos líneas perpendiculares entre sí cruzando en el centro del círculo. Entonces imagínense el lado este para ser este punto, el ángulo de partida. Por lo que siempre empieza a partir de ahí. Entonces voy a ir de 0 a Pi, lo que significa la mitad de ese círculo. Entonces aquí estamos dibujando medio círculo. Y luego por aquí, voy a hacer lo mismo por el principio. Y luego para el segundo, voy a ir de 0. Esta vez voy a dibujar tres cuartos del círculo. Entonces eso va a ser pi que es la mitad, y luego la mitad Pi que es el cuarto del círculo. Y de esa manera tenemos tres cuartas partes. Por último, voy a trazar una línea. Y esta línea, quiero que vaya de algún tipo de como dibujar la línea horizontal sobre un círculo. Entonces voy a ir de radio dividido por dos porque estoy actuando como si este fuera el diámetro, que sólo debo llamar diámetro por aquí, pero es sólo un hábito Rhino. Por lo que r dividido por dos y r dividido por dos. Y eso es todo lo que necesitamos para esto. Entonces si voy ahora mismo y corro esto, vamos a ver que tenemos multitud de formas. Entonces tenemos tres cuartos un círculo, tenemos medios círculos, tenemos círculos completos y tenemos esas líneas para las líneas en realidad para todo. No quiero un relleno. Simplemente voy a usar un trazo en su lugar porque quiero un visual diferente. Y hagamos que el peso del trazo sea grande, así que 15. Y luego también voy a hacer que la gorra de trazo sea cuadrada. Porque para las líneas van a tener gorras redondas. Yo quiero cambiarlos a cuadrados. No es importante por supuesto. Y entonces también no haré relleno. Y debido a que tenemos muchos estilos por aquí, podemos hacer estilo. Y yo sólo puedo quitar todo esto de aquí en punto más aquí. E incluso podemos colorear dentro de los métodos push y pop. Entonces solo puedo hacer estilo aquí mismo. Y ahora si ejecuto esto, vamos a tener un diseño más bonito en realidad. Pero otra cosa que voy a añadir a esto que lo va a hacer divertido es una animación. No obstante, no podemos hacer esa animación porque no vamos a poder verla hasta que haga la detección de colisiones que hicimos anteriormente. Te mostraré primero la animación. Te mostraré cómo eso no va a quedar bien. Para cualquier animación. Vamos a necesitar un ángulo y la velocidad. Entonces eso va a ser ángulo. Y entonces sólo lo llamaré velocidad para velocidad angular. Y luego los definiré por aquí. Entonces va a ser ángulo. Y la razón por la que lo estoy definiendo aquí, porque no quiero que todos comiencen desde el mismo ángulo. Yo quiero tener una rotación aleatoria para cada uno de ellos. Entonces voy a hacer al azar 2 pi. Entonces eso me va a dar un valor aleatorio de 0 a dos pi. Círculo tan completo básicamente. Y luego una velocidad. También va a ser un valor aleatorio que va a ser de menos 0.52.5. Y ahora por aquí en la sección de rotación o traducción, también
voy a rotar o esa
sección de transformación va a rotarla por ángulo y luego ángulo se va a mover o se va a actualizar y la actualización se va a actualizar por la velocidad. Y ahora solo llamamos a actualización por aquí. Ahora todos los métodos que estamos usando muestran una actualización, y luego el estilo que estamos usando dentro de esto. A estas alturas si ejecuto esto, todo está girando y tengo que reiniciar esto. Entonces hazlo gracias ronda. Ahora en realidad los puedo ver girando y no y dibujando uno encima del otro como en lo que sea que esté girando no es secarse en lugar de simplemente restablecer y girar. Para mí, esto es tan guay. Parece que funciona una máquina, pero creo que se ve mejor si agregamos la detección de colisiones. Entonces lo haremos usando el método de colisiones. Como dijimos antes, se va a devolver un booleano como pandilla para tomar un agente y yo voy a llamar a otro. Y luego vamos a agarrar la distancia de x e y a otro punto y, es decir el centro al centro. Y entonces diré que si la distancia es menor que el radio más el otro radio, en realidad va a tener que dividirse por dos porque estamos usando radio por aquí como diámetro. Entonces es cuando las cosas empiezan a ser un poco desordenadas por mí eligiendo la variable equivocada, devuelven verdadero y luego de lo contrario, o pase lo que pase, simplemente haz falso. Esto asegura que estamos devolviendo un valor independientemente de si esto si condicional se mapea o no. Y luego iré por aquí y definiré un valor máximo. Aquí arriba. Yo sólo voy a hacer el recuento MAX. Y vamos a hacer 50. A pesar de que para la pantalla el tamaño 50 va a ser un poco mucho. Entonces hagámoslo, sí, vamos a reducirlo a 20. El motivo por el que agregué el conteo máximo es porque no quiero que sume o rebase esa cantidad máxima. No quiero que agregue más de 20 círculos, digamos, ni formas. Entonces diré agentes tamaño de punto es menor recuento
máximo solo entonces quiero que agregues un nuevo agente. Entonces si llega a esa cantidad, el recuento máximo, ya no quiero que añada agentes. Y luego haremos un for-loop. Para entero I igual a 0, soy menor que los agentes tamaño de punto porque estamos usando ArrayLists, no una matriz, por lo que no usamos longitud. Y luego yo plus, plus. Por lo que estamos incrementando en uno como de costumbre. Y entonces aquí definiré j como el último agente. En realidad, lo que voy a hacer por aquí es bucle sólo a través del agente de ese tamaño excepto el último, porque el último va a ser j Así que si los agentes en la posición j choca con agentes o cualquier agente en la posición i entonces lo voy a quitar. Y aquí es donde el recuento máximo es útil porque si todos chocan, entonces no vamos a tener nada aquí. Entonces no es solo para asegurarnos de que no superemos el conteo máximo, ya sea para asegurarnos de que estamos alcanzando ese conteo máximo. No sólo nos estamos poniendo demasiado porque la mayoría de ellos chocaron y luego tuvimos que quitarlos. Y ahora si corro esto, veremos que no choquen. En realidad la razón por la que chocan es por el peso del ictus. Por lo que podemos agregar eso aquí. Sólo puedo decir más el peso del trazo si lo defino en otro lugar. Entonces digamos esto. Voy a llamar solo a stroke w. Y entonces aquí sólo diré stroke w igual a 15. Y tenemos que definirlo aquí arriba también. Y ahora lo puedo agregar por aquí. Solo podemos hacer más 15 si sabes que siempre
lo estás, va a ser un valor constante. Y por supuesto aquí va a ser otro dardo porque si quieres que tengan pesos de trazo aleatorios, esta es la forma de hacerlo. Más peso de trazo para este y luego más otro peso de trazo adulto para ese. Por lo que agarra el peso de trazo correcto para cada uno de esos. Y ahora no vamos a ver ninguna colisión. Entonces, debido a que la pantalla es demasiado pequeña, no
vamos a ver mucho por mucho tiempo. Entonces, en realidad hagamos esto un poco más grande. En realidad lo duplica. Y ahora cada vez que lo
ejecutas, no hay colisión y está girando y está creando bonitas visuales. Y debido a que tenemos una rotación de inicio aleatorio, puede ver que algo como esto en
realidad no está empezando en la misma posición que esta o en la misma rotación es ésta. Y luego debido a que tienen velocidad aleatoria, vas a ver diferente velocidad. Y la razón por la que usé línea así como porque conforme gira, también crea un círculo, le da un aspecto más cohesivo, pero aún tiene algunas variaciones. Y luego puedes guardar la animación si quieres. Violencia, digamos que un recuento de fotogramas es menor a
diez cientos, diez cientos cuadros a, si especificas la velocidad de fotogramas por aquí en, digamos 30 fotogramas por segundo o 24, entonces puedes especificar, o puedes calcule cuántos minutos desea y por lo tanto cuántos fotogramas desea. Y asegúrate de hacer menos o igual si estás poniendo el conteo exacto de fotogramas que quieres. Y entonces sí guardarás marco. Y luego salida si quieres ponerlo dentro de una carpeta llamada salida para organización. Y luego me gusta exportarlos como PNG. Y se puede hacer otra cosa. Salida. De esa manera. Va a pasar de 0 a 1000 cuadros. Se va a guardar todos esos fotogramas con los dígitos para ese fotograma. Y luego una vez hecho esto no va a ser cierto. Entonces esto va a ser cierto y luego saldrá. Y la salida se va a cerrar apenas esta pantalla de vista previa que sólo hay que saber de esta técnica de coloración. En la siguiente lección, hablaremos más de textura, específicamente de imágenes de fondo.
5. Textura 02: imágenes de fondo: La segunda técnica de textura de la que vamos a hablar es extremadamente simple. Y es solo agregar una imagen de fondo a tu diseño. Cuando inserto esta obra en redes sociales, una de las preguntas interesantes que tengo es ¿de dónde sacaste ese fondo? Y nunca pensé que algo tan simple como agregar una imagen de fondo de un papel viejo o cualquier papel más bien sería significativo para la obra de arte. Pero elegí esta como una de las técnicas de texturización porque creo que es interesante usar el modo de mezcla para ver cómo interactúa la obra con el fondo. Entonces el ejemplo va a ser un poco complejo. Vamos a usar ruido 3D. Entonces básicamente lo que creamos y fluidos ruido el curso. No obstante, en lugar de ponerlo solo sobre un fondo regular, un fondo sólido lo
pondremos sobre una imagen de fondo, que lo va a elevar un poco y hacerlo más como dibujo que has creado a mano. Específicamente elegí el ruido 3D con este porque
parece más que has pintado esto o que has dibujado con bolígrafo sobre papel. Pero estamos usando arte generativo creado. Ahora porque todo esto se trata de agregar imágenes de fondo. Empezaremos agregando la imagen. He elegido imagen de un sitio web llamado Unsplash.com donde
puedes obtener un montón de imágenes libres de derechos de autor, imágenes de alta calidad. Entonces investigué fondos de papel y me dieron un tiempo, y esto es lo que vamos a usar hoy con esta obra de arte. Entonces pongámoslo en la carpeta. En la carpeta de boceto. Añadamos una carpeta de datos. Y voy a tirar de esto hasta aquí. Y lo renombré a subrayado de papel uno. Por lo que es mucho más fácil para nosotros importarlo más tarde. Entonces vamos a usar imagen P, y simplemente lo llamaré fondo o BG para abreviar. Y lo vamos a inicializar por aquí. Por lo que el fondo va a cargar una imagen y la imagen va a ser subrayado en papel un punto JPEG. Y ahora también lo vamos a redimensionar a ancho y alto. Esto definitivamente va a distorsionar la imagen porque tenemos un papel vertical y esto lo va a aplastar. Entonces si lo mostramos ahora mismo, vas a ver que algunos de los detalles son un poco diferentes. Si vuelves a la imagen original que abrimos, no
es mucho tema aquí porque los detalles no son mayores, por lo que realmente no muestra tanto la distorsión. Pero si te molesta tanto, entonces redimensionarlo por relación. Si conoce la relación original de la imagen. Y ahora si quieres dibujar algo encima de esto, así que digamos que quiero dibujar una elipse. Y pongámoslo en el centro de la pantalla. Y le daré un ancho de un 100 por un 100. Y también añadiré la imagen por aquí solo para restablecerla. Entonces en lugar de fondo, ya
no necesitas el fondo. Solo vamos a usar la imagen para restablecer cualquier cosa por aquí. Y si ejecuto esto ahora mismo, podemos ver esto encima. Ahora si cambio este relleno a, digamos rojo. Y luego uso el modo de mezcla. Antes de usar el modo de mezcla, te
mostraré primero. Entonces esa es la habitual. Y luego si uso el modo de mezcla para multiplicar, y hay múltiples modos de mezcla. Por lo que el valor predeterminado es blend y luego el resto lo puedes encontrar de la documentación. Por lo que hay pantalla multiplicadora y si no lo sabes, multiplicar mantiene los colores oscuros y elimina cualquier blanco y pantalla hace lo contrario. Entonces si tienes una imagen en blanco y negro y sí te multiplicas, entonces vas a encontrar sólo las partes negras de la imagen que aparecen. Y luego si haces pantalla con la misma imagen, entonces vas a encontrar que sólo van a aparecer las partes blancas de la imagen. Entonces ahora esto va a hacer que esto sea un poco más oscuro en base al color que hay detrás. Y debido a que nuestros fondos un poco oscuros, Va a hacerlo un rojo más oscuro. Ahora el problema con éste es que el modo de mezcla se está multiplicando cada vez por todo. Entonces si hago modo de mezcla. Ahora puedes ver esto es un poco transparente para que podamos ver la textura detrás de él. Y la imagen no obtiene el mismo modo de mezcla que el relleno o la elipse por aquí porque recurría a la mezcla. Ahora empecemos con el ejemplo real. Entonces voy a quitar todo esto ahora que
nos dimos cuenta de lo que vamos a hacer en este momento, lo
vamos a hacer con el ruido 3D. Entonces en lugar de esa elipse, vamos a crear vértices son planos que van a correr a través de la pantalla usando ruido 3D. Entonces sólo voy a llamarlo agente. Y crearemos esa clase. En este ejemplo, vamos a usar ruido 3D. Por lo tanto, tendremos que definir la posición y el
tamaño y la velocidad para que los puntos se muevan utilizando el ruido. Por lo que en la clase agregaremos esas propiedades. Yo solo haré x, y. y porque usaremos ruido 3D, también
vamos a usar z o z Y luego haré tu tamaño de flotación y velocidad. Por lo que el tamaño va a ser el tamaño de los puntos que se están moviendo. Y la velocidad va a ser su velocidad o velocidad. Para inicializarlos, voy a agregar algunos parámetros al agente. Entonces usaré el x e y porque quiero definirlos fuera de la clase. Ahora asigne x a lo que sea x va a ser y a lo que y vaya a ser. Y luego para z, y z va a ser un valor aleatorio. Y hagámoslo del 0 al 208. Normalmente voy muy pequeño con el valor de C con ruido tridimensional. Y luego tamaño indefinido en velocidades. Por lo que el tamaño va a ser un valor aleatorio. Hagámoslo de 0.5 a tres. El centro que están, más
se van a asemejar a golpes de pluma. Y luego también vamos a definir o inicializar velocidades como un valor aleatorio, como un valor aleatorio de uno a cinco. Y luego agregué una matriz de colores. Puedes usar la misma matriz de colores que hemos estado usando desde el inicio de estas lecciones o desde el inicio del curso. Y haré lo que hice antes de usar un índice aleatorio de la matriz de llamadas que acabo de definir. Entonces eso será un entero. De los valores aleatorios. Van a ir de 0 a llamadas longitud de punto. Y tendremos que definir el color por aquí. Así que marque el color o si tipo color. Y ahora definamos los estilos. A veces me gusta mantener los estilos separados del método de visualización o separados de la forma que voy a definir en el método de visualización. Especialmente si tengo muchas cosas al estilo. Pero aquí sólo vamos a tener dos cosas. Por lo que el primero va a ser el peso del derrame cerebral. Y ese va a ser el tamaño. Tan como del tamaño de un bolígrafo. Y luego haremos derrame cerebral. Y no vamos a llenar por aquí porque no lo
vamos a necesitar y no hay necesidad de que esté dentro por aquí. Por lo que no se llama cada vez que creamos un agente. Y ahora dentro de esta obra dibujará nuestro punto. Y también usaremos el estilo. Y el punto va a ser una x e y. muy sencillo. Y finalmente, en realidad, de segunda a última cosa que vamos a crear en la clase, ese va a ser el método de actualización. Entonces aquí es donde vamos a crear el ruido. Y el ruido va a ser la rotación de estos puntos. Entonces va a ser el ángulo. Y eso será x, y, y z Sin embargo, si solo lo uso así, ruido produce valores de 0 a uno, y estos son muy pequeños. Entonces vamos a necesitar multiplicarlo por la fuerza del ruido. Y si alguna vez sientes que Esta explicación es un poco difícil de seguir. O si sientes que esto es un poco demasiado avanzado para ti, entonces esto es algo en lo que he tratado más profundamente en el curso del ruido que fluye. Entonces si quieres saber más sobre el ruido y su función, entonces te sugiero que vayas a ver primero el curso del ruido del flujo y luego regreses aquí. Pero en resumen, la fuerza del ruido se va a multiplicar el valor que tenga aquí, y se quejará de que no existe. Entonces vamos a crear variables globales por aquí, o en realidad constantes globales, porque sé que la fuerza del ruido no va a cambiar. Entonces voy a crear por aquí. Pero antes creamos y también necesitamos dividir x e y por escala de ruido. Y la razón por la que estoy haciendo esto es porque los valores o la función de ruido producirán muchos valores. Y la escala de ruido va a escalar parte de esa ola y usarla. Entonces es como acercar parte de una ola. Entonces si miras montañas desde lejos, vas a ver muchos picos y valles. Pero si vas más cerca de lo que sólo verás el espacio en el que estás. Y NoSQL hace exactamente eso. Entonces si voy por aquí, podemos definir escala de ruido y fuerza de ruido. Y no necesitamos repetir flotador, solo
podemos hacer coma y luego aplicaremos o asignaremos otro valor a la fuerza del ruido. Por lo que asigné escala de ruido, el valor de 5049 fuerza, hice 100. Estos valores puedes cambiar tanto como quieras. Cuanto mayor sea la escala de ruido, más suave es el ruido. Y Cuanto más grande sea una fuerza, más rotación vas a conseguir porque la usamos con ángulo por aquí. Entonces, si la escala de ruido se está moviendo o haciendo zoom en parte de la onda, la fuerza del ruido está aumentando la altura. Y la parte baja de esa onda puede incrementar x por coseno del ángulo y luego multiplicarla por la velocidad. Entonces la velocidad va a actuar como el radio porque esto va a producir valores de uno negativo a uno y vamos a necesitar multiplicarlo por un valor mayor. Y entonces para y va a ser seno, el ángulo multiplicado por la velocidad. Y también incrementaremos el valor z en algo así como 0.005. Nuevamente, este valor, puedes cambiar tanto como quieras hasta que encuentres los valores que te gustan o el look que te gusta. Ahora el método final que vamos a crear es el equilibrio. Ahora rebota, no va a hacer mucho. Ahora mismo. Sólo va a limitar los
valores x e y o los puntos de ir más allá de los perímetros de lienzos. Lo que podemos hacer aquí es sólo para limitar x de 0 a ancho. Y por qué de 0 a altura. Y verás lo que hace esto cuando creemos nuestra matriz de agentes. Entonces eso es todo lo que necesitamos por ahora dentro de nuestra clase de agente, volveremos a ella más tarde para agregar algunas cosas que va a hacer el ejemplo final. Entonces, por ahora, solo creemos una matriz de agentes. Sólo les llamaré agentes. Y les daré un conteo. Empecemos con 10. Ahora aquí inicializaremos, crearemos instancias de esa clase de agente. Y un reescuche en el constructor solo tenemos x e y. así que voy a hacer solo al azar de 0 a ancho, al azar algunos 0 a altura por ahora. Y luego aquí abajo haremos cuatro agentes. Y los agentes lo
exhibirán y fecha. Y en lugar de crear el o, en lugar de llamar a los límites en la pestaña principal, solo lo
llamaré aquí. Al igual que hicimos con estilo dentro de exhibición. Hice lo mismo dentro de actualización. Ahora si corro esto, podemos ver nuestro ruido 3D. Y como puedes ver, una vez que golpeó el 0 en el eje y, realidad
dejó de moverse y se movió justo a través de esa parte. Entonces siempre que esté en los negativos, va a ser siempre 0. Y luego siempre que esté más allá de la altura, siempre
va a ser la altura. Y por eso vas a ver esos puntos en las fronteras. Y si los conservas por mucho tiempo, vas a ver una frontera al final con los diferentes colores que tenemos. Y ahora porque la velocidad es demasiado alta, en realidad
vemos los puntos no estamos viendo una línea suave. Eso está bien. Eso lo vamos a arreglar más adelante cuando terminemos el ejemplo. Entonces si volvemos a la pestaña Principal, ahora lo que vamos a hacer es crear una cuadrícula. Y en lugar de crear los límites entre el punto cero y el ancho y la altura del lienzo. vamos a constreñir en las celdas de nuestra red. Entonces estaré creando una cuadrícula y luego cada punto va a tomar su posición en una de las celdas. Y entonces se verá constreñida dentro de eso. Para hacer eso, vamos a crear un método al que voy a llamar un gradado neto. Por lo que esto inicializará las posiciones para nosotros mismos. Esto será para el entero n igual a 0. Y entonces n va a ser la zona o menos que la zona. El motivo por el que voy por área en lugar
del número de columnas y número de filas es porque no quiero anidar bucles. Quiero reducir el número de volteretas tanto como pueda. Entonces voy a inicializar una variable llamada área, y eso se contará hasta la potencia de 2, básicamente el ancho multiplicado por la altura. Por lo que el número de filas lo multiplica por el número de columnas. Y eso será por aquí también. Por lo que el número de agentes va a ser el mismo número de células en nuestra red. Ahora puedo hacer yo y puedo hacer J también. Entonces voy a ser n modulo conteos, y luego por aquí, n se va a dividir por conteo. Entonces para las columnas, así de 0 al ancho, vamos a pasar de 0 al número de columnas, consiguiendo el resto de dividir N por el conteo. Entonces obtendremos números del 0 al conteo. Y luego para las filas, vamos a dividir n, que es el área por el número de filas. Hicimos lo contrario de lo que hicimos para crear el área. Y eso nos dará todas las posiciones desde 0 hasta la altura. Y ahora para inicializarlo, voy a crear una matriz de posiciones. Lo crearé por aquí. Y eso va a ser un vector p. Y la razón por la que estoy creando un vector p es para evitar Crear para flotar matrices uno para x y uno para y. y ese también será el área o tener la longitud de un área. Y entonces por aquí voy a hacer posición en N va a igualar un nuevo vector p a i multiplicado por ancho de celda y j multiplicarlo por una altura de celda. Y ahora los definiremos. Entonces si subo aquí y hago flotador ancho de celda y vendo altura. Y luego aquí dentro voy a hacer ancho de celda igual a ancho dividido por el flotador de conteos, y luego altura dividida por flotador de conteo. Y vamos a necesitar flotar porque necesitamos un cálculo más preciso. Porque si no hacen eso y esto es un entero, f ancho no es divisible por el conteo, entonces vamos a ver huecos en nuestra cuadrícula. Ahora que tenemos esto, no
deberíamos conseguir un error por aquí. Y puedo inicializar el subsidio por aquí. Añadamos también márgenes. Si lo hago ahora mismo, más grande va a estar en los bordes del lienzo y eso no se ve muy bien. Entonces voy a sumar los márgenes por aquí. Ahora solo haz 50. Por lo que ahora el ancho de celda y la altura de venta no van a ser solo ancho dividido por el conteo. Va a ser ancho menos los dos márgenes. Por lo que margen multiplicado por dos. Entonces de esa manera realmente estamos restando los márgenes del ancho y la altura. Por lo que estamos creando un nuevo ancho y alto. Ahora en lugar de elegir un ancho y alto aleatorios, quiero que cada uno de los agentes empiece desde cada celda. Entonces para esto, solo vamos a usar lo que inicializamos aquí. Por lo que ya creamos los puntos. Podemos simplemente usarla por aquí. Esa será la posición yo punto x y luego la posición yo punto y Si corro esto, vamos a ver puntos comenzando desde cada celda. No obstante, no lo estamos viendo muy bien. Y también vamos a necesitar empujar porque si te das cuenta, todo empezó desde aquí y luego parar por aquí. Eso es porque borramos los márgenes. Vamos a necesitar empujarlos por aquí. Entonces si hago más margen, y luego por aquí también, más margen. Ahora lo vamos a ver mejor y también habrá que cambiar esto a margen,
margen y luego ancho menos margen, ¿verdad? Margen. Entonces lo estamos haciendo desde margen y luego dos margen menos porque ahora es los límites son en realidad a los bordes. Entonces si vuelvo a ejecutar esto, podemos verlo claro. Podemos ver el margen porque se está deteniendo por aquí. Y ahora se puede ver cómo los límites están funcionando a la perfección en realidad. Ahora la parte divertida está cambiando las restricciones por aquí para confinar los puntos dentro de cada celda. Para hacer eso también, de nuevo, para agregar algunos parámetros más. El primero va a ser ancho de celda y vender altura de forma natural, porque esas son nuestras celdas de cuadrícula. Y también lo agregaremos por aquí para que podamos pasarlo desde la pestaña principal, desde la cuadrícula o desde esta parte por aquí. Entonces lo que sea que inicializamos para la cuadrícula, y eso será bajo el ancho de celda
estudioso y la altura de celda de subrayado. Y podemos inicializarlos aquí. Por lo que no vamos a hacer subrayado ancho de celda. Y lo mismo para la altura celular. Porque esto sólo nos está dando la silueta y vender altura, pero también necesitan las posiciones. Entonces donde sea que estemos usando por aquí, así que esto nos va a dar las esquinas de las celdas y luego las otras dos nos van a dar el ancho y la altura. Por lo que tenemos que añadir eso. Ahora los podemos sumar por aquí. Entonces le daré el ancho de celda y le daré la altura de celda. Ahora si bajamos por aquí, puedo usar el ancho de celda por aquí. Y vendemos altura por aquí porque x e y se están moviendo y los estamos usando para las posiciones de los puntos como se están moviendo, vamos a tener que usar algo más que x e
y porque esos no van a funcionar ya que ellos están en constante movimiento. Entonces necesitaremos solo agarrar el valor x, el valor x inicial, que estamos pasando por aquí y comenzando el valor y. Y los almacenaremos dentro de celda x y venderemos y. y los, y los que podemos crear por aquí. Entonces eso va a ser la celda X y vender y. entonces ahora agarramos los valores iniciales. Ahora los tenemos por aquí. Por lo que ahora podemos mover esto cómodamente sin preocuparnos por la primera posición. Y luego agregamos el ancho de celda Q, lo que sean x e y sean. Y entonces ahora por aquí vamos a usar la celda X y vender vinos que. Y ahora si ejecuto esto, vamos a ver que están constreñidos dentro de cada celda. Ya se ve muy bien, pero también podemos, Así que ya se ven muy bien, pero también podemos cambiar algunas cosas. Entonces en lugar de punto, vamos a usar un vértice con el fin de que se vean más conectados. Y en lugar de solo puntos revueltos como son en este momento, se pueden
ver los puntos porque en realidad no se están conectando entre sí. Pero si usamos la forma Begin y, y forma con vértices, entonces podemos conectarlos para que se vean más como una línea. En realidad, antes de hacer algo, reiniciémoslo usando la imagen. Añadamos la imagen de fondo. Ahora los puedes ver moviéndose. También podemos agregar algunas guías para que veas dónde empiezan y terminan las celdas. Y eso es solo crear una cuadrícula normal. Los llamaré guías. Y luego les daré un recuento x y cuenta y para el número de columnas y filas. Y luego crearé variables locales para área. Y luego también crearé ancho y altura de celda local. Pero van a ser lo mismo. Entonces voy a agarrar esto por aquí. Pero en lugar de contar va a ser x contar. Y para la altura celular, va a ser
lo mismo, pero y cuenta, y esto va a ser altura. Y luego voy a usar el mismo bucle que usamos aquí. Pero en lugar de crear un nuevo vector p, solo
voy a usar una función de rectángulo y tendrá la misma posición x e y, pero luego saber también tener un ancho y alto de celda. Ahora tendremos que llamarlo aquí. Y requerirá un conteo. Y porque estoy usando el recuento por aquí como el número de filas y columnas, entonces lo voy a usar por aquí. A eso le voy a añadir un trazo. Y estoy usando pop persa solo para que no afecte a mis agentes. Y sólo podemos hacerlo negro. Y le daré una capacidad del 50 por ciento. Y ahora lo podemos ver. También añadiré un modo de mezcla por aquí para que puedas ver mejor los colores encima del papel. Y así se parece más a una pluma real escribiendo en el papel. Como dije, vamos a tener que usar o push y pop. Para empujar los estilos son para limitar los estilos solo para los puntos. O puedes reasignar el modo de mezcla por aquí para estos dentro de este pop persa. Y puedo ver que hay un poco más oscuros, pero no estamos viendo nada porque estamos restableciendo la imagen por aquí. Entonces en realidad se está moviendo en lugar de intentarlo. Ahora para dibujarlo, lo que necesito cambiar es este punto. Entonces en lugar de punto, voy a crear un bucle. Y voy a darle un conteo. Y entonces también voy a hacer comenzar forma y forma. Porque voy a estar creando una línea usando vértices. Pero en lugar de poner el vértice por aquí, necesito ponerlo aquí dentro del método de actualización. Porque necesito que cada vértice tenga una posición x e y diferente. Si lo pongo todo aquí, va a tener la misma posición x e y y luego las cosas se van a mover, así que no va a actualizar el vértice. Y entonces llamaré al método de actualización por aquí. Entonces en lugar de llamarlo aquí, solo
podemos usar display y eso llamaremos estilo y actualización. Y dentro de actualización, se va a llamar al método de límites y contar va a ser un parámetro por aquí. Por lo que ahora aquí dentro de pantalla, puedo hacer algo así como un 100 puntos. Ahora si corro esto, podemos ver que está creando una línea, pero es demasiado rápido porque nos estamos moviendo por esta velocidad dentro de espacios muy pequeños. Ahora lo primero que me gusta hacer, generalmente cuando algo así sucede, es cambiar la velocidad de fotogramas y cambiar el tamaño del lienzo. Entonces si hago algo así como 1080 por 1080, se
puede ver que la forma está más espaciada o el ancho de celda es un poco más grande. Entonces ahora tiene más espacio para moverse, y luego puedo reducir la velocidad de fotogramas. Entonces si voy por aquí y puedo hacer velocidad de fotogramas, porque la velocidad de fotogramas predeterminada es, creo 60 y lo reduciré a, digamos 12 o incluso tal vez 24. Pero incluso 24 horas demasiado rápido. Por lo que puedes o reducir la velocidad por aquí. Entonces si lo hago desde 0.1 para dejar decir 0.5, vas a ver que el movimiento se ralentizó, pero entonces vas a tener que cambiar muchos de los parámetros porque cambiar esta velocidad también afectará el ruido 3D. Así que tráelo de nuevo a uno a cinco, y luego sólo reduciré esto a 12. Y en realidad me gusta más cuando se parece más a una animación de stop motion. Y entonces también puedo aumentar esto porque ahora tenemos un Lienzo más grande, por lo que 100 no va a bastar para llenar las celdas. Entonces yo sólo voy a hacer 500. Y ahora vamos a ver que se ve mucho mejor. Y para que se vea aún más bonito porque ahora tus ojos van por toda la pantalla. Por lo que para limitar el movimiento de tu ojo a través del lienzo, solo
podemos llenar algunas de estas células. Entonces para hacer eso, volveré a la clase de agente y crearé una variable aleatoria. Eso llamaré a rand. Y será un valor aleatorio de 0 a uno. Y luego dentro de estilo, esta podría no ser la forma más sabia de hacer esto porque sólo voy a quitar el trazo, porque sólo voy a mover el color del trazo, pero en realidad no estoy quitando la instancia de el agente. Entonces puedes hacerlo por aquí para que no inicialices todos los agentes, pero solo haré una solución simple por aquí simplemente quitando el color del trazo. Entonces si voy por aquí y lo haré si amigo es, digamos menos de 0.7 o 70%, entonces tendré un color. De lo contrario, necesito el derrame cerebral o en realidad no necesito un derrame cerebral. Y luego si golpeo Command T o Control en una PC, entonces tú auto formatearás esto. Ahora si ejecuto esto, podemos ver que en realidad no todos están llenos. Y de esa manera es menos ruidoso. También algo que vamos a aprender en la tercera técnica de texturizado es agregar elementos de fondo. Entonces ya hice algo por aquí que va a estar relacionado con esa lección. Y eso es crear esas guías y dejarlas. que puedas quitar esas guías si quieres, simplemente
eliminando esto. Pero no se ve tan bonito cuando
lo ves de esta manera porque no sabes por qué se está comportando así. No obstante, si dejas a tus guías de lo que se ve más bonito porque ahora
entiendes por qué se están moviendo de esa manera o por qué están confinados en ese espacio, porque en realidad hay límites para que se queden así. Ahora también podemos agregar algo más, y esta es una de las razones por las que creé las guías con una cuenta de x e y, puedo crear otra cuadrícula, pero esta vez puede tener cuatro veces la cuenta. Y también puedo darle un color diferente al array. Digamos que le daré el segundo color. Y también lo lograré a los 50. Si ejecuto esto, no va a quedar bien porque no lo estamos haciendo de esta manera. Tenemos que hacer x contar e y contar, o en realidad ambos van a ser x contar. También cambiaré el color para que éste sea el primer color de la matriz. O en realidad quería que fuera lo contrario. Entonces el rosa va a estar adentro y éste va a estar afuera. Y voy a poner esto antes porque necesito que las,
las células más grandes sean las más prominentes, ya que esas están confinando la pantalla. Y entonces también puedo hacer modo de mezcla para ese también. Ahora podemos ver mejor el rosa y podemos ver mejor el azul. Ahora podemos jugar con escala de ruido. Por lo que aumentarlo a un 1000, tal vez cuanto más aumente la escala de ruido, suave se verá el diseño. Entonces si subo al 2000, entonces vas a ver que las líneas son mucho, mucho más suaves. Si volvemos a 500, vas a ver que hay más rotaciones. Y si bajamos a 60 por aquí que hay menos rotaciones. Por lo que solo volveré a 100 y puedes jugar con él como quieras. También se puede jugar con la velocidad o los incrementos de la velocidad del tercer argumento en el ruido. Entonces algo así va a crear más rotaciones. Y cuanto más lento
sea, va a crear mucho menos rotación. También puedes jugar con la longitud por aquí o el conteo hasta los vértices. Entonces si bajamos a, digamos 16, va a ser menos prominente. Y luego si volvemos a 500, entonces vamos a conseguir más vértices y ustedes van a poder ver un poco más el ruido. Este es en realidad uno de mis ejemplos favoritos del ramo porque se ve más natural con el fondo de papel. También puedes jugar con los diferentes fondos que puedes encontrar en el sitio web o en cualquier sitio web. También puedes fotografiar tu propio papel y añadirlo. Eso le dará más carácter, sobre todo si creas algo más como papel de diario con mucha pintura y montones de pegatinas y cinta adhesiva. Todos esos detalles pueden crear aspecto natural a tu trabajo gráfico. Ahora eso es todo lo que tengo para esta técnica de textura. A continuación vamos a hablar de la siguiente técnica de color, y eso es usar imágenes de fondo como una forma de colorear tus gráficos.
6. Color 02: color de las imágenes: En esta lección, discutiremos la segunda técnica de coloración que
quiero mostrarles y que es usar las imágenes como color. Esta técnica es útil si tú, digamos, tienes una imagen que has creado en tu iPad, digamos en Procreate. Y usó cosas como gradientes y pinceles que son un poco más suaves. Facilidad de la herramienta licuadora para especie de fusionar los colores. Esa sería una gran imagen para usar y procesar como entrada para el color para tus diseños geométricos, que son un poco más duros, pero con colores así, puede elevar el diseño, el final para yo, voy a utilizar uno de mis diseños geométricos anteriores del curso de recursiones. Y lo voy a usar por aquí para otro diseño geométrico. Entonces le va a dar una mirada diferente. Lo primero que vamos a necesitar hacer es importar la imagen al procesamiento. Y yo voy a ir a la carpeta. Vas a tener que guardar tu archivo de boceto para poder llegar a la carpeta adjunta. Y luego vamos a crear una carpeta nueva y que un archivo de boceto extra, y lo voy a llamar datos porque así es como importas imágenes aquí o cualquier archivo más bien a tu archivo de procesamiento o procesamiento de archivo de boceto. Y luego lo voy a agarrar. Lo puse por aquí en mis Descargas. Y así de simple, lo
llamé image underscore 001 solo para un fácil acceso. Y ahora si vuelvo aquí, podemos crear esa imagen cargada. Entonces voy a crear una nueva variable llamada imagen usando la clase PMF. Y luego aquí dentro, voy a decir que la imagen va a estar cargando la imagen. Entonces carga imagen, y eso toma el nombre del archivo. Por eso es mucho más fácil si tienes un nombre de archivo simple. Y también voy a redimensionarlo porque si dibujo esto ahora mismo, así que si lo hago, imagina que lo puedes secar usando el método de imagen. Y luego tendrás que solo posicionar Es esquina. Si lo dibujo ahora mismo, va a ser enorme. Entonces si quiero redimensionarlo y solo voy
a tener que usar el método de resize dentro de la clase PImage. Y yo solo haré ancho y alto. Ahora mismo. Sé con certeza que mi imagen o la imagen en la que estoy cargando es una plaza. Entonces no importa si solo lo redimensiono al ancho y alto de mi pantalla porque no la va a distorsionar. Y esta es la imagen real. Pero si tienes una imagen más larga, tan vertical u horizontalmente, entonces vas a tener que cambiar el tamaño de su ancho o altura dependiendo de qué parte quieras más. Y el resto será cortado por tu pantalla. No obstante, no me importa si lo estoy usando para el color. No me importa distorsionar la imagen, destruirla básicamente simplemente redimensionándola al ancho y alto de mi pantalla porque solo la estoy usando en formas geométricas. Entonces mi objetivo final no es mostrar esa imagen, el significado de la imagen subyacente, sino para ésta, va a ser muy simple. Por lo que sólo vamos a redimensionarlo al ancho y la altura. Y ahora tenemos la imagen que se ajusta perfectamente a la pantalla. Y luego lo siguiente es agarrar los colores de cada uno de los píxeles. Ahora la forma en que puedes obtener cualquier color de este diseño es usando el método get. Entonces si digo imprimir lo que sea que esté en los anuncios de imagen MouseX y Mousey. Y hay que poner MouseX y Mousey yacen dentro de la función de dibujo porque necesitábamos imprimir cada vez que muevo el ratón, porque MouseX y Mousey, ¿por qué? Agarraremos los detalles de dónde está el ratón. Entonces si lo pones a un lado de la función de configuración, entonces solo se ejecutará una vez y ese será el punto cero. Entonces si ejecuto esto ahora mismo, podemos ver los colores cambiando. Y yo, si realmente dibujo, en lugar de hacerlo de esta manera, lo
usaré como relleno y luego dibujaré un rectángulo en MouseX ama de casa. Eso será, digamos, 30 por 30 píxeles. Y cada vez que se va a llenar con este, vamos a ver los colores cambiando cada vez. Para que puedas ver el color del rectángulo cambia
en función de dónde está mi ratón en qué píxel. Entonces si está en los píxeles anaranjados, entonces va a ser naranja, rosa, rosa, y así sucesivamente y así sucesivamente. Ahora, a la siguiente sección de esta lección, que es el ejemplo. Entonces te mostraré un ejemplo donde puedes usar algo como esto. Entonces crearé algo muy geométrico, y eso usualmente significa que yo usando una cuadrícula. Por lo que voy a crear un método al que voy a llamar grilla. Y requerirá un conteo porque para esta grilla, ya que es un cuadrado, necesitaré un conteo x y un conteo blanco. Y este va a ser el recuento de mis columnas y filas. Entonces lo primero que crearía para una cuadrícula es la altura del lápiz silueta, conociendo el conteo y el ancho de mi pantalla. El primero va a valer tanto la pena. Y seré ancho dividido por el flotador de conteo. Tan solo para obtener un cálculo más preciso. Porque si no hago esto, si divides el ancho por un número que es indivisible por el ancho, entonces vas a ver muchos huecos. Pero al convertir esto en un flotador, entonces estás obteniendo el cálculo correcto o el más preciso. Y entonces esto va a ser altura dividida por el flotador de conteo. Y por cierto, también puedes crear guías. Podemos crear otro método al que puedes llamar guías. Si eso te ayuda. Y de esta manera se puede ver cómo funciona la cuadrícula. Lo mismo vale para éste. Entonces vamos a crear ambos al mismo tiempo. Para que veas cómo funcionan las cosas. Y puedes crear una función que los calcule juntos. Y luego puedes llamarlos dentro de estos dos en lugar de redefinir todo. Pero lo prefiero así por si acaso quería cambiar a los chicos por otra cosa. Y entonces j es menos que contar. Por lo que j va a pasar por la altura de la pantalla, y yo voy a pasar por el ancho. Por lo que va a crear las columnas para nosotros. Y te toca a ti si quieres hacer. Primero digo que quieres pasar por el ancho de la pantalla primero, los hombres, la altura. Realmente no importa aquí. Y luego crearé las posiciones x e y. Entonces este va a ser multiplicado por el ancho de celda, y y va a ser j multiplicado por la altura de celda. Y entonces estas van a ser las guías. Entonces esto es solo para que veamos que todo está funcionando bien o todo es donde debe colocarse. Y a veces es agradable dejar esos guías. Se puede dar una linda visual y vamos a hablar de eso más adelante también. Y ahora si dibujo la guía, así que en lugar de probar la imagen, voy a dibujar las guías. Y digamos que quiero 10 filas por diez columnas. Después obtengo 10 filas por 10 columnas. Entonces sé que mi grilla está funcionando perfectamente bien. Ahora puedo copiar esto y pegarlo por aquí. Y en lugar de dibujar rectángulos, voy a dibujar líneas y arcos. Entonces es como si lo que estoy tratando de hacer es dibujar un camino que va desde un lado de la pantalla y recorriendo filas y columnas hasta llegar al final de la cuadrícula. Y eso puedo crear especificando algunos escenarios. Entonces quiero ir de la esquina superior izquierda y luego quiero ir a la derecha, y luego iré una línea abajo y luego a la izquierda,
y luego una línea abajo a la derecha y así sucesivamente y así
sucesivamente hasta la última celda de mi cuadrícula. Entonces para ese escenario, sé que sólo estoy girando en la primera columna y en la última columna. Sabiendo que puedo escribir un condicional si que comprueba si es la primera columna. Y luego un f más que comprueba si encaja el último. Y eso será contar menos uno porque vamos uno menos que el conteo, o mejor dicho aquí. Y luego, por último, mi otra declaración va a ser todo lo demás. Entonces no es la primera columna, no
es la última columna, va a ser todo lo demás. Entonces para todo lo demás, voy a dibujar una línea que es la más fácil. Entonces empezaremos con eso. Irá de x e y. entonces de la parte izquierda de la celda. Y luego para y, porque quiero que esté en el centro de cada una de estas celdas. Entonces voy a sumar a eso la altura de celda dividida por dos. Y luego quiero que vaya al lado derecho de cada celda, que
eso sea x más E ancho de celda. Y entonces para la última va a ser la misma porque no quiero que sea una línea diagonal, quiero que sea horizontal. Entonces será lo mismo. Por lo que la altura celular dividida por 2, así y se va a quedar igual. X va a ir de izquierda a derecha. Y si ejecuto esto, debería ver líneas si realmente llamo a Greg. Entonces llamemos a gerd. Y yo haré el mismo conteo. Podemos sólo para asegurarnos de que cada vez que las guías sean las mismas que la cuadrícula, voy a definir el conteo por aquí. Haremos diez minutos de estúpida discusión por aquí con el conteo de variables. Y ahora podemos ver que la primera columna no tiene nada porque nuestro condicional F está vacío. Y entonces el condicional elsif está vacío para el último, pero luego los del medio, que es todo lo demás, tiene una línea que va horizontalmente de izquierda a derecha y está centrada verticalmente dentro de cada célula. Ahora para el primero, el último, sé que quiero dibujar arcos para girar. Por lo que eso será un cuarto de círculo para girar de una línea a otra para cada celda. Entonces será medio círculo para ambas celdas, pero vamos a tener que dibujar un cuarto del círculo y luego un cuarto del círculo para la otra celda. Entonces hay dos escenarios para la primera columna y luego hay dos escenarios para la última columna, y eso es filas impares e incluso filas. El primero que vamos a hacer es y hasta remar. Y eso es si j modulo 2 es igual a 0, es
decir si el resto de dividir j por dos va a ser igual a 0, lo que significa J es divisible por dos, entonces eso va a ser una fila par o un número par, lo
que significa que es un fila pareja. Y entonces lo contrario, si j no es parejo, así que el resto de dividirlo por dos no va a igualar 0, entonces nos dará las filas impares. Entonces si copio y pego este, va a ser lo mismo para ambos. La única diferencia es que cómo vamos a dibujar los arcos. Por lo que hablamos de nuestra x en la lección anterior o en la lección de color anterior. Y sabemos que para arco en los dos primeros argumentos van a ser la posición X e Y de su centro. Entonces si es un círculo completo, entonces el centro va a ser nuestro x e y Así que quiero el centro para este,
para cada uno de los pares. Entonces 0 se va a considerar una fila par para los parejos no van a ser la segunda mañana que veamos visualmente, pero va a ser la tercera porque vamos 01234. Entonces esto es parejo, esto es parejo. Y entonces esto es raro. Entonces sé que quiero que se vaya porque sé que estoy empezando de nuevo por aquí, así que sé que quiero que siga así. Y luego yendo por aquí, vamos a ir por aquí y luego estamos girando. Y luego yendo por aquí, vamos a ir por aquí. Entonces sé que estos van a ser medio círculo para el primero. En realidad, puedes dibujar una línea, pero serán aún más condiciones que puedes agregar a tu for-loop o que tendrás que añadir a tu bucle for. Entonces lo voy a dejar como una curva o un arco que va a ir hacia arriba. Entonces esto va a ser x más el ancho de celda porque esa es la esquina superior derecha. Y entonces va a ser y porque no nos estamos moviendo a ninguna parte verticalmente. Y luego vamos a tener que definir un radio. Entonces haré un círculo. Entonces para ancho y alto, va a ser R. Y voy a definir r por aquí. Por lo que r va a ser el valor mínimo de ancho y altura de celda. Por si acaso quería hacer esto en una cuadrícula rectangular. Esto asegurará que siempre tendrá círculos para arcos y no estirarlo por toda la pantalla. Porque entonces vamos a estas diferentes y van a ser elipses. Y no se va a quedar bien a menos que ese sea el look que vas a buscar. Entonces solo voy a agarrar el valor mínimo, ya sea ese ancho de celda o vender alto, dependiendo de tu pantalla, si quieres que sea vertical u horizontal, pero menos cuadrado. Por lo que realmente no importa ahora mismo. Por lo que sólo puede especificar el ancho de celda y eso estará bien. Y ahora sabiendo que el arco arranca o un círculo empieza a caer del lado derecho. Por lo que pensando en las dos líneas perpendiculares entre sí en el centro, sabemos que arriba es norte y luego abajo es Sur. Por lo que la tarifa va a ser Oriente y la izquierda va a ser Oeste. Entonces vamos a empezar desde el lado este. Pero sé que no va de 0. Por lo que va a empezar desde el punto Sur. Y el punto Sur va a ser medio Pi porque nos estamos moviendo de 0 por cuarto del círculo y eso es mitad Pi. Y luego me voy al lado oeste del círculo, así que eso será pipa. Ahora ejecutemos esto para asegurarnos de que todo funcione perfectamente. Como puedes ver, los arcos se están secando bien. Y cambiemos el color de esto para que podamos verlo y podamos ocultar las guías en este momento, o podemos colorearlo algo diferente. Entonces digamos ahora filmar y luego trazo lo hará 0 a 50 transparencia. Y luego por aquí, voy a hacer peso de derrame cerebral. Haremos variable el peso del trazo. Por lo que haré ancho dividido por el conteo multiplicado por dos. Apenas un número arbitrario. Es lo que calculé y es lo que más me gusta. Y luego también haremos tapón de trazo. Y voy a hacer esa plaza. Y sólo los haremos negros por ahora. Y en lugar de definir ningún relleno aquí, y en ambas funciones, sólo lo
voy a hacer por aquí. Ahora si corro esto, deberíamos ver una mirada más bonita. Ahora para los impares de aquí, queremos que cierre esa brecha. Por lo que esto va a ser x más celda con 10 y y más altura celular. Este es el centro. Y luego para el radio va a ser lo mismo cada vez. Y ahora vamos de saber que esto o el círculo gira en sentido horario, vamos a tener que ir de 0 a medio Pi, pero no necesitamos eso. Y luego vamos a ir a pi. Aún así no necesitamos eso. Entonces vamos a ir de pi a pi más la mitad Pi. Por lo que la mitad del círculo más un cuarto más. Y te recomendamos experimentar con arcos si sientes que no tiene ningún sentido. Pero sólo tenga en cuenta que la mitad pi es cuarto de círculo, pi es la mitad de un círculo. Y que cuando dibujas un RQ vaya en el sentido de las agujas del reloj. Y luego si ejecuto esto ahora mismo, y en realidad hice ambos eventos, así que no va a funcionar. Entonces ahora tenemos nuestros incluso Rosen son hileras extrañas y están trabajando. Genial. Ahora vamos a hacer la última columna. Entonces para la última columna, vamos por aquí. Entonces vas a tener que ir por aquí. Entonces este punto es x, y luego y va toda la altura. Entonces va a ser y más altura celular, entonces el radio se va a quedar igual. Y ahora desde los centros por aquí, vamos de medio pi más pi a dos pi. Y la razón por la que estoy diciendo dos pasteles porque
en realidad vamos a un círculo completo en lugar de decir 0, que va a ir hacia atrás. Y si ejecuto esto, deberías tener el segundo al último. Y ahora más adelante último. Vamos a tener el centro a x e y. y entonces este va a ser el radio. Y finalmente va a pasar de, ya que este es el centro, va a ir de 0 a medio Pi, por lo que sólo cuarto de círculo. Y ahora corriendo esto, tenemos un diseño completo. Ahora a la parte más importante, y eso es colorearlo usando la imagen que agregamos o recargamos. Y como ya sabemos, podemos hacer eso usando el getMethod. Entonces lo que haría es simplemente agarrar la imagen usando el método get. Voy a usar la posición x e y. Pero porque quiero el centro de esta rejilla o el centro de las celdas y migrante. Y voy a tener que agregar la mitad del ancho de celda a
la x y luego la mitad de la altura de celda a la y, solo para asegurarme de que estoy obteniendo cualquier color que esté en el centro de mí mismo. Y ahora get se va a quejar que necesita enteros y estos son flotadores. Entonces voy a tener que encapsularlo en un método int. Sólo porque el casting no va a funcionar aquí ya que tenemos una fórmula. Y en lugar de, así que vamos a tener que lanzar x solos y luego la célula lo haría sola, o vas a tener que encapsularlos entre paréntesis, y entonces esto va a estar entre paréntesis. Eso es demasiado así que sólo podemos usar los métodos y para convertirlos. Es mucho más corto. Ahora si ejecuto esto, deberíamos sacar los colores de la imagen. Ahora si muestro la imagen, se
puede ver ligeramente que dondequiera que estén las líneas y arcos ahí, agarrando el color del centro de esa celda. Y para asegurarnos de que realmente estamos agarrando los colores de la imagen, hay una forma en que podemos certificarlo creando una animación. Y creo que es agradable ver cómo se están agarrando
los colores de las imágenes dinámicamente. Entonces la forma en que puedes hacer esto es dejando el conteo así porque ahora se está inicializando por defecto a 0. Entonces si solo voy por aquí y entonces sí cuento más, más como en aumentarlo por uno. Y luego agarro estos son en realidad ya
no me refiero a las guías porque tienen la imagen. Y ahora cada vez que esto se está incrementando, lo va a agarrar por aquí y lo más grande va a actualizar con base en el conteo. Y luego también vamos a tener que restablecer el fondo. También lo haré de un color más oscuro porque es más bonito con los colores que tengo. Y voy a reducir la velocidad de fotogramas porque esto va a ser cegador. Entonces que sea a las 24. Incluso puedes hacerlo menos. 12 estaría bien, pero se parecerá más a un stop motion,
cualquier movimiento, y sólo asegurándose de que todo se dibuje correctamente. Ahora podemos ejecutar esto y se puede ver la imagen revelándose a sí misma cuantas más células tenemos. Porque se va a asemejar al aumento de la resolución de la pantalla. Por lo que tener más píxeles, significa tener una imagen más nítida. Y eso es básicamente lo que es esto. Pero ahora tenemos un diseño realmente bonito. Por lo que también puedes guardar esta animación para mostrar a
la gente la imagen subyacente de dónde vienen tus colores. O también puedes compartir capturas de pantalla de tus favoritos. Por lo que mis favoritos suelen ser los que tienen dos. Entonces si hago algo como esto, puedo usar en cualquier trabajo de diseño gráfico. O incluso uno puede ser algo que puedes usar. En realidad uso esto en código conmigo video en YouTube donde
agregué títulos al final del video en un fotograma como este, pero uno que es horizontal por lo que se ajusta al video. Pero en general, me gusta más la animación porque muestra la imagen o la imagen subyacente al final. Y si quieres guardar esto, puedes decir si el recuento o puedes usar el recuento de fotogramas es menor o igual, digamos 120 en función de las velocidades de fotogramas y el número de fotogramas. Y solo usaré un marco y lo pondré dentro de una carpeta de salida. Y sabiendo que vamos a parar a tres dígitos, nuestra necesidad más de tres hashes, y luego PNG o JPEG dependiendo del formato que te guste. Y por lo demás, vamos a salir. Entonces esto va a guardar las imágenes y luego saldrá o cerrará la pantalla anterior. Entonces eso es agarrar colores de las imágenes. En la siguiente lección vamos a hablar otra técnica de textura y que es agregar tus guías como elementos de
diseño o simplemente agregar elementos de
fondo para elevar tu diseño o para agregarle interés visual.
7. Textura 03: elementos de fondo: En esta lección, trabajaremos en un ejemplo porque ya hemos creado a eso, lo implementamos. Esta técnica es algo similar a la segunda. El segundo fue sobre agregar una imagen de fondo. Si bien se trata de agregar elementos de fondo como guías o textura y detalles como polvo falso y arañazos. En la segunda técnica de texturizado, combino dos rejillas en las tapas, la imagen de fondo para imitar el papel gráfico, sobre todo porque estamos usando una imagen real de papel en el fondo. También parecía la elección natural de agregar un gradiente primer lugar para mostrar por qué el diseño se está comportando de la manera en que es. Para demostrar que vende límites puede encontrar cada agente respectivamente. No obstante, para este otro ejemplo, revelar las guías es innecesario. Añadirlo puede agitar el diseño o incluso arruinarlo ya que estamos agarrando colores de una imagen, cuantas más celdas, más pueden estorbar las guías. Imagina tu fondo de escritorio en todos los píxeles, bordes en blanco o negro, la imagen no se verá bien en nuestro caso, sin embargo, los diseñadores impactan con píxeles para que podamos agregar guías sutiles como puntos en las celdas, bordes asemejándose a papel punteado, como esos diarios de bala que estamos viendo por ahí. Expone la cuadrícula subyacente sin dominar la obra final. Este ejemplo que va a crear a continuación nos da la sensación de caos. A pesar de que cuando muestro a los guías, expongo que en realidad está ordenado caos. Es Graduado inmune con formas aleatoriamente compensadas. Para este ejemplo, revelar el detalle de fondo es su elección dependiendo de la reacción que desee de mostrarlo a los demás. Por ejemplo, en este ejemplo, uso de números que desvelan la cuadrícula subyacente da al espectador una visión del diseño agregará un tipo de elemento gráfico. Demuestra que creé esto usando una cuadrícula mientras ofrecía el enfoque de hacer el grado que no usé bucles anidados que podrían haber mostrado números duplicados. También puede agregar elementos de fondo que son sólo con fines de diseño. Este ejemplo utiliza arañazos aleatorios para imitar imperfecciones del papel. Idea de bromo para agregar textura a un diseño. No se ve prominente desde lejos, pero sigue siendo visible en el aspecto general, sobre todo cuando se imprime en papel normal normal normal. También para la visualización de datos, mostrar algunos de los elementos de fondo relacionados con la información puede ser muy útil para el observador. Consulta Nicholas Felton, trabaja para algunas ideas en su página web cayó Tron.com. Hay un montón de ejemplos de los informes anuales que han creado a lo largo de los años, algunos de los cuales se crean mediante procesamiento. También revisa sus clases de escultura y diseño de información con procesamiento, incluyendo diseño gráfico y consejos de codificación relacionados con el tema. Ahora es tu momento de pensar en formas de agregar textura a tu fondo o incluso en primer plano simulando arañazos o partículas de polvo en una lente de cámara. Eso definitivamente se vería realmente genial. Trató de descubrir formas en que puedes llevar el mundo físico a la pantalla de tu computadora. Eso es todo lo que tengo para esta lección. Si tienes más ideas, por favor compártelas en la discusión, o incluso compártelas en tus ejemplos para tus proyectos. Me encantaría verlos. A continuación, hablaremos de un concepto muy interesante de colorear nuestro diseño utilizando una técnica similar a la detección de colisiones agarrando firmas de color y vecino más cercano.
8. Color 03: color por la distancia: En esta lección, hablaremos de la tercera técnica de coloración. Y para mí esta es una de las más interesantes que
aprendí y leí al respecto en uno de los artículos de Tyler hubs. Acaba de explicarlo. No hay códigos. Empecé a experimentar y encontrar mi forma de hacerlo. Por lo que esta técnica de coloración es algo similar a la detección de colisiones. Llamo a esta técnica de coloración coloración por distancia porque comprueba el agente o agente
coloreado más cercano a un objeto y utiliza ese color podría producir algo similar a una textura Voronoi con color. Para lograrlo, vamos a continuar desde el color un ejemplo o el primer ejemplo de técnica de color, el de interpolación de color. No obstante, vamos a cambiar algunas cosas. Entonces vamos a necesitar agentes. Y los agentes se van a posicionar de la misma manera que éste se posiciona. Para éste, sin embargo, vamos a cambiar el comportamiento de un agente, y también vamos a cambiar un poco al constructor. Entonces en lugar de aleatoriedad, vamos a crear una cuadrícula para esto. Voy a agregar dos argumentos para el constructor del agente. Entonces cuando creamos una instancia de la clase de agente, podemos decidir entonces la posición de la misma. Entonces en el bucle for que se va a crear la cuadrícula. Entonces para esto vamos a hacer el subrayado flotador x y el subrayado flotador y. y luego voy a cambiar estos dos para que sean x, que es nuestro nativo dentro de la clase, igual a lo que sea que el parámetro x por aquí va a igualar. Y luego para el radio, también lo
voy a inicializar más tarde dependiendo del tamaño de celda. Y hagamos tres el ancho del trazo porque no necesitamos que sea enorme. Y entonces no necesitaremos un ángulo en una velocidad porque a lo largo actualizado de la misma manera solíamos actualizar la anterior. Y no vamos a necesitar el color 1 y el color 2 porque vamos a usar un agente diferente para colorear estos colores van a ser aleatorios. Entonces puedes mantener uno de los ya sea kilovatios hora CO2 y luego cambiarlo a color porque eso es lo que hice básicamente. Y entonces puedo quitar eso de aquí. También puedo quitar eso. Y luego porque estamos dibujando círculos en su mayoría así que no
necesitamos la copa del trazo porque de todos modos no vamos a ver ninguna gorra. Y voy a mantener los mismos y también quitar todo esto. Ahora, solo ten un círculo y XY. Y tendrá un radio. En realidad en lugar de radio, voy a renombrar esto a tamaño. Entonces no es confuso como antes. Tamaños, básicamente el diámetro del círculo porque los círculos y elipses se dibujan utilizando el diámetro, no el radio. Y no necesitaré la actualización para el colide. Y ahora en lugar de tener el peso del trazo para ser constante, voy a hacer que el tamaño sea dividido por ocho. Y esto, o sumar puntos 0 lo convierte en un flotador. En lugar de solo hacer lo que hago usualmente me gusta esto. Porque es un número puedo fácilmente poner 0 y luego convertirlo en un flotador. Entonces esto me dará un cálculo más preciso. Lo siguiente que voy a hacer es salir aquí. Y en lugar de un ArrayList, voy a usar una matriz regular. Porque quiero especificar el número en función del recuento que especifiqué para una cuadrícula. Voy a hacer que esto cuente. Entonces solo puedo hacer entero, no puedo. En realidad esto se va a contar multiplicado por conteo porque quiero el área. Si bien aquí el recuento va a representar el número de filas y el número de columnas. Entonces digamos que quiero empezar 10. De acuerdo, así que vamos arriba y te explicaré lo que estoy tratando de hacer aquí. Entonces agente no va a ser simplemente los agentes que vamos a ver en pantalla como antes. Van a ser los agentes que veamos y el agente detrás de las escenas los que van a ser la fuente de nuestros colores. Entonces al principio, sí
elegí un color aleatorio, pero eso no es lo que vamos a usar para nuestro agente. Entonces estos van a ser los colores para nuestros agentes de color. Vamos a ser invisibles. Ahora sabiendo esto, puedo crear otra matriz de agentes. No obstante, éste va a ser los agentes de color. Y el conteo para esta matriz para la matriz de agentes de color va a depender de la cantidad de color que desee que tenga su diseño. Entonces si digo agente nuevo y pongo solo cinco colores, entonces encontrarás que la mayoría en ciertas zonas van a tener un color porque solo hay cinco agentes de los que agarrar color. No obstante, si pongo 50, Entonces obtendré más variación en color. Entonces empecemos con cinco, y vamos a mostrarlo. Por lo que ahora en realidad podemos eliminar todo esto. No tenemos actualización porque no vamos a mover nada. Ahora empezaremos a inicializar agentes por aquí. Entonces lo haré por entero I o por entero n, porque voy a usar I y j litro igual a 0 y n es menor que los agentes de longitud de punto. Y ahora para voy a decir n modulo contar. Entonces va a pasar de 0 a contar. Entonces aquí son 10, eso va a pasar de 0 a nueve. Y entonces entero j es n dividido por conteo. Por lo que iss hacer es conseguir el resto de dividir y por conteos va a pasar de 0 a nueve y luego de nuevo de 0 a nueve. Entonces va a pasar por cada fila porque j se está dividiendo por conteo. Porque sea lo que sea n en su momento, dividirlo por conteo va a pasar por las filas. Y ahora puedo decir para flotadores x, para la posición x, va a ser multiplicado por ancho de celda. Y entonces para y va a ser j multiplicado por la altura de celda. Y si inicializamos o antes de hacer eso, vamos a ir por aquí y hacer ancho y altura de celda para definirlo. Y luego por aquí. Por lo que el ancho va a ser ancho dividido por flotador de conteos, como lo hicimos antes. Y entonces la altura de la celda va a ser la altura dividida por el recuento de flotantes. No obstante, también quiero margen, o me gusta tener un margen en todo momento. Entonces lo voy a cortar desde aquí y ponerlo aquí en su lugar. Y luego lo voy a restar del ancho. Entonces la razón por la que estoy diciendo margen multiplicado por 2s, porque lo que defino como margen es solo un lado del mismo. Entonces desde el ancho, necesito uno a la izquierda y otro a la derecha. Entonces vamos a tener que multiplicarlo por dos para conseguir el doble de eso. Por lo que puedo restarlo del ancho y de la altura. Y luego por aquí, vamos a necesitar empujarlo. Pero antes de que hagamos eso, quiero mostrarles primero cómo se ve la beca. Entonces podemos empujarlo por el margen. Ahora, podemos decir agentes. Iba a igualar a nuevos agentes. Y el constructor requiere una posición x y una posición y un tamaño. Entonces vamos a inicializar también el tamaño por aquí y voy a hacer kit el mínimo, ya sea ancho de celda o altura de celda, para asegurarnos de que siempre tengamos un círculo, sobre todo que lo definimos como un círculo aquí de todos modos. Entonces si lo tienes, ahora mismo no vamos a tener un problema porque tenemos un cuadrado para Canvas. No obstante, si sí tenemos un lienzo vertical o un Lienzo horizontal, entonces esto nos ayudará a sacar solo cuadrados o círculos. Y ahora lo tenemos exhibido por aquí. Entonces si lo ejecuto, oh, debería tenerlo como n por aquí. Ahora si estuviéramos en ella, podemos ver los círculos. Y aquí es donde dije que vamos a tener que empujarlo. Entonces en este momento, porque borramos o restamos, duplicamos los márgenes del ancho. Ahora tenemos un 100 pixeles por aquí. Entonces si empujo esto por margen, simplemente agregándole margen, va a empujar todo hacia la derecha y hacia abajo. Para que puedas ver perfectamente las rejillas. También voy a dibujar rectángulos o cuadrados en la posición x e y por tamaño y tamaño. Entonces también vamos a necesitar, que veas por qué no es lo mismo aquí. Y por aquí. Porque estamos dibujando como si los círculos se están dibujando desde la esquina izquierda o superior izquierda. Si bien en realidad están siendo dibujados desde el centro. Por lo que puedes cambiar el modo de elipse a esquina o simplemente puedes agregarlo aquí. Por lo que simplemente puedo agregar tamaño dividido por dos. Y aquí, tamaño dividido por dos. Podemos elegir celular con o vender altura. Cualquiera de los dos va a estar bien. No obstante, por la misma razón de la que hablamos antes, voy a usar esto porque
va a asegurarse de que me va a dar el mínimo, ya sea ancho de celda o altura que sea más pequeño. Por lo que siempre cabe dentro de mis II células. En realidad, en lugar de hacerlo por aquí, lo
voy a hacer por aquí. O puedes hacerlo de esta manera solo para mantenerlo limpio para asegurarte de que solo se esté agregando después de que todos estos se estén creando una vez que se haya establecido el médico. Y la razón por la que no se están alineando con los rectángulos. Se han empujado círculos. No obstante, no se están alineando con los rectángulos porque los rectángulos se están dibujando desde la esquina. Entonces vamos a tener que hacerlo, sólo para que veamos que está funcionando bien. Yo sólo puedo hacer Centro por su modo rectángulo. Y ahora podemos ver que encaja perfectamente. Entonces ya no vamos a necesitar los rectángulos. Fue solo para nosotros poder ver que nuestra grilla está funcionando bien. Por lo que primero ancho de trazo, podemos hacerlo aún más pequeño dividiéndolo
por 12 porque ahora se está superponiendo todo o por 15. Y también voy a restablecer el fondo para que no veamos líneas torcidas de Bs. Ahora está mucho más limpio y voy a aumentar el conteo y disminuir los márgenes. Por lo que más márgenes, voy a mantenerlo en 20. Y luego por este, voy a hacer 50 o tal vez un poco más grande. Porque necesito algunos círculos más para ver cómo se están coloreando estos. Ahora para los agentes colorantes, lo voy a inicializar en un bucle. Entonces para este, porque va a ser aleatorio, voy a duplicar el constructor y crear otro que no tenga ninguno de estos. Y va a ser un aleatorio entre ancho menos margen también, o entre margen y ancho menos margen. Y lo mismo va para
yY entonces esto también, voy a hacer que sea un azar entre 35 y por aquí. Ahora puedo usar agentes en posición voy a igualar a un nuevo agente. Y ese va a ser el constructor vacío. Y si muestro esto por aquí, así que solo puedes cambiar los agentes de color y se va a
agarrar a cada uno y se va a mostrar. Hice agentes en lugar de agentes de color. Entonces ahora si solo para inicializarlo, realidad los
podemos ver en la parte superior. Para que los vean, son muy pequeños. Entonces si solo aumento el tamaño a algo así como 10 a 50, y en realidad no necesitamos que sean
tan aleatorios, así que sólo voy a hacerlos 20. Y ahora los podemos tener invisibles solo nos aseguramos de que estén ahí. Y cada uno tiene un color diferente. Mantendré esto como guía así no lo voy a
quitar para poder descomentarlo cuando quiera. Entonces digamos que si agrego 50, quiero ver cómo se ve. Puedo comentarlo y encender éste. Ahora tenemos nuestra grilla. De acuerdo, Otra cosa que quiero hacer es no solo conseguir el ancho de celda y vender altura, quiero que sea más pequeño. Entonces digamos que quiero dividirlo por 1.5. Por lo que puedo compensarlo. Y ahora puedo volver a la talla y cambiar esto a ocho porque no se van a solapar. Para que los pueda ver mejor. Y puedo compensar esto por un valor aleatorio. Y que los valores aleatorios van a ser. De 0 a tamaño dividido por dos. Para que los veas, son un poco más aleatorios y se ven un poco más interesantes. Y nosotros hacemos la altura también, o la posición Y también. Ahora tenemos un poco más de variación y el diseño, Volvamos al color, que es más importante ahora que tenemos nuestro diseño establecido, vamos a crear nuestro método de transferencia de color. Entonces dentro de nuestra clase de agente, voy a crear un método al que voy a llamar tomar color o tomar llamada. Y va a tomar otra matriz de agentes. Entonces voy a llamar a agentes. Y todo esto va a devolver un color. Ahora, lo que vamos a hacer aquí es agarrar la matriz de agentes que tienen color en ellos que vamos a usar para colorear un diseño basado en la distancia a esos agentes. Entonces voy a combinar toda la distancia dentro de una matriz o un diccionario. Y luego voy a hacerlo, luego voy a tamizar a través de todos estos agentes de color. Y luego voy a comprobar cuál tiene la distancia más corta a cualquiera de mis objetos. Entonces lo que sea más cercano a mi objeto, ese va a ser el color de mi objeto. Para ello, voy a usar un diccionario flotador. Voy a llamarlo compendios. Y luego inicializarlo es tan simple como hacer esto. Y luego voy a recorrer todas estas distancias o todos los agentes y comprobando la distancia. Cada vez, voy a comprobar la distancia entre x e y y los agentes x e y. y ahora esto se va a establecer dentro de la matriz o del diccionario. Entonces la forma en que puedes hacer esto es solo llamándonos y luego llamando al método set. Y el método set toma una clave. Entonces le voy a dar el índice, y luego va a tomar la distancia como valor. Entonces esta es la clave para el diccionario y estos son los valores para los diccionarios. Y la razón por la que estoy usando un diccionario es porque tiene un método de valores de clasificación de 18 años. Y esto los va a ordenar en orden ascendente. De esta manera, puedo agarrar el primero, y ese es mi agente de color más cercano a cualquier objeto que se especifique en este momento. Entonces voy a agarrar todas las llaves. Y puedes agarrarlos usando key array. Y luego voy a devolver al agente
al CHI 0 y voy a agarrar el color de eso. Esto es un bocado. No obstante, si lo tomas paso a paso, es muy fácil de entender. Entonces lo que estoy tratando de hacer es agarrar todos los agentes de color, comprobar su distancia con cualquier agente que esté especificando. Entonces puedo llamar a esto el color en la matriz del agente que tengo aquí, que es éste. Y luego por cada iteración, voy a comprobar la distancia entre ese agente en el array de agentes de color. Y luego voy a agarrar todas estas distancias, ponerlas dentro de mi diccionario flotador, y luego voy a ordenar los valores en orden ascendente para que consiga el agente de color más cercano a mi agente. Y luego voy a agarrar las claves para este diccionario para que pueda conseguir el agente en la primera clave o en la clave en la primera posición de la matriz y un diccionario. Y luego voy a agarrar el color de eso. Entonces ese va a ser el color del agente de color más cercano a mi agente. Ahora si vuelvo aquí, puedo usar esto dentro de mi matriz. Para que lo pueda hacer de esta manera. Color de punto agente. Por lo que puedo agarrar el color del agente y puedo asignarlo a los agentes dot-dot-dot tomar color del o looping a través de la matriz de agentes de color. Entonces esto va a realizar lo que acabamos crear en cada agente dentro de la matriz de agentes. Y luego lo va a poner a su color. Ahora si ejecuto esto, deberíamos obtener resultados completamente diferentes. Y ahora si quieres ver los agentes de color solo para ver cómo funciona esto, puedes mostrarlo y puedes ver que éste está más cerca de éstos, entonces es, tiene este color. No obstante, para éste están más cerca de esto, el, Por
eso tienen el color naranja y así sucesivamente y así sucesivamente. Y como dije, si quieres tener sólo cinco de estos, vas a tener menos variación de color porque hay menos posibilidades de que algunos colores vayan a aparecer ya que solo tenemos cinco colores en el primero lugar y estás obteniendo un color aleatorio. Entonces en este momento no tenemos un rosa, tenemos dos amarillos en su lugar. O incluso puedes elegir la probabilidad de elegir un color sobre el otro en tu elección de color aleatorio. Pero la forma en que me gusta hacerlo es solo suma 50 y de esa manera puedo obtener más variación de color. Y si exhibes esto, puedes tener más colores. Entonces si vuelvo a cinco, podemos ver que tenemos menos variación de color. Todavía es un look bonito, pero si quieres que aparezcan todos los colores, o bien
vas a tener que cambiar la probabilidad de que ciertos colores aparezcan más que otros. O puede agregar más agentes para los agentes de color. Entonces, cuanto más
añadas, más variación de color vas a tener. Entonces si haces que éste sea mucho más grande, y entonces podemos sumar más. Se puede ver mucho mejor el diseño. En realidad te da un tipo de textura Voronoi. Cuantos más colores tengas en tu matriz, más vas a poder verlo. Además, si cambias el trazo por aquí para llenar en su lugar. Y no hay trazo para éste, en realidad lo
puedes ver mejor. Por lo que esto es algo parecido a colorear usando una imagen de fondo. No obstante, agarra el color
del agente de color más cercano en lugar de simplemente agarrar cualquier píxel que esté debajo de eso. Pero si tienes un diseño que has creado para usar tu iPad o tu tablet Wacom o cualquier tablet que sea un ancho de lápiz. Entonces puedes crear degradados o unas formas geométricas, simplemente llenando el lienzo con colores y usando eso como imagen de fondo para colorear tu diseño. De la forma en que puedes obtener más variación de color
sin facilitar algo como esto, por ejemplo. Eso es todo para esta técnica de coloración. A continuación, vamos a abordar la cuarta técnica de texturizado y eso es agregar sombras a tu diseño.
9. Textura 04: sombras de descenso: Esta última técnica de texturizado también es muy sencilla porque estaremos agregando sombras
simples a nuestros diseños para crear algo de profundidad en nuestro trabajo. Para mostrarte lo que quiero decir con una simple sombra. Vamos a crear dos círculos. Y también ya he añadido el color y el fondo. Entonces si quieres llevarte esos colores, siéntete libre de hacerlo. Si quieres usar tus propios colores, en realidad lo animaría. Ahora vamos a crear la sombra simple. Hará eso fácilmente creando dos círculos. Ahora, el primer círculo va a ser la sombra porque lo que venga primero va a estar por debajo del segundo. Entonces esto será, digamos, ancho dividido por dos. Altura dividida por 2 estará en el centro. Y entonces sólo le daremos un ancho de un 100. Y entonces lo mismo va para este. La única diferencia es que el de abajo va a ser compensado un poco. Entonces, ya sea compensarlo justo a la derecha o puedes desplazar hacia la derecha y hacia abajo dondequiera que elijas la luz para venir de ellos, solo tienes que ir opuesta a eso. Entonces elijo la luz para venir de la esquina superior izquierda. Recuerda también que esta es una sombra muy simple, por lo que no es realista. Simplemente nos dará profundidad en nuestros diseños. Y ahora para diferenciar entre los dos, voy a darle a esto un relleno de negro. Y esta afoul de, digamos uno de los colores. Entonces le daré el primer color. Y no hagamos un derrame cerebral por ahora. Y esto es básicamente lo que quiero decir con una simple sombra. Entonces podemos disminuir eso, digamos que sean cinco. Y de esta manera agregamos un poco de profundidad. Ahora bien, esto no va a funcionar muy bien aquí. Pero para la clase que vamos a crear, una vez que el diseño esté completo, vas a ver un poco de diferencia cuando se trata de las profundidades de tu diseño. Entonces, eliminemos todo esto por ahora y empecemos a crear la clase. Entonces llamaré espiral a esa clase. Porque vamos a crear una forma de espiral. El primero que vamos a necesitar para esta forma de espiral es la posición X e Y principal. Y eso será flotador x e y. y porque una espiral es básicamente un círculo que se mueve para crear círculos concéntricos. Y con el fin de movernos alrededor del círculo, vamos a cumplir con varios componentes. Y esos son centro x, el centro y, radio de inicio y ángulo. Por lo que solo crearé esos centro x, centro. ¿ Por qué? Y luego arrancar radio y un ángulo. Y ahora inicializaré radio de inicio y centro acento a y y el ángulo eres primer radio de inicio. Voy a hacer que sea un valor aleatorio desde, digamos diez a 30 para arrancar radio va a ser el círculo inicial en esta espiral. Y entonces centro x está llegando a ser un valor aleatorio será desde el radio de inicio dos con radios de inicio menos. Y luego por centro, ¿por qué? Va a ser exactamente lo mismo, pero con altura. Y finalmente, para el ángulo, va a ser un valor aleatorio de uno a cinco. Realmente no importa. Y la razón por la que estoy aleatorizando ángulo o inicializando y
overescucho porque si no hago esto y entonces empiezo a crear la espiral, todos
empezarán desde el mismo ángulo. Por lo que necesito un poco más de variación en cada una de las espirales. Y se puede lograr esto al aleatorizar el ángulo inicial. Mostremos la espiral. Para crear la espiral, vamos a dibujar puntos alrededor del círculo, pero el círculo o el radio de ese círculo va a aumentar y eso va a estar creando la espiral. Entonces para eso, puedes usar puntos y luego usar un peso de trazo para el tamaño. Pero aquí sólo voy a usar una elipse va a ser a x e y, y luego va a tener una talla. Por lo que también inicializaré un tamaño. Y luego le añadiré un color. Ya tenemos matriz de colores. Entonces lo voy a usar aquí. También va a ser un color aleatorio. También definiré no trazo por aquí. En lugar de poner por aquí. Y por último, vamos a tener un método de actualización. Entonces en el método de actualización, vamos a aumentar el ángulo para que se mueva. Y entonces también crearemos nuestros valores x e y. Y van a usar el coseno de ángulo B, B Ángulo creciente. Y entonces y va a ser el seno del ángulo. Y entonces lo multiplicaremos por el radio. Y finalmente, para empujarlo centro hacia donde necesitemos, vamos a tener que agregar centro x y centro y. así epsilon y van a definir la posición
de la elipse que se está secando alrededor de un círculo. Y entonces el radio de inicio va a definir el radio de ese círculo. Y luego centro x y centro y van a definir el centro de ese círculo y el ángulo se incrementará. Esto va a dibujar el mismo círculo una y otra vez alrededor del punto central. Entonces lo que tenemos que hacer es aumentar el radio de arranque. Por lo que también voy a incrementar el valor que llamaré tinta. Y lo definiré aquí arriba. Y luego lo sumaré al radio de inicio. Pero tenemos que hacerlo antes de la multiplicación. Entonces van por aquí y crean una instancia de una espiral de muerte. Se puede ver cómo realmente está funcionando para crear una nueva espiral. Y luego dentro del juicio volvió a mostrar una actualización. Entonces espiral dot display glenn captación porque me olvidé de inicializar el tamaño. Por lo que el tamaño va a ser un valor aleatorio en la patada de 5 a 7. Y ahora podemos ver el inicio de un círculo. Entonces esto tendrá un radio de inicio, y luego a medida que se
mueve, incrementará el radio, por lo que crea una espiral. Ahora esto es divertido y todo, pero creo que se verá aún más interesante si le agregamos un poco de ruido a este movimiento. Entonces en lugar de crear círculos perfectos, Vamos a añadir algo de distorsión. Entonces si vuelvo aquí, puedo agregar dos valores y llamaré a uno distorsionar X y a la otra línea. Y antes de la inicialización x e y. Inicializar la historia x para ser ruido. Y hagámoslo x dividido por un 1000. Y luego usaré ángulo para el segundo. Y luego para el almacenamiento. ¿ Por qué? Voy a hacer ruido y hagamos que la báscula sea un poco diferente. Por lo que voy a hacer 3000 para este. Y luego usaremos ángulo para el segundo o incluso ángulo, multiplicarlo por 0.5, Digamos que solo para cambiarlo un poco. Y puedo añadir eso al ángulo. Entonces estoy distorsionando y sigo escribiendo este gris
porque en realidad está destruyendo el ángulo perfecto para ese círculo. Y luego voy a añadir distorsión y a la posición y aquí. Ahora si lo ejecuto, y se puede ver que hay un poco de ruido en la espiral porque agregamos esta distorsión por aquí. Esto da una sensación más natural. Entonces se siente como si alguien realmente lo estuviera probando a mano. También puedes hacer que ambos sean iguales en cuanto a la segunda dimensión del ruido. Y eso no lo destruirá tanto. Por lo que aún mantendrá la forma circular y no se parecerá más a una elipse. Entonces depende de ti cómo quieres distorsionar la imagen. Entonces vamos a mantenerlo así. Una cosa más que podemos agregar a este método de actualización es variar la dirección del ángulo. Entonces en este momento todo va en el sentido de las agujas del reloj. Podemos moverlo para ir en sentido contrario a las agujas del reloj también. Pero veremos esto si creamos una matriz de espirales. Entonces vamos a crear una matriz. Le daré un conteo de 10. Esto está llegando al interior del labio. Y lo mismo vale para éste. Ahora si corro esto, vamos a ver varias espirales. Entonces como puedes ver, todos
van en el sentido de las agujas del reloj. Cambia esto. Voy a crear otra variable a la que voy a llamar, por lo tanto dirección. Y luego va a tener un valor aleatorio de 0 a uno. Y entonces le daré una probabilidad del 50 por ciento para ir en el sentido de las agujas del reloj. Entonces si la dirección es mayor o menor a 0.5 porque el 50% es la mitad. De lo contrario, necesito el ángulo para ir en dirección opuesta. Pero lo haré a la misma velocidad. Y ahora si corro esto, verás que algunos de ellos irán en el sentido de las agujas del reloj, mientras que otros van por lo contrario. Entonces éste va en sentido contrario a las agujas del reloj, agujas del reloj, y éstos van en sentido horario. Ahora la parte importante es crear las sombras para crear la profundidad. Entonces como puedes ver, esto es muy 2D. Y para ello, voy a crear otro método al que voy a llamar gráfico. Entonces esto va a tener un offset, un color. Y cualquiera de aquí, voy a tener estos dos. Y voy a tener color como éste, que es C. Y luego también añadiré el offset como lo hicimos antes a x e y. esta manera puedo llamar al gráfico dos veces al año, una para la sombra y otra para la forma principal. Entonces para la sombra, voy a llamar gráfica con, digamos, un offset de 15 y un color de negro. Y luego voy a llamar a gráfico otra vez. Pero esta vez con un desplazamiento de 0 y carbón como el color aleatorio que creamos por aquí. Ahora si ejecuto esto, vamos a tener una sombra que siga la espiral. Hagámoslo en realidad cinco. Para que lo veas mejor. Ahora notarás una cosa que está muy mal con esta forma porque estamos dibujando la sombra para cada punto. Algunas de las veces te vas a encontrar que la sombra va a ir por encima de la forma principal porque se están moviendo por separado. Entonces como puedes ver por aquí, realmente no se ve como algo debajo de la forma principal. Y para ello, vamos a usar gráficos P. Por lo que es muy fácil arreglar esto porque los gráficos P
nos permiten crear múltiples capas que nunca se intersecarían. Por lo que literalmente van encima uno del otro sin reunirse nunca. Por lo que es como moverse en el eje z, similar a Photoshop e Illustrator y todas estas apps que usan capas. Esto es muy sencillo de hacer. Solo voy a crear una capa de gráficos de pico por aquí. Y en lugar de solo usar el relleno así, voy a usar capa para ambos. Y luego para cualquier gráfico p aquí van a tener que empezar por empezar. Y luego y dibujar. Y luego estamos pasando la primera capa para ésta, que va a ser la capa de sombras porque necesitamos que esté en la parte inferior. Y en la segunda capa va a estar el gráfico principal. Y luego lo voy a sumar por aquí. Entonces necesitaré dos capas. En primer lugar, llamaré a la capa 1. Segundo parámetro va a la capa 2. Ahora en la pestaña principal, esto se va a quejar. Por lo que también vamos a necesitar crear dos p capa gráfica por aquí. El primero al que voy a llamar, y como tenemos matrices, vamos a tener que crear una matriz también. Entonces el primero que vamos a ser gráficos. Por lo que está sosteniendo todos los gráficos principales. Y eso va a ser un gráfico UP que tendrá el mismo conteo y lo mismo exacto para las sombras. Y luego aquí dentro mientras inicializamos estas espirales, también vamos a crear el gráfico o cada capa gráfica para la matriz gráfica. Se va a crear gráfico o crear gráficos. Vamos a mantener todas las capas del mismo tamaño que el lienzo, así que ancho y alto, y luego lo mismo va para las sombras. Esto va a requerir los dos argumentos, que van a ser el primero que dijimos es las sombras. Y entonces el segundo va a ser el gráfico principal. Pero ahora si ejecuto esto, no
vamos a ver nada porque los gráficos P solo muestran si lo secan usando imagen. Por lo que la primera está garantizada sombras en la posición I. Y esta imagen se va a dibujar en el 000 porque tiene el mismo ancho y altura que el lienzo. Y entonces la segunda imagen va a ser cada uno de los gráficos. Y también va a estar en el 000. Ahora si corro esto, veremos que todos tienen golpes de nuevo. Entonces voy a quitar el NoStroke de aquí y voy a
tener que ponerlo dentro de aquí porque requiere estar dentro de la capa. También puedes agregarla una vez que inicialices los gráficos por aquí. Pero se va a molestar porque vas a tener que escribir, empezar dibujos y dibujar de nuevo sólo para añadir esto. Por lo que es mucho más fácil simplemente agregarlo a esto porque se convierte en una línea más. Y ahora si ejecuto esto, debería funcionar. Entonces ahora como va la espiral, no se superpondrá. Por lo que la sombra nunca se superpondrá al gráfico principal. Añadamos más espirales para que llene la página. Para que puedas ver cómo la sombra efecto todo el diseño. Después de ejecutar esto un poco, puedes empezar a ver un poco más de profundidad y el diseño en lugar solo tener algo plano sin esa sombra, aunque sea muy sencillo y no muy realista, todavía ver un poco de dimensión a algo como esto puede agregar muchos intereses a algunos de los diseños que tienes. Entonces si alguna vez sientes que tus diseños son un poco planos, entonces solo agrega algo de sombra simple compensando la misma forma y mira si eso lo arregla. Eso es más o menos para la última técnica de texturizado. A continuación, discutiremos la última técnica de coloración, y eso es usar máscaras.
10. Color 04: color con máscaras: Para la técnica final de coloración, vamos a discutir las máscaras. Si estás familiarizado con la máscara de Photoshop, entonces esto debería ser un pedazo de pastel. De lo contrario, sólo tienes que seguir adelante y será fácil de entender. Ahora la idea de usar máscaras como forma de colorear tu diseño no es necesariamente muy convencional. Pero la forma en que lo veo como que puedes codificar cualquier cosa que quieras, cualquier gráfica que quieras, Digamos que solo círculos aleatorios en la pantalla. Y luego puedes usar eso para enmascarar una capa de fondo que creaste de otros círculos aleatorios. De esa manera, parece que el diseño en la parte superior, que es la máscara, está siendo coloreado por la capa subyacente. La razón detrás de poner esto como técnica de coloración es porque cada vez que usaba máscaras en Photoshop, siempre
sentí que es una manera de revelar algo para mi forma o para mi máscara. Entonces digamos que tienes silueta de una bailarina y luego quieres poner un fondo de estrellas que es una forma de colorear esa silueta. No es sólo negro o de cualquier color que tuviera la fotografía. Entonces el concepto es muy sencillo y la coda también. Ahora para máscaras, vas a necesitar ya sea gráficos p o imágenes. Entonces digamos que tienes una imagen o imagen en blanco y negro que quieres usar como máscara. Se puede importar eso o cargar eso como imagen al procesamiento y usarlo como máscara. Pero para este ejemplo, sólo
vamos a usar gráficos P. Entonces vamos a crear la máscara usando el arte generativo y también la capa de fondo, que va a ser nuestro color aquí. Empezaremos primero con una sola forma en cada una de las capas, solo para mostrarte cómo funciona la máscara. A la primera la voy a llamar máscara, y a la segunda sólo voy a llamar a G y luego lo inicializaremos por aquí. Entonces para máscara, y ahí va a crear unos gráficos como lo hicimos nosotros. La lección anterior va a ser del mismo ancho que el lienzo y la misma altura. Lo mismo vale para la capa gráfica. Y ahora podemos dibujar nuestras formas dentro de cada una de ellas. Por lo que para dibujar en cualquier capa gráfica de PPE, vas a necesitar el método start draw y el método draw. Y siempre tendrás que hacer referencia a la capa gráfica. Entonces la variable, el nombre de la capa gráfica. Entonces aquí la capa gráfica p que creamos se llama máscara. Entonces vamos a tener que referirlo una y otra vez. Entonces incluso por el trazo, por el relleno, por las formas que lo vas a dibujar. Siempre vas a tener que hacer referencia a la máscara. Es decir, si quieres dibujarlo dentro de la máscara, si quieres dibujarlo dentro de G, van a tener que hacer referencia a ese G. Y ahora voy a dibujar sólo un círculo. Y esto requerirá una posición x, posición
y, luego, un ancho. Y para secar, solo usaremos la imagen y referiremos esa capa y luego la posicionaremos. Y como es del mismo ancho que nuestro lienzo, entonces solo lo pondremos en 000 para que se ajuste al lienzo. Ahora si corro esto, deberíamos ver ese círculo. A continuación vamos a crear éste. Por lo que también va a empezar con el empate inicial y luego dibujar. Y entonces también dibujaré un círculo. Yo lo haré un poco más grande, solo así y lo enmascaramos, verás que se hace más pequeña porque esta máscara la va a cortar. Y luego lo dibujaremos de la misma manera que dibujamos la máscara. Y ahora esta es la capa gráfica, la capa gráfica G, y está encima de la máscara. Cambiemos los colores de los dos usando uno de los colores de mi matriz de colores. Yo sí usé el mismo que he usado antes en las otras lecciones. Y para agregar un color a nuestra capa gráfica, solo
tienes que rellenar. Entonces de la misma manera que lo hacemos aquí dentro, dentro de todo el boceto, la única diferencia es que lo estamos atrapando dentro de esta capa. En lugar de simplemente ponerlo en la capa gráfica principal, sólo
elegiré cualquiera de los colores. Realmente no importa ahora mismo. Y también haré NoStroke por ambos. Porque para la capa de máscara, si usas máscaras antes, para blanco o cualquier cosa que sea blanca va a mostrar lo que esté debajo de ella, y luego el negro va a ocultar todo lo demás. Entonces si tienes un círculo que es blanco con un trazo de negro, entonces. Lo que se acerque a ese golpe se va a esconder. Entonces simplemente haré un no derrame cerebral porque no quiero que interfiera con un enmascaramiento. Ahora que sabemos cómo se ven o cómo se ve la máscara, solo
podemos quitarla por aquí y podemos ir antes de dibujar la imagen, solo
puedo hacer g dot mask. Usando la máscara. Entonces lo que quiera enmascarar, solo
usaré el método de máscara en eso y luego usaré la capa de máscara. Y si lo ejecuto, debería ser más pequeño ahora porque la máscara ha cortado esta forma. Pero si miras de cerca, entonces verás que es un poco chunky. Y la razón de esto como porque no tenemos fondo para la capa ni para ninguna de las capas. Entonces para la capa de máscara, Vamos a añadir un fondo de negro porque queremos esconder cualquier cosa ahí, porque si lo ponemos para que sea blanco, entonces todo se mostrará. Entonces sólo voy a hacer 0 por negro ahora, imágenes mucho más crujientes porque hemos restablecido el fondo y podemos hacer lo mismo por éste. No obstante, esto no se va a mostrar por aquí porque la máscara es más pequeña que esta capa que está tratando de enmascarar. No obstante, si el círculo es más pequeño que, podremos ver el color detrás de él. Entonces si pongo un fondo que es rojo, o digamos eso como un color de la matriz. Entonces digamos el segundo color en la matriz. Y luego haré esto mucho más pequeño. Entonces haré esto más grande, y luego haré de esto un 100. Así que acabo de cambiar los tamaños. Y ahora si lo ejecuto, en realidad veo la capa de fondo para esta capa de gráficos. Por lo que hemos coloreado nuestro círculo dentro de la máscara usando lo que sea que esté en el fondo. Para este ejemplo, parece contrario a intuitivo crear todo esto solo para crear dos círculos de diferentes colores que podríamos haber creado usando sólo dos líneas de código. No obstante, esto va a ser beneficioso si tienes algo moviéndose de fondo y solo quieres una mascota con un montón de círculos aleatorios en la parte superior. Entonces si vuelvo a cada una de estas capas y en lugar de solo crear un círculo para cada una, crearé allí un montón de círculos. Para este, crearemos una matriz. Y vamos a darle sólo un recuento aleatorio que voy a inicializar por aquí. Los mantendré todos del mismo tamaño por ahora. Pero también puedes aleatorizar los tamaños. Entonces si solo quito la máscara un poco y aleatorizo las posiciones de 0 a ancho y luego de 0 a altura. O también se puede, si se define esto como un radio por aquí, entonces él puede hacer desde se relaciona con el diámetro porque eso es lo que es,
lo que en realidad es. Y luego de diámetro dividido por dos a qué? Menos diámetro dividido por dos. Y lo mismo pasa por aquí. Y ahora tenemos un montón de círculos. Entonces démosles en realidad diferentes colores. Y hagamos el color de fondo. El que definí aquí, para que el azul no se esconda. Aumentemos esto a tal vez 50. Entonces tenemos mucho más. Ahora bien, si revelo la capa de máscara, deberíamos poder ver una forma diferente de colorear ese círculo. También creemos lo mismo para la máscara. Y hagámoslo más pequeño. En lugar de tener solo un círculo, haremos unos aleatorios y no necesitamos el relleno aleatorio porque necesitamos que todos sean blancos para mostrar lo que hay debajo de él. Y vamos a redefinir esto por aquí para que no tengamos duplicados. Y me olvidé de cambiar esto a máscara. Ahora debería funcionar. Y la razón por la que esto está sucediendo donde en realidad no
estás viendo dónde empiezan y terminan las cosas es porque mi fondo para el lienzo real es del mismo color que el fondo para esta capa gráfica. Entonces si cambio esto a, digamos 30, que va a ser de color gris oscuro. Y podrás ver la máscara y la capa subyacente. Y también creemos un conteo diferente para máscaras. Entonces es por eso que agregué esto como una técnica de coloración porque puedes ver que sea cual sea la forma que crees en la capa de máscara, sea cual sea el diseño ,
ya sea en movimiento o estático, entonces podrás colorearlo de maneras únicas porque tú están usando otra capa que en realidad se puede mover también si quieres que sea animada. Pero para este ejemplo, sólo
estamos haciendo imágenes estáticas. Hay otro ejemplo u otra forma que quiero mostrarles cómo podemos enmascarar esto. Entonces en lugar de sólo círculos aleatorios, vamos a crear una columna de líneas. No va a ser diferente. Es sólo un ejemplo diferente que quiero mostrar. En lugar de esto, entraremos en la línea do. Y no va a tener un método de no trazo en este, pero va a tener un no relleno. Pero aunque no ponga éste porque las líneas sólo toman golpe, esto no afectará nada. Pero me gusta tenerlo por si cambio algo o reescucho o añado algo que requiera un relleno y no quiero que tenga un relleno. Entonces voy a crear una línea o en realidad vamos a mantener el círculo C. Y luego solo lo comentaré y crearé una línea por aquí. Por lo que quiero que cada una de las líneas pase de 0
al ancho y luego se extienda a lo largo de la altura de la pantalla. Por lo que sólo necesitaré una altura de celda o necesito
definir una altura de celda basada en el contador que tengo. Entonces solo haré flotar. La altura celular va a igualar la altura de la pantalla dividida por el flotador de m conteo. Es decir, si no lo hice flotar, Sí, los hice enteros. Y luego para las exposiciones, va a ser estático. El único que va a cambiar es la posición y. Entonces para x, vamos de 0 al ancho. Y luego sumaré la y. para cada uno de los lados están libres cada punto de la línea. Entonces lo haremos multiplicado por la altura celular. Y lo mismo pasa por aquí. Y porque el trazo es por defecto negro, así que esto no va a mostrar nada. Tendré que cambiar máscara a máscara, trazo a blanco. Y también definirá el peso del trazo en función de la altura de la celda. Entonces haré altura celular dividida por dos porque no quiero que cubra toda la pantalla. Si lo pongo como curva de altura de celda y solo cubriremos toda la pantalla, mostrar toda la capa de fondo. Y entonces también lo podemos mostrar por aquí solo para comprobar cómo se ve antes de usar la máscara. Entonces vamos a reducir el número de conteos. Si lo hago 10 y le agrego un margen también. Entonces lo pondré por aquí. Y la razón por la que estoy poniendo estos encima de mis formas que estoy creando es sólo porque quiero que se cierre. Entonces sé que pertenecen a ésta y sé que no los cambiaré en ningún otro lugar. Va a ser sólo para éste, pero siéntete libre de ponerlos aquí como variables globales. Entonces para margen, hagamos 50 y luego haré que esto vaya desde margen y luego ancho menos margen. Y luego quiero que esto sea empujado por la altura celular dividida por dos. Y lo mismo vale para esto. Por lo que también puedes crear una variable para esto porque ahora estamos duplicando. Y para mantener limpio nuestro código, solo
deberíamos convertirlo en una variable. Entonces lo voy a llamar
posiciónligera posición k Los comerciantes son demasiado grandes, así que hagámoslos 20. Y ahora no tenemos que mostrar la máscara y usemos el método de máscara. Y voila, usar máscaras es realmente divertido en el arte generativo porque eres capaz de generar la máscara y la capa de fondo al mismo tiempo y usar una para ocultar la otra. También tengo un tutorial de YouTube sobre algo animado, estar en el fondo detrás de esas máscaras. Entonces si te interesa ver cómo se crea eso, entonces sólo tienes que ir a revisar ese video. Pero para estos ejemplos, estoy tratando de hacerlos estáticos solo para enfocarme
más en las técnicas que enfocarme en la animación o complicar los ejemplos. Eso es todo lo que tenemos que aprender hoy sobre estas técnicas de coloración y texturizado. Para la siguiente lección, vamos a crear un proyecto utilizando algunas de las técnicas que hemos utilizado las en las lecciones.
11. Proyecto final: Ahora que terminamos con todas las técnicas, vamos a sumergirnos en un proyecto. Entonces, para tu proyecto, vas a combinar de dos a tres técnicas de las lecciones anteriores a esto, ya sea usando uno de muchos ejemplos de una de las lecciones y agregándole otra técnica o viniendo con tu propio ejemplo. Entonces para mi proyecto, voy a combinar sombras y la primera técnica de texturizado, que es crear mis propias formas. Y estaré creando papeles aleatorios dispersos en la pantalla. Entonces lo haré, los papeles no van a ser rectángulos regulares. Algunos de ellos van a ser papeles rasgados, sabiendo que el papel es una forma rectangular, la
mayoría de las veces, voy a crear una función que tiene cuatro parámetros para empezar, y sólo lo llamaré papel. Por lo que los cuatro parámetros van a ser los mismos que cualquier rectángulo. Para flotar x, flotar y, flota ancho, y flotar a la izquierda, porque quiero que parte del papel se rasgue desde el borde inferior. Voy a crear el papel usando vértices. Y eso siempre comienza con Bin shape y termina con una forma. Entonces voy a empezar con eso. Y luego más vértices. El primero va a ser de la esquina superior izquierda, y esa será nuestra posición principal X e Y. Entonces eso son x e y. y luego nos moveremos hacia la derecha y luego hacia abajo hacia la izquierda, y luego cerraremos la forma. Entonces ir a la derecha, eso significa que vamos a movernos por el ancho desde la exposición. Entonces vamos a sumar W o el ancho aquí. Haz la exposición y luego y se va a quedar igual. Y luego para la tercera, nos vamos a quedar donde estamos ahora mismo, en el eje x y luego en el eje estamos llegando a sumar la altura porque vamos a bajar. Y por último, voy a volver a la izquierda, pero somos tan Dan, así que en el eje x vamos a volver a x, pero en el eje y nos vamos a quedar con el mismo que teníamos antes. Y ahora vamos a colorear aquí. Entonces pongámoslo a las 00, y luego hagámoslo un 100 por un 100 y 150. Entonces así es como se ve un papel normal rectangular. Pero queremos sumar aquí un desgarro al papel para eso. Recordando desde la primera lección, sé que estoy llegando a necesitar una resolución para ahora cuántos puntos voy a necesitar para las tarifas. Y también requiero inicializar las posiciones de cada uno de los puntos para poder conectarlos al primero
y al último porque voy a usar vértices curvos en lugar de vértices. Y sabiendo desde la primera lección vamos a necesitar algunos puntos de control antes son algunos de los vértices centrales con el fin de ver ese punto. Entonces voy a crear una matriz vectorial p. Voy a llamarlo posiciones o POS. Y entonces va a ser de resolución de longitud. Y esto tiene que ser un entero porque esto no permitirá nada más que un entero. Y luego voy a necesitar el espaciado entre cada uno de estos puntos. Algo así como crear una cuadrícula. Entonces termina el círculo. En la primera lección tuvimos que hacer el ángulo, pero para éste sólo vamos a hacer los espacios entre cada punto. Y simplemente podemos hacer eso creando una variable. Y va a ser el ancho del papel dividido por el flotador de la resolución. Y estamos convirtiendo esos a flotar porque queremos una división más precisa. Y luego vamos a usar un bucle for para crear esas posiciones. Entonces la exposición para cada uno de estos va a ser, multiplico por el espaciado. Entonces exactamente igual que crear una cuadrícula. Y la posición y para este va a ser la altura. Este. Ahora voy a crear esas posiciones creando una nueva instancia de la clase vectorial p y agregando cada una en su respectiva posición x y posición y. Ahora que esto se inicializa, podemos usarlo por aquí. Por lo que esto irá en el mismo espacio que éste. Pero porque también quiero que esto exista, voy a crear un si condicional aquí. Y voy a comprobar si la resolución es mayor a 0, entonces quiero hacer los vértices de curva. De lo contrario, yo quería hacer esto. Entonces si la resolución es igual a 0, entonces quiero que esto suceda de lo contrario. Y simplemente elimina cualquier valor negativo que voy a hacer de otra manera, si Raz es mayor que 0, también
puedes hacer lo contrario, pero esto es solo para eliminar cualquier valor negativo. Ahora vamos a crear un bucle for. Pero como vamos de derecha a izquierda aquí, vamos a pasar de la última posición en la matriz a la primera posición. Y eso será si igualo resolución minos1. Entonces la posición final en la matriz a I, o la condición va a ser si yo es mayor igual a 0, así que vamos a bajar a 0, y luego vamos a disminuir en lugar de incrementar. Esto es sólo ir por el camino opuesto a nuestro bucle normal para. Y ahora vamos a llamar al método de texto rojo de la curva. Y esta va a ser posición yo punto x y luego posicion me dieron y. entonces consiguiendo el vector p y luego obteniendo la exposición, y luego obteniendo la posición y para la y. y ahora vamos a añadir el quinto parámetro o argumento en nuestro trabajo método. Y intentemos 0 solo para asegurarnos de que todo esté funcionando bien. Y luego intentemos cinco también antes de continuar en y dar forma porque no hemos cerrado la forma, solo
podemos llamar a ropa. Y pasará del último punto al primero. Y ahora verás que se está cerrando. Pero aquí tenemos un problema porque no
tenemos un vértice de curva al final por aquí que se conecte con éste. Entonces solo llamaré vértice curvo por aquí al final. Y esa será la posición 0, x, e y. y ahora tenemos un rectángulo. El motivo por el que no necesitamos uno antes de éste por aquí, como hicimos con el círculo, es porque ya tenemos vértices ante él. Por lo que los B cuentan como, o éste cuenta específicamente como el otro punto de control para el vértice actual o el punto de control previo para el primer vértice de curva por aquí. Ahora para ver que en realidad tenemos varios puntos por aquí, puedes o cambiar el color de los vértices por aquí, o lo que vamos a hacer es agregar un desplazamiento Y y lo hacemos por aquí. Por lo que el desplazamiento Y va a ser un valor aleatorio de dos a dos negativos. Y luego lo agregaremos a éste. Ahora si aumento esto a 15, veré más. Yo quiero hacer algo un poco más elegante. Y eso es agregar una onda sinusoidal a las compensaciones Y. Además de la aleatorización. Para eso, voy a agregar dos variables que usualmente usas con cualquier onda sinewave, y esa será la frecuencia. Y le daré un valor de un 100 y luego amplitud. Y le daré un valor de cinco. Y luego agregando a esto, estamos haciendo una onda sinusoidal. Porque quiero que la ola pase por la parte inferior de la página. Voy a multiplicar i por la frecuencia para el ángulo. Y entonces voy a multiplicar eso por la amplitud. Y no hace falta poner esto entre paréntesis porque la multiplicación ocurrirá antes de cualquier adición. Entonces aquí hay una jerarquía que no necesitamos paréntesis cuatro. Y ahora si corro esto, deberíamos tener una onda sinusoidal. Entonces si reduzco esto a cinco, obtenemos una onda sinusoidal. Si aumento esto a 115, esto a 200, y luego lo incremento a 15. Ahora, podemos ver la onda sinusoidal un poco mejor. Ahora si quieres que la amplitud sea mayor, solo
puedes aumentar esto. Y la amplitud es básicamente la altura de cada una de las olas. Y entonces la frecuencia es lo frecuente que es la onda. Entonces si lo tenemos a 200, entonces conseguiremos más olas. Y si lo tenemos a los 50 va a conseguir menos olas. Lo mantendré a cientos y esto a las cinco. Y nuestro se asemeja al papel dibujado. Ahora agreguemos más papel y lo aleatorizemos a través de la pantalla. Entonces simplemente no podría dentro de un bucle. Y voy a inicializar el conteo para los puestos. Voy a hacerlos aleatorios de 0 a la anchura y luego aleatorios de 0 a la altura. Si ejecuto esto, va a ser un desastre porque también nos olvidamos de agregar x e y a estas posiciones. Por lo que puedes agregar por aquí más x o puedes sumar por aquí. Y esto se va a sumar y. y ahora si corro
esto, debería funcionar perfectamente bien. Ahora para la sombra, voy a añadir todo esto otra vez. Pero con un desplazamiento, puedes crear una función para crear la forma del papel y luego la sombra para ella. Pero sólo lo voy a hacer dentro de mis métodos de papel. Y como sabemos, la sombra tiene que ir primero porque lo que vaya primero, estará por debajo del código que viene después. Entonces esta va a ser la sombra y la voy a compensar usando push y pop. Y luego usando los métodos de traducción, algunos aislando el movimiento para esto o la traducción para éste. Y luego haré traducir y haremos un desplazamiento x y un desplazamiento y. Entonces hagámoslo 33. Y entonces también, la razón por la que se utiliza al persa no empujar la matriz es porque esto me
permite empujar los estilos y la traducción o la transformación. Y luego voy a añadir el relleno. Entonces para la sombra, el relleno va a ser de este color. Y entonces mi papel está llegando a ser blanco. Ahora si corro esto, deberíamos ver que se forma una sombra. Y luego aquí arriba voy a hacer NoStroke por todos ellos. Además, la sombra hace visible el papel contra el fondo, o especie de aumenta el contraste entre los dos. Si tu fondo es de color claro como el mío, pero si quieres usar un trazo, entonces siéntete libre de hacerlo. Por supuesto. También agregué color por aquí. Si quieres, si querías agregar diferentes colores para el papel, no lo voy a usar. Yo solo quería mostrarte que puedes hacer eso si quieres. Y luego agregué un, una matriz para un texto colores si quieres aleatorizar eso también. Entonces añadiré otro color a eso más adelante. Por lo que podemos ver que se puede aleatorizar el color para el texto. También podemos aleatorizar la altura del papel. Yo lo voy a llamar altura de papel, y lo vamos a sumar por aquí. Entonces la altura del papel va a ser un valor aleatorio y voy a hacerlo de 180 a 30. Y el ancho que voy a mantener fijo en 150. Ahora vamos a ejecutar esto. Y debido a que estamos dibujando los papeles desde la esquina superior izquierda, no los vamos a ver ir por encima de la balanza desde arriba donde la izquierda, pero vamos a verlos ir a la derecha o abajo. Entonces para eliminar eso, voy a quitar el ancho del papel de aquí y la altura del papel de aquí. Entonces cambiaré esto por ancho de papel. Es una buena práctica si comienzas a ver las cosas repitiendo para solo crear una variable para ellos o una función. Y para esto, será ancho de papel igual a 150. Y ahora no deberían salir de los límites. Ahora vamos a crear el texto dentro de los papeles. Para eso, voy a crear un método llamado texto. Y va a tener una serie de líneas. Y he bosquejado todos esos de antemano así que sé qué parámetros necesito. Entonces alanine un número de líneas porque he aleatorizado eso. Y entonces también necesitaré una exposición porque quiero saber por dónde empieza dentro de mi ponencia. Y entonces necesitaré una posición y. Y por supuesto, va a necesitar un ancho y una altura para cada una de las líneas. Y por último, voy a necesitar márgenes laterales y márgenes superiores. Y la razón por la que los estoy separando, porque a veces se ve que los márgenes superiores son un poco más grandes y algunos cuadernos. Entonces voy a tener un margen lateral y luego un margen superior. Y los lleno con los colores por aquí. Así que creé otra matriz que llamo colores de texto. Antes solo tenía un color, pero ahora copié todo lo que había aquí. Ya no necesitamos esto, pero si quieres tener diferentes colores para el papel también, puedes anuncios de colores más profundos. Pero voy a aleatorizar y sólo los colores del texto. Y voy a quitar el color de fondo porque este es el mismo. Entonces no tenemos algo ni un papel como si se hubiera cortado. Entonces sólo tendré esos colores. Y la mayoría de estos colores son los mismos que el que hemos usado antes. También puedes pausar y copiar estos colores. Ahora volviendo por aquí, voy a aleatorizar los colores para el texto. Por lo que cada papel tiene un texto de color diferente. Y para eso voy a usar exactamente lo que he usado antes con la aleatorización. Por lo que sólo se va a la aleatorización ser Index. Y tiene que ser un entero porque aleatorio produce un flotador y eso será de 0 a la última posición en la matriz, porque vamos a tener un montón de líneas. Va a ser similar a crear filas dentro de una cuadrícula. Por lo que crearemos un bucle que va de 0 al número de líneas. Porque sólo surgió. Simplemente vamos a crear una variable a la que voy a llamar altura de texto. Y eso será lo multiplicaré por la altura que le daría. Por lo que la altura de cada línea. Y simplemente dibujarán un rectángulo. Por lo que el rectángulo va a ir desde el margen lateral x más. Entonces es como empujar por el margen lateral que inicializo o que inicializaré aquí con un argumento. Y luego para y, va a ser y más textos altura más el margen superior. Entonces vamos a empujar a cada uno de ellos por la altura del texto. Y va a ser diferente cada vez porque se multiplica por el I.
Y entonces el margen superior va a ser el mismo, lo que va a empujar todo hacia abajo. Y luego el ancho menos margen lateral multiplicado por dos, porque lo estamos empujando por un margen lateral, vamos a tener que restar dos márgenes laterales de este lado porque va a ser empujado por uno. Y luego finalmente, va a tener una altura que se va a especificar por aquí. Y empujemos el ancho y la altura hacia abajo para que el código sea mucho más limpio y más fácil de leer. Ahora lo voy a llamar dentro de los métodos de papel. Y le daré cinco líneas. Entonces no lo voy a aleatorizar al principio. Para que veas si hay algún problema. Y luego va a tomar la misma exposición que el papel, la misma posición y que el papel, misma anchura que el papel. Y luego va a tener una altura específica. Entonces voy a hacer cinco. Y por el margen lateral, lo voy a hacer 10. Y luego por el margen superior, voy a hacerlo 30. Ahora si ejecuto esto, vamos a ver un ligero problema en nuestro código. Y eso es que no hay interlineado. Por lo que no hay espaciado entre las líneas. Es decir, por lo general están en texto real. Entonces vamos a tener que multiplicar la altura del texto aquí por dos. Eso asegurará que tengamos una altura de texto y luego un espacio entre cada una de las líneas que sea equivalente a la altura del texto. También puede crear un espaciado de línea diferente a la altura del texto que puede especificar. Puedes añadirlo a los parámetros por aquí. Si no quieres que tenga el mismo espaciado entre líneas que la altura del texto. Pero voy a mantenerlo igual. Y ahora si lo ejecuto, vamos a ver un texto mejor. Pero creo que se verá mejor si aleatorizo esto. Entonces debido a que tenemos un entero, vamos a tener que lanzarlo en un entero y m lo va a hacer un número
aleatorio de dos a siete, digamos. Y ahora es un poco más realista. Es decir, sigue siendo muy gráfico y no realista. Pero creo que si se aleatoriza algo como esto, se verá más bonito. Y también reduciré el número de papel por aquí. Y luego le añadiré algo de rotación al papel. Por lo general si ves una pila de papel en el piso o en una mesa, No va a tener la misma rotación. Entonces voy a hacer eso usando push y pop para una transformación. Entonces yo solo haré push y tú puedes hacer push matrix porque no vamos a hacer estilos por aquí. Y luego también voy a limpiar esto y luego voy a añadir el método pop. Y luego por aquí, voy a traducir primero. Y voy a traducir a estas posiciones. Entonces esto va a ser 0, 0. Ahora podemos traer esto de vuelta. Y la razón por la que estoy traduciendo es porque rotación va a rotar desde la esquina de la página. Y si no traduzco para cada uno de los papeles, entonces va a girar desde el punto cero cero del lienzo. Entonces lo que estoy haciendo aquí, estoy empujando el lienzo a la esquina del papel en su lugar. Entonces cuando gire, voy a rotar el papel desde ese punto. Ahora si hago giro y voy a hacer una rotación aleatoria desde el cuarto negativo pi. Verdadero cuarto pi. Porque, porque no necesito tanta rotación, también
puedes hacer una rotación completa si quieres. Entonces, corrámoslo y veamos qué pasa. Ahora se ve más natural. Entonces aunque tenga 10, no
se verá demasiado abarrotado. Por último, voy a aleatorizar el tipo de ponencias que tengo que hacer. No quiero que todos tengan terrorismo ellos. Yo quiero que algunos de ellos sean prístinos. Entonces voy a crear un número aleatorio sólo tienen dos estados. Entonces uno va a ser si r es mayor a 0.5. Por lo que va a ser un 50 por ciento de probabilidad para que aparezca cada tipo de papel. Y ésta va a ser la misma, pero con una resolución de 0. Y ahora tengo un poco de papel completo y un poco de papel desgarrado, y eso es más o menos todo. He usado hacer las técnicas que aprendimos en las lecciones. Una es agregar textura a tus formas y la otra es agregar sombras para más profundidad. Ahora es tu turno de crear tu propio proyecto. Elige de dos a tres técnicas para crear uno de los ejemplos que hemos creado en cualquiera de las lecciones o para hacer tus propios proyectos como lo hice aquí. No es necesario utilizar una técnica de coloración y una técnica de textura. Pero si eso es lo que quieres hacer, entonces por favor hazlo. Pero siéntete libre de elegir cualquiera de ellos para que puedas hacer dulce técnica extrema o incluso tres técnica de coloración al final. Entonces en este ejemplo, si quisiera agregar otra técnica de coloración, añadiría las máscaras y agarraría imagen de papel o
una textura de papel y añadiría a cada uno de los papeles. De esa manera puedes tener un color diferente para los papeles del blanco con un poco de textura. Entonces en la técnica de coloración de máscaras solíamos utilizar los gráficos pico, uno para la máscara y otro para las formas. Pero para este ejemplo, si quería agregar una textura de papel, entonces la máscara va a ser el gráfico P en la forma o lo que sea que se vaya a
masar va a ser papel o la textura que vas a cargar como una imagen en tus proyectos. Si quieres seguir este proyecto para tu proyecto final, tendrás miedo de hacerlo, pero te recomendaría agregarle otra dimensión. Otra cosa que podría haber agregado a este proyecto son elementos de fondo, como una cuadrícula, por ejemplo,
para crear un piso de baldosas. También puedes agregar una imagen de fondo de piso de madera o cualquier mesa de texturas. Y definitivamente puedes colorear esto con cualquiera de la técnica de codificación. A lo mejor no la coloración por el fondo, pero si quieres tener diferentes términos para el papel, tal vez puedas usar los métodos de interpolación de color con alguna aleatorización como hicimos en la primera técnica de coloración. O puedes hacer coloración por distancia para tal vez dar diferencias tonales en el color del papel, pero no necesariamente con interpolación aleatoria de color, especie de imitar la luz del sol que entra en la habitación y colorear algunos de los papeles de diferentes color. Y por supuesto, todos estos no son muy realistas, pero aún así, es algo para agregar a tu obra de arte. Por último, si tiene alguna pregunta con respecto a esta lección o a alguna de las otras lecciones, por favor hágamelo saber en la siguiente discusión. De lo contrario, no puedo esperar a ver tus proyectos. Muchas gracias por tomar este curso, y nos vemos en otro.