Cómo crear arte generativo increíble con código JavaScript simple

    Rate this content
    Bookmark

    En lugar de dibujar manualmente cada imagen como en el arte tradicional, los artistas generativos escriben programas que son capaces de producir una variedad de resultados. En esta masterclass aprenderás cómo crear arte generativo increíble usando solo un navegador web y un editor de texto. Comenzando con conceptos básicos y avanzando hacia la teoría avanzada, cubriremos todo lo que necesitas saber.

    This workshop has been presented at JS GameDev Summit 2022, check out the latest edition of this JavaScript Conference.

    FAQ

    El arte generativo involucra el uso de un sistema autónomo, como un programa de computadora, para crear obras de arte. Este tipo de arte explora cómo las reglas predefinidas o los algoritmos pueden dar lugar a obras visualmente interesantes y únicas.

    Los emojis pueden ser utilizados como pinceles en la creación de arte generativo. Pueden ser integrados en el código de JavaScript para ser dibujados en el lienzo, modificando su tamaño, color y posición para crear patrones interesantes y dinámicas visuales.

    Para empezar en arte generativo, se puede usar JavaScript puro para los ejemplos más sencillos. Herramientas como p5.js también son populares por ofrecer funciones avanzadas que facilitan la creación de sistemas complejos de partículas, animaciones y más.

    El efecto de paralaje en arte generativo se puede lograr manipulando la velocidad y la dirección de los elementos gráficos en diferentes capas. Ajustando estos parámetros se puede simular profundidad y movimiento, dando un efecto más dinámico al arte.

    Fx-hash es una plataforma que permite a los artistas generar y vender arte generativo como NFTs (tokens no fungibles). Los artistas programan obras que generan resultados únicos cada vez que se 'acuñan', ofreciendo una experiencia singular para cada comprador.

    El ruido puede ser utilizado para añadir textura y realismo a las visualizaciones en arte generativo. Añadiendo pequeños valores aleatorios a las variables de color, posición o tamaño, se puede crear un efecto más orgánico y menos rígido.

    Frank Force
    Frank Force
    165 min
    12 Apr, 2022

    Comments

    Sign in or register to post your comment.

    Video Summary and Transcription

    La Masterclass sobre Arte Generativo y JavaScript abarca varios temas, incluyendo el dibujo de formas, el uso del depurador y el estilo CSS, y la exploración de variables y colores. También se adentra en la creación de efectos de fuego, el dibujo de líneas y formas, y el trabajo con oscilación y partículas. La masterclass enfatiza la importancia de guardar el trabajo, experimentar y construir desde lo básico. Destaca los usos del arte generativo en diferentes industrias e inspira en los textiles y el mundo real. En general, proporciona una visión completa de las técnicas de arte generativo y sus aplicaciones.

    1. Introducción al Arte Generativo y JavaScript

    Short description:

    Hola a todos, soy Frank Forrest, un artista generativo y también desarrollador de juegos. Me he centrado en aprender JavaScript para el arte generativo. Les mostraré un sitio web llamado Twitter, donde publico programas super pequeños de JavaScript. Estos programas son todos de arte generativo y puedes experimentar, remezclar ideas e incluso editar el código. Trabajaremos para crear arte generativo similar en esta masterclass.

    Hola a todos, soy Frank Forrest, un artista generativo y también desarrollador de juegos y supongo que muchas otras cosas. Pero ahora mismo estoy principalmente centrado en el arte generativo. Y realmente me he estado enfocando en, especialmente este año, pero incluso hace un par de años comencé a aprender JavaScript porque había estado aprendiendo C++ durante mucho tiempo. Así que no estoy seguro si ustedes están familiarizados con el tipo de cosas que hago. Así que solo voy a darles una rápida... mostrarles rápidamente qué es lo que he estado haciendo. En qué he estado trabajando.

    Entonces, veamos si puedo hacer eso. Tendrán que tener paciencia conmigo un poco porque todavía... No he usado Zoom mucho. Así que todavía estoy acostumbrándome al flujo de las cosas aquí. Bueno, espero que todos puedan ver mi pantalla ahora. Así que les estoy mostrando un sitio web llamado Twitter, que es un sitio web para publicar programas super pequeños de JavaScript. Todos estos programas son solo de 140 caracteres y todos son programas de arte generativo. Y creo que es un sitio web realmente genial para experimentar y jugar con diferentes ideas y ver lo que otras personas crean y remix ideas. Como que muchos de estos son remixes de cosas de otras personas. Pero si yo... Este no es el sitio web real, por cierto. Este es un sitio web que hice para hacerlo un poco más rápido para navegar por estas cosas.

    Así que he hecho más de mil de estos. He cubierto prácticamente todos los temas posibles que puedas imaginar. Ordenaré por los más populares. Cualquier cosa desde como un tipo de paisaje. Todo esto es arte generativo y este es el tipo de cosas que aprenderás en esta masterclass. Todos estos son programas muy, muy pequeños. Quiero enfatizar esto aquí. Puedes ver que el código está literalmente ahí en la pantalla. Así que si yo, por ejemplo, fuera a uno de estos, ahora puedes ver el código aquí mismo e incluso puedes editar el código. Este es el tipo de cosas que voy a mostrarles. Vamos a trabajar hacia esto. Así que no espero que entiendan exactamente lo que está pasando aquí. Así que, por ejemplo, podría tocar estos números para cambiar un poco los colores. Hacerlo más verde, o tal vez hacerlo más azul o lo que sea. Así es como yo estaría quizás ajustando lo que está pasando con este arte generativo. Puedo hacer estos en lugar de un cuadrado grande, puedo hacerlos como cuadrados pequeños, o podría poner muchos más de ellos, tal vez. O lo que sea. Así que con eso vamos a jugar hoy.

    2. Creando un archivo HTML y dibujando formas

    Short description:

    Vamos a comenzar creando un nuevo archivo HTML. Te mostraré cómo dibujar un cuadrado utilizando la función fill rect. Luego te mostraré cómo aplicar color a la forma utilizando nombres de colores HTML o códigos hexadecimales. Ahora, Chris, puedes dibujar más rectángulos si quieres.

    Entonces veo que algunas personas tienen la cámara encendida. Así que solo quiero saludar a Luz y Gleb. Gracias. Sabes, no quiero que nadie se sienta obligado a encender su cámara. Bartosz, gracias. Sabes, solo siéntete tranquilo. Haz lo que te resulte más cómodo. Aunque me ayudará si sientes que quieres compartir tu pantalla si estás trabajando en algo. Porque vamos a estar, quizás remezclando algunos de los trabajos de cada uno, creo que eso sería divertido.

    Entonces, comencemos totalmente desde cero. Vamos a comenzar simplemente creando un nuevo archivo de texto, un nuevo archivo HTML. Así que puedes hacer esto. No necesitas ningún tipo de programa especial. Solo vas a hacer clic derecho. Vas a crear un nuevo archivo. Lo voy a llamar index.html. Puedes llamarlo como quieras. Index.html es como el nombre estándar que se usa para los archivos HTML porque se abrirá automáticamente si vas a esa carpeta. Así que ahora tenemos un archivo HTML. Es un archivo vacío. Así que voy a abrir el bloc de notas. Ahora tengo notepad++, pero solo voy a usar el bloc de notas regular aquí. Lo voy a arrastrar allí. Ahora, no hay nada allí. Así que queremos crear un archivo HTML desde cero. Y ahora lo que pasa es que, hay muchas cosas complicadas con HTML. Y no voy a enseñar nada de eso. Solo voy a ir directamente a la cantidad mínima de HTML que necesitas para crear arte generativo. Así que vamos a ello. Tenemos nuestro archivo HTML aquí a un lado. Al otro lado, voy a abrir un navegador web. Y lo que puedo hacer es arrastrar el archivo HTML al navegador web. Así que ahora tengo un uno a uno. Tengo HTML a la izquierda, y tengo el navegador web a la derecha. Así que si solo escribo algunas letras aquí, lo guardo y voy a mi navegador web y lo recargo, verás que esas letras aparecen en mi navegador web. Porque un archivo HTML, realmente es muy flexible. Y se abrirá automáticamente como un archivo de texto o lo que necesites.

    Entonces, vamos a crear un lienzo porque no necesitas un lienzo para el arte generativo. Puedes crear arte generativo con cualquier cosa que puedas imaginar. Pero la mayoría del arte generativo utiliza un sistema de dibujo de estilo lienzo. Así que para crear un lienzo, es realmente así de simple, acabamos de crear un lienzo. Ahora necesitamos JavaScript code para operar en ese lienzo. Así que para hacer eso, creamos un bloque de script, donde hacemos script y usamos etiquetas de ángulo de soporte, y hacemos un script de barra para terminar el bloque. Ahora tenemos nuestro bloque configurado aquí. Y queremos poder dibujar en ese lienzo. Así que necesitamos obtener un contexto 2D, que es, solo lo voy a almacenar en una variable. Hablaré un poco más sobre las variables, pero lo almacenaremos en una variable, vamos a hacer X igual a C, que es el lienzo, cuando hago IDC, eso crea automáticamente una variable para el lienzo. Así que vamos a hacer X igual a C punto, obtener contexto. Eso nos dará nuestro contexto 2D para el lienzo. Y JavaScript es tan flexible, deberías terminar las líneas en punto y coma, porque rara vez puede suceder algo que no se supone que deba hacer si no haces eso, pero realmente no necesitas puntos y comas. Bueno, ahora tengo acceso a nuestro contexto. Así que te voy a mostrar cómo dibujar un cuadrado, un rect. Hay una función llamada fill rect. Y estas funciones pueden parecerte muy simples. ¿Cómo se supone que debo hacer arte increíble con solo un fill rect? Pero realmente, estos son los bloques de construcción. A nivel fundamental, estarás llamando a fill rect. Y mucho, la mayoría de mi arte usa fill rect o como estos comandos simples, porque al nivel más bajo, eso es realmente a lo que se reduce. Así que fill rect tiene cuatro parámetros, eso es solo la posición X e Y y el ancho y la altura. Así que si digo, 100, 100 y luego 500 y luego 100, vamos a obtener un rectángulo que espero sea bastante ancho, un poco fuera del lado. Ahora voy a presionar F5. Eso es un rectángulo. Así que espero que todos hayan podido seguir hasta ahora cómo crear un archivo de texto, un archivo HTML que tiene una forma dibujada en él. Así que esto es lo más básico. Ahora, déjame mostrarte cómo aplicar color a esa forma. Nuevamente, estamos operando en este objeto llamado x. Así que hemos almacenado nuestro contexto2d, que es como nuestra interfaz para dibujar y cosas en este lienzo específico. Y está almacenado en la variable llamada x. Así que haré x.DillStyle. Igual a rojo, la palabra rojo. Y luego voy aquí a 5. Deberían tener un rectángulo rojo, ¿verdad? Entonces, por lo general, no vas a usar nombres de colores. Así que esto es solo soportado por HTML. Hay muchos nombres de colores. Otra forma de hacerlo es con, si alguna vez has visto estos códigos hexadecimales. Entonces usarías un símbolo de hash. Y luego, puedes hacer 6 o 4 o 3 números. Yo suelo usar solo 3. Así que eso va a ser los componentes rojo, verde y azul. Entonces, si haces F, eso sería para rojo. 0, 0. Hagamos. Hagamos un verde. Así que sería 0 rojo, verde completo y 0 azul. Así que tenemos eso. Ahora, Chris, puedes dibujar más rectángulos si quieres. Así que tenemos uno verde. Solo voy a copiar y pegar. Y esto no distingue entre mayúsculas y minúsculas, al menos para esta parte de él, para la parte del color. Así que haré un rectángulo rojo.

    Watch more workshops on topic

    Crea un Juego Con PlayCanvas en 2 Horas
    JSNation 2023JSNation 2023
    116 min
    Crea un Juego Con PlayCanvas en 2 Horas
    Top Content
    Featured WorkshopFree
    Steven Yau
    Steven Yau
    En esta masterclass, construiremos un juego utilizando el motor WebGL de PlayCanvas desde el principio hasta el final. Desde el desarrollo hasta la publicación, cubriremos las características más cruciales como la escritura de scripts, la creación de UI y mucho más.
    Tabla de contenido:- Introducción- Introducción a PlayCanvas- Lo que vamos a construir- Agregando un modelo de personaje y animación- Haciendo que el personaje se mueva con scripts- 'Falsa' carrera- Agregando obstáculos- Detectando colisiones- Agregando un contador de puntuación- Fin del juego y reinicio- ¡Resumen!- Preguntas
    Nivel de la masterclassSe recomienda familiaridad con los motores de juegos y los aspectos del desarrollo de juegos, pero no es obligatorio.
    Introducción a WebXR con Babylon.js
    JS GameDev Summit 2022JS GameDev Summit 2022
    86 min
    Introducción a WebXR con Babylon.js
    Workshop
    Gustavo Cordido
    Gustavo Cordido
    En este masterclass, te presentaremos los conceptos básicos de la construcción de experiencias de Realidad Mixta con WebXR y Babylon.js.
    Aprenderás lo siguiente:- Cómo agregar objetos de malla 3D y botones a una escena- Cómo utilizar texturas procedurales- Cómo agregar acciones a objetos- Cómo aprovechar la experiencia predeterminada de Realidad Cruzada (XR)- Cómo agregar física a una escena
    Para el primer proyecto en este masterclass, crearás una experiencia interactiva de Realidad Mixta que mostrará estadísticas de jugadores de baloncesto a fanáticos y entrenadores. Para el segundo proyecto en este masterclass, crearás una aplicación WebXR activada por voz utilizando Babylon.js y Azure Speech-to-Text. Luego, desplegarás la aplicación web utilizando el alojamiento de sitios web estáticos proporcionado por Azure Blob Storage.

    Check out more articles and videos

    We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

    El Potencial Caprichoso de los Marcos de Trabajo de JavaScript
    React Summit US 2023React Summit US 2023
    28 min
    El Potencial Caprichoso de los Marcos de Trabajo de JavaScript
    Top Content
    The speaker discusses the whimsical and detailed work of Stripe, particularly their interactive and dynamic pages. They explain the use of React for building whimsical details and tracking mouse position. The speaker introduces React Spring for smooth animation and React3 Fiber for creating a 3D egg model. They also mention the use of Framer Motion and React server components for animating CSS properties.
    ¡Mejora el rendimiento de tus juegos WebGL Unity!
    JS GameDev Summit 2023JS GameDev Summit 2023
    7 min
    ¡Mejora el rendimiento de tus juegos WebGL Unity!
    The Talk discusses ways to boost the performance of WebGL Unity games, including issues with bundle size, memory usage, and runtime performance. It suggests using Brotli for compression and non-exception support for better performance. Choosing the appropriate texture compression format and experimenting with separate builds can also help. The Talk also covers optimizing textures, models, audio, and assets by reducing build size, using compression, disabling unnecessary models, and optimizing audio quality. Unity's optimization tools and profilers are recommended for analyzing performance and memory issues.
    Animaciones Emocionales y Funcionales de la Interfaz de Usuario en React
    React Day Berlin 2022React Day Berlin 2022
    28 min
    Animaciones Emocionales y Funcionales de la Interfaz de Usuario en React
    Today's Talk discussed the importance of UI animations in React, both functional and emotional. Examples were given using CSS and Framer Motion, with a focus on user feedback and accessibility. Design guidelines and animation usage were highlighted, as well as the consideration of negative emotions in animations. The Talk also touched on designing 404 error pages and concluded with gratitude to the audience and organizers.
    TresJS, una forma declarativa de crear escenas 3D a partir de componentes Vue
    Vue.js London 2023Vue.js London 2023
    27 min
    TresJS, una forma declarativa de crear escenas 3D a partir de componentes Vue
    The speaker discovered 3D with 3GS and was inspired to create a 3D ecosystem for the Vue community using Troy.js. The process of setting up a 3D scene and objects in Tress was explained, along with creating and configuring 3D objects. The talk also covered animating objects with Tress and the 'Cientos' package, as well as the future of Tress.js and its compatibility with older versions of Three. The speaker expressed gratitude to sponsors and contributors and highlighted the potential for product customization with Tress.js.
    Unreal Engine en WebAssembly/WebGPU
    JS GameDev Summit 2022JS GameDev Summit 2022
    33 min
    Unreal Engine en WebAssembly/WebGPU
    Top Content
    Alex Saint-Louis, co-founder of Wunder Interactive, shares the mission of bringing Unreal Engine to the browser, enabling cross-platform 3D applications and games. They are working on a WebGPU back end for Unreal Engine to push the limits of 3D on the web. Wunder Interactive has improved compression, built their own asset file system, and offers powerful tools for game developers. They are utilizing modern web technologies like WebAssembly, WebGL, and WebGPU, and plan to support other engines like Unity and Godot. The team aims to transform the industry by bringing console-quality games to the browser and providing an alternative distribution path. They are excited to bring Unreal Engine 5 to the web with WebGPU support and are working on WebXR support for cross-platform 3D experiences, including VR.
    De Blender a la Web - el Viaje de un Modelo 3D
    React Advanced Conference 2021React Advanced Conference 2021
    27 min
    De Blender a la Web - el Viaje de un Modelo 3D
    Top Content
    This Talk is about Blender, a free and open-source 3D software, and integrating 3D models into websites. The speaker discusses exporting 3D models to the web using the gltf format and compressing them using gltf transform and draco compression. They also cover integrating the 3D model into a website using React and React 3 fiber, troubleshooting installation and error issues, and working with refs and frames. The Talk explores rendering, lighting, mathematics, and experimentation in 3D, as well as interaction and rendering effects. The speaker also mentions their favorite creation in Blender.