Saltearse al contenido

Recursos interesantes

Generación procedural

Rendering

WebGPU

Web ML

WebXR

Tools

Cursos

Artistas, diseñadores, studios

Books

Math

Física

Sitios

Videos

Optimización

Portafolios

Video references

Audio

StoryTelling

Papers

Data Viz

Games

p5.js

SDF (Signed Distance Functions)

Live

Virtual Production

Physical Computing Simulation

Creative Coding

Unity

Web Libraries

Design

Immersive Web Experiences

Interactive Web Experiences

Blender

TED Talks

Biology

Conferences

Generative Art

Shading Languages

Artificial Life

Touch Designer

OpenGL

Web Topics

Hardware

Creative Algorithms

Projection Mapping

Coding Techniques

Generative Design

Ejemplos

Borrar del historial de git un archivo

A veces cuando estás trabajando con git te ocurre que por error incluyes en el historial del repositorio un archivo o un directorio grande. Para eliminarlo:

  1. Clona el repositorio en tu computador.

  2. Cámbiate al directorio del repositorio.

  3. Ejecuta el comando:

    Ventana de terminal
    git filter-branch -f --index-filter "git rm -rf --cache --ignore-unmatch path_al directorio" HEAD
  4. Si de casualidad en el path tienes espacios o caracteres como ñ, tildes, paréntesis, entre otros, debes marcarlos. Por ejemplo, supón que quieres borrar del historial la carpeta Library que está en el directorio My project (1), entones cuando escribas el path debes especificar esta carpeta como My\ project\ (1). Nota que tanto los espacios como los paréntesis en el nombre del directorio deben marcarse usando el carácter . Te dejo un ejemplo:

    Ventana de terminal
    git filter-branch -f --index-filter "git rm -rf --cache --ignore-unmatch 01ruido/My\ project\ \(1\)/Library" HEAD
  5. Una vez la operación sea exitosa, debes enviar el repositorio local a Github, pero necesitarás forzar esta operación:

    Ventana de terminal
    git push --force origin main
  6. Por último, si todo sale bien podrás borrar el backup que hace git:

    Ventana de terminal
    rm -r -f refs/original/

Rutas largas en Windows

Windows mantiene una limitación de tamaña de ruta de 260 caracteres. Esta limitación se presenta para mantener la compatibilidad con versiones antiguas del sistema operativo; sin embargo, esta limitación puede ser muy incómoda. Incluso a veces es necesario que crees tus proyectos en la raiz del volumen de tu sistema de archivos, por ejemplo, en la unidad C:. Afortunadamente, esta limitación se puede levantar. Para ello tendrás que crear una clave nueva en el registro de windows. Primero vas a verificar si la clave ya existe. Abre PowerShell y ejecuta:

Ventana de terminal
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem"

Busca si la clave LongPathsEnabled existe y si su valor es 1. Se es así, ya tienes levantada la restricción. Si no es así, entonces tendrás que escribir el registro de windws para crear la clave y hacerla igual a 1:

Ventana de terminal
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force

Nota: Ten presente que necestarás permisos de Administrador para hacer esta operación.

TDAxis

Crea y transforma imágenes y sonidos con los movimientos de tu cuerpo aquí.

Hydraulic Erosion

Aquí está el ejemplo.

Experimentos con audio

En esta guía podrás realizar algunos experimentos con audio.

Atractor de Lorentz

La siguiente figura (tomada de aquí) corresponde a un atractor de Lorenz que es un conjunto de soluciones caóticas de un sistema de Lorenz.

Atractor de Lorenz

Primero quiero que veas este video.

Ahora escucha el tema con una animación construida en Unity utilizando un atractor de Lorenz

Te dejo una parte del código para que veas que no está compleja la cosa.

void Update()
{
AudioListener.GetSpectrumData(spectrum, channelSelect, FFTWindow.Hanning);
channelAvg = spectrum.Average();
// cycle color over time
sColor.H = hue;
eColor.H= hue;
line.startColor = sColor.ToColor();
line.endColor = eColor.ToColor();
line.startWidth = lineWidth * channelAvg * 1000;
line.endWidth = lineWidth * channelAvg * 1000;
hue += Time.deltaTime * oneOverColorCycleTime;
//cycling the hue over time
hue = hue % 1;
float x0, y0, z0, x1, y1, z1;
x0 = startX;
y0 = 0;
z0 = 0;
float sigmaMod = sigma * channelAvg * 1000;
for (int i = 0; i < iterations; i++)
{
x1 = x0 + h * sigmaMod * (y0 - x0);
y1 = y0 + h * (x0 * (rho - z0) - y0);
z1 = z0 + h * (x0 * y0 - beta * z0);
x0 = x1;
y0 = y1;
z0 = z1;
line.SetPosition(i, transform.position + new Vector3(x0, y0, z0));
}
}

Exploración arduino-Blender

Este es un experimento en construcción que busca conectar de algunas manera información del mundo físico con una simulación en Blender. Aún no hay resultados, solo estoy recolectando referencias e ideas.

¿Qué es la programación creativa?

Tomado de este sitio:

Creative Coding is a process, based on exploration, iteration, reflection and discovery, where code is used as the primary medium to create a wide range of media artifacts.

MARK MITCHELL, OLIVER C. BOWN: TOWARDS A CREATIVITY SUPPORT TOOL IN PROCESSING. UNDERSTANDING THE NEEDS OF CREATIVE CODERS. ACM PRESS 2013, PAGE 143-146, CITED ACCORDING TO: STIG MØLLER HANSEN: PUBLIC CLASS GRAPHIC_DESIGN IMPLEMENTS CODE (//YES, BUT HOW?): AN INVESTIGATION TOWARDS BESPOKE CREATIVE CODING PROGRAMMING COURSES IN GRAPHIC DESIGN EDUCATION, AARHUS 2019, PAGE 13. LINK

Según ChatGPT plus (septiembre 20 de 2023):

Creative coding refers to the use of computer programming as a means to produce artistic outputs. It’s a form of digital art where the emphasis is on the creative process and exploration, rather than just creating functional software. Creative coding often involves the generation of visuals, sound, animation, physical computing, and interactivity.

Dos herramientas para explorar:

  • p5.js - A JavaScript library that has its roots in Processing. It’s designed to make coding accessible for artists, designers, educators, and beginners.
  • TouchDesigner - A node-based visual programming language primarily used for real-time interactive multimedia content.

The creative coding community often participates in “live coding” events, where artists code in real-time to produce visuals and/or music, usually in front of an audience. These performances showcase the artistic and improvisational aspects of programming.

In essence, creative coding is about bridging the gap between art and technology, allowing artists to harness the power of computation in their artistic pursuits.

There’s a significant relationship between generative content generation and creative coding. In fact, generative methods are often a cornerstone of many creative coding projects. Here’s a breakdown of the relationship:

Definition of Generative Content Generation:

This refers to the automated creation of content (like images, music, stories, or patterns) based on a set of predefined rules, algorithms, or stochastic processes. The key principle behind generative content is that the output is not directly authored by a human, but rather is produced by a system designed by a human. The same generative system can produce a wide variety of different outputs, often surprising even its creator.

Creative Coding and Generative Content:

Many creative coding projects involve building systems that produce generative content. The creativity comes into play when designing the algorithms or rules that drive the generation. For instance, a creative coder might design an algorithm that simulates the growth of plants to generate digital artwork that looks like a forest.

Applications:

  • Visual Arts: Patterns, fractals, and generative adversarial networks (GANs) might be used to create unique pieces of artwork.
  • Music: Algorithms can be designed to produce melodies, rhythms, or entire compositions.
  • Interactive Installations: Creative coding can be used to create installations where the output (visuals, sounds) evolves based on user interaction or other inputs.
  • Animation and Motion Graphics: Generative methods can produce fluid, organic, or abstract animations.
  • Design: Patterns for textiles, wallpapers, or graphical elements can be algorithmically generated.
  • Live Coding: In live coding performances, artists often employ generative methods. The code they write in real-time sets up systems and processes that generate music or visuals, adding an element of unpredictability and spontaneity to the performance.
  • Exploration and Serendipity: One of the joys of generative content in creative coding is the sense of exploration. Since the output is determined by algorithms and sometimes random processes, even the creator may be surprised by the results. This serendipity can lead to delightful and unexpected artistic outcomes.

In summary, generative content generation is a major facet of creative coding. By designing systems and algorithms, creative coders can produce a vast array of unique and unpredictable artistic outputs.

¿Qué es algorithmic art?

Información tomada de aquí.

In the 1960s, pioneers like Vera Molnár and Frieder Nake began using code to create art, leveraging computers, oscilloscopes, and plotter machines to produce images impossible to draw by hand. Their work was grounded in rules and instructions, with computer programs generating visuals based on these parameters. This marked the birth of generative art, where the “generative” aspect referred to the computer program, not the artist’s hand. The artist designed the rules, thus acting as the designer, with randomness adding slight variations to each visual output.

Algorithmic art is created by an autonomous system executing an algorithm, where the artist carefully designs the boundaries of its computational space and optionally defines the influence of randomness.

While collectors are typically more interested in the algorithm’s outcome than the algorithm itself, there’s an argument that the algorithm is the true artwork, as it embodies the artist’s primary effort. The generated outcomes are autonomously created, beyond the artist’s direct control.

Generative Design (ideas sueltas)

  • Design is inherently embedded within the algorithm—essentially, the program itself is the design.
    (Just van Rossum).
  • Generative design—or the art of coding itself—is fundamentally about creating custom software. Sure, you can design using tools like Illustrator, Photoshop, or InDesign, but eventually, you’ll want to explore ideas that simply aren’t possible with those tools. That’s where this technology comes in, opening up a vast new world of possibilities for you to experiment and create.
    (Just van Rossum).