Recursos interesantes
Generación procedural
- Sebastian Lague Procedural Terrain Generation
- Catlike Coding Noise Derivatives, going with the flow
- t3ssel8r Giving Personality to Procedural Animations using Math
- Codeer Introduction To My Weird Shooter Game - Devlog 0
- Codeer Unity procedural animation tutorial (10 steps)
- Unity Creating a boss with procedural animation | Prototype Series
- GENERATIVE ART 101
- Generative art
- Algorithmic art
- Artificial intelligence art
- Generative Art
- CodeParade
- How to Use the New Simulation Nodes in Blender 3.6 LTS
- Procedural Animation for Humans
- Generative artistry
- Generative Art Guide
- The Procedural Animation of Gibbon: Beyond the Trees - Wolfire Games
- Nabil Mansour Youtube channel
- FRACTAL GLIDE Youtube playlist
- Fractal Ray Marching in Blender (Geometry Nodes)
- Real-time diffusion in TouchDesigner - StreamdiffusionTD Setup + Install + Settings
- A simple procedural animation technique
- My Favorite Tools + Techniques for Procedural Gamedev
- Procedural modeling of cities
- Interactive Procedural Street Modeling
- Demo WebGPU by Utsubo Japan
- WebGPU is Not Just about the Web
- gpu.cpp Github repo
- WebGPU Samples Github repo
- q5.js - The spiritual successor to p5.js and Processing Java
- 3Angle WebGPU tutorials Youtube channel
- Lecture 27: gpu.cpp - Portable GPU compute using WebGPU
Rendering
WebGPU
- Introducing WebGPU: Unlocking modern GPU access for JavaScript
- Diseño WEB con programación visual en cables.gl
- Play Canvas
- Babylonjs
- WebGPU API
- WebGPU Tutorial: Advanced Graphics on the Web Course
- Webgpu samples
- Your first WebGPU app
- Practical Programming with Dr. Xu
- WebGPU :: Rendering the future in Real-Time
- Modern 3D Graphics Beginner Projects in WebGPU
- Learn WebGPU – A next-generation graphics API for the web
- Awesome WebGPU - Recursos interesantes de WebGPU
- Unlock the Potential of AI and Immersive Web Applications with WebGPU
- WebGPU :: Javascript at the speed of Light
- WebGPU from WebGL
- WebGPU Compute Shader Basics
- WebGPU — All of the cores, none of the canvas
- Get started with GPU Compute on the web
- How to Build a Compute Rasterizer with WebGPU
- What WebGPU Means to XR and Metaverse by Andrey Ivashentsev
- Generative Coding - The Nature of Code Ported to Three.js
- WebGPU Fluid Simulation
- Taichi.js: Painless WebGPU Programming
- Taichi.js example on cables.gl
- The best of WebGPU each month - WebGPUExperts
- Blob by WebGPU Experts
Web ML
- What’s new with Web ML in 2023
- Visual Blocks for ML
- Google machine learning courses
- Machine Learning for Web Developers (Web ML)
- Getting Started with audio classification for web using MediaPipe Solutions
- Getting started with pose landmark detection for web using MediaPipe Solutions
- Getting started with text classification for web using MediaPipe Solutions
- Getting Started with face detection for web using MediaPipe Solutions
- Visual Blocks ML: Create AI demos faster using custom nodes for your favorite APIs
- Machine Learning for the Web class at ITP, NYU
- Introduction to Machine Learning for the Arts
- Google Machine Learning Crash Course
- Neural networks - 3Blue1Brown Course
- A Beginner’s Guide to Machine Learning in JavaScript with ml5.js
- Machine Learning Course by Radu Mariescu-Istodor
WebXR
- WebXR App Wonderland Engine
- Mattercraft - The next generation of 3D web tooling
- WebXR in Mattercraft: Rapid AR/VR creation for Apple Vision Pro, Quest 3 & ML2
- Switching from Unity to Wonderland Engine
- WebXR API - Immersive Web
- How to use WebXR with Unity - January 2024 Edition
- Top 5 WebXR Frameworks - Comparison by Jonathan Hale
- State of Compute: Maximizing Performance on Meta Quest
- Reality Accelerator Toolkit
- WebXR App Wonderland Engine
- Mattercraft - The next generation of 3D web tooling
- WebXR in Mattercraft: Rapid AR/VR creation for Apple Vision Pro, Quest 3 & ML2
- Switching from Unity to Wonderland Engine
- WebXR API - Immersive Web
- How to use WebXR with Unity - January 2024 Edition
- Top 5 WebXR Frameworks - Comparison by Jonathan Hale
- State of Compute: Maximizing Performance on Meta Quest
- Reality Accelerator Toolkit
Tools
- Textfx
- AutoDraw
- Cables
- Effect House Tik Tok realidad aumentada
- Meta Spark realidad aumentada
- n8n - Secure, AI-native workflow automation
Cursos
- Blender: Geometry Nodes from Scratch
- Get started making music
- 3D Computer Graphics Programming
- p5.js shaders
- Chris courses game dev with JavaScript
- HTML5 Canvas Tutorials for Beginners | Become a Canvas Pro
- JavaScript Audio CRASH COURSE For Beginners
- Design for Developers
- Introduction to Cables.gl and Javascript coding
- Lusion Labs
- Utsubo Creative Studio in Japan
- Painting with Plotters
Artistas, diseñadores, studios
- Casey Reas
- feralfile
- Tony DeRose
- Tony DeRose
- Bruno Imbrizi
- Matt Deslauriers
- Yi-Wen Lin (Wen)
- Patrik Hübner
- nowhere2run
- Tim Rodenbröker
- Thomas Latvys
- Entagma
Books
- Basic Math for Game Development with Unity 3D
- Computational Geometry: Algorithms and Applications
- 3D Math Primer for Graphics and Game Development
- The Unity Shaders Bible
- Generative Design: Visualize, Program, and Create with JavaScript in p5.js
- Generative Design, Creative Coding on the Web
- Generative Design Code Package (for P5.js)
- The Nature of Code 2
- The Book of Shaders
- Programming Design Systems
- Generative Design
- SDL Game Development
- Generative Design Books Worth Reading
- WebGPU Unleashed: A Practical Tutorial by Shi Yan
Math
- Fundamental Math for Game Developers
- Linear Algebra for Games
- Essential Mathematics For Aspiring Game Developers
- Math For Video Games: The Fastest Way To Get Smarter At Math
- Introduction to Unity.Mathematics - Unite Copenhagen
- Unity Math Playlist
- This equation will change how you see the world (The Logistic Map)
- The Map of Mathematics
- Differential equations, a tourist’s guide
- Numerical Simulation of Ordinary Differential Equations
- Simulate Coupled Differential Equations in Python
- Chaos Equations - Simple Mathematical Art by CodeParade
- Chaos: The Science of the Butterfly Effect
Física
Sitios
- Use math to solve problems in Unity with C#
- Manim: Community-maintained Python library for creating mathematical animations
- Interpolation and Control Systems
- Spring-It-On: The Game Developer’s Spring-Roll-Call
- Should I Write a Game Engine or use an Existing One?
- Generative Design in Branding
- Generative Design Method
- Handwrytten
- CineShader: Real-time 3D shader visualizer
Videos
- Cómo hacer EFECTOS de PARTÍCULAS en Unity | Tutorial VFX
- Differential Equations and Dynamical Systems: Overview
- 3Blue1Brown Differential equations, a tourist’s guide
- Solar System Simulation [Unity 3D Tutorial]
- How to Set Up Dynamic Water Physics and Boat Movement in Unity
- Learn how to use a geometry feedback loop to create a differential growth animation in Blender
Optimización
Portafolios
- Jellever
- Jelle story telling idea
- Andrea Gonzalez - Profe de IDED
- Mateusz Grad
- Gapsy Studio - Pickle Mobile UI/UX for Social App
- Gapsy Studio - MyLagro Website & Mobile App
- Fabian Shinzato - Bloom UX/UI
- Allison Winter
- Koenvo
- Dennis Snellenberg
- Brandon Hampton
- Luca Vonilo
- Greg Koberger
- Paco Coursey
- Rauno Freiberg
- Naxo
- Jesse Zhou
- Bruno Simon
- Alex Pierce
- Embed
- Anthony Fu
- Niccolo Miranda
- Gass Zone
- Minh Pham
- Gabriel Bianchi
- Guillaume Reygner
- Dan Abramov
- Edan Kwan
- David Hckh
- Johan Digital
- 9 Imaginative Web Designer Portfolio Examples to Inspire Your Own
- Build a Mindblowing 3D Portfolio Website // Three.js Beginner’s Tutorial
Video references
- In My Room (Audio) - Jacob Collier
- 20 Best Music Videos that Story Tell - Narrative Music Video
- Jacob Collier - Never Gonna Be Alone (feat. Lizzy McAlpine & John Mayer)
- SIAMÉS “Mr. FEAR” (Official Animated Music Video)
- Animated Music Videos
- Audioreactive Video - Playhead (TouchDesigner)
Audio
- Audio Signal Processing for Machine Learning
- Real-time Audio Analysis Using the Unity API
- Audio reactive cables.gl
- JavaScript Audio Effects by Franks Laboratory
StoryTelling
- Word as Image - Playlist
- Word as Image by Ji Lee
- 2015 Word as Image Highlights
- Word As Image for Semantic Typography
- DS-Fusion: Artistic Typography via Discriminated and Stylized Diffusion
Trends
Papers
- Advanced Character Physics by Thomas Jakobsen
- StreamDiffusion: A Pipeline-level Solution for Real-time Interactive Generation
- The Fractal Flame Algorithm
- DyNCA: Real-Time Dynamic Texture Synthesis Using Neural Cellular Automata
- Computational Life: How Well-formed, Self-replicating Programs Emerge from Simple Interaction
Data Viz
- The Art of Data Visualization | Off Book | PBS Digital Studios
- Data Art
- Data Art Tutorials with cables.gl
Games
- Create a 3D Multi-player Game using THREE.js and SOCKET.io
- Making the same game in Three.js and Unity
- Fractal Glide (Steam game)
- Noita (Steam game)
- Exploring the Tech and Design of Noita
- Recreating Noita’s Sand Simulation in C and OpenGL
- Sandspiel (Game with pixels)
- Making a falling sand simulator
p5.js
- WebGL - p5.js Tutorial
- Topics of JavaScript/ES6-ES8 - p5.js Tutorial
- Physical computing course by Makeability Lab
- Live Server for p5.js applications (VS Code)
- Debugging JavaScript with Microsoft Edge
- Intro to Computational Media - Curriculum using p5.js
SDF (Signed Distance Functions)
- I Made A Blob Shooting Game With Ray Marching
- Volumetrics: Introduction to Ray Marching
- Ray Marching and making 3D Worlds with Math
- Coding Adventure: Ray Marching
- Ray Marching Project (Sebastian Lague)
- Distance functions
- Ray Marching and Signed Distance Functions Tutorial
- Ray Marching for Dummies
Live
- Making of – Ed Sheeran Mathematics Tour
- David Guetta Live on GrandMA2 | Lightshow
- BROADCAST & LIVE EVENTS with Unreal Engine
- Moment Factory Previz Project
- Unreal Live Link
Virtual Production
- Soluciones ópticas Stype
- Caso de estudio: Fox Sports
- Vizrt: Real-time graphics and live production solutions for content creators
- Erizos: Real-time Broadcast Graphics Solutions
Physical Computing Simulation
- Hyperreal wingsuit simulator
- Hyperreal simulator: JUMP
- James Jensen, uno de los creadores de The Void
- The Void
Creative Coding
- Where there is data, there is design - Patrik Hübner
- Creative Coding = Unexplored Territories | Tim Rodenbröker | TEDxUniPaderborn
- Tim Rodenbroeker site
- Creative Coding as a School of Thought
- What is Creative Coding?
- A Creative Coding Method - Patrik Hübner
Unity
- Introduction to the Universal Render Pipeline for Advanced Unity Creators
- The Universal Render Pipeline Cookbook
- Level up your programming with game programming patterns
- Simplified Clean Architecture Design Pattern for Unity
- Software Architecture in Unity - YouTube
- Learn Unity Beginner/Intermediate 2023 (Free Complete Course)
Web Libraries
Design
- Resilient Web Design by Jeremy Keith
- Design for Developers by MDN Curriculum
- The latest in Material Design (Google I/O 2024)
Immersive Web Experiences
- Become a Three.js Developer (Course)
- What Are Interactive Websites?
- 10 Striking 3D Website Examples (and How They’re Made)
Interactive Web Experiences
- Incredibox - Music Interactive Experience
- Chrome Music Experiments
- Visualizing Music with p5.js
- Cursos de cables.gl
- Lights and Shadows Operators - Getting Started
Blender
- Math x Blender = Power!
- How to Simulate a 100.000+ Fish Swarm in Blender!
- Geometry Nodes Tutorials - YouTube Playlist
- The Big Nodebook: A Geometry Nodes Guide
TED Talks
Biology
Conferences
Generative Art
- Algorithmic Art as a subset of Generative Art
- Generative Art for Beginners - YouTube Playlist
- Generative Art Museum
- TCAM Generative Art Museum
- Mathematical Art Digital Exhibition (MADE)
- Demystifying Generative Art
- Drawing Robots
Shading Languages
Artificial Life
- DyNCA: Real-Time Dynamic Texture Synthesis Using Neural Cellular Automata
- NoiseNCA: Noisy Seed Improves Spatio-Temporal Continuity of Neural Cellular Automata
- Computational Life: How Well-formed, Self-replicating Programs Emerge from Simple Interaction
- Cellular ASCIIMata - Playground
Touch Designer
- StreamDiffusionTD 0.2.0 - Installation + Setup
- StreamDiffusion
- StreamV2V
- Making Games in TouchDesigner
OpenGL
Web Topics
Hardware
Creative Algorithms
- Evolving JavaScript: Cultivating Genetic Algorithms for Creative Coding
- That Creative Code Page
- p5.js Coding Tutorial | Differential Line Growth
- p5.js Coding Tutorial | Flocking Simulation with Quadtree
- Punch Out Model Synthesis: A Stochastic Algorithm for Constraint-Based Tiling Generation
Projection Mapping
Coding Techniques
- JavaScript Patterns
- JavaScript ES6 - How to Use p5.js in a Module
- JavaScript Promises
- HTML Canvas Deep Dive
Generative Design
- Design Lecture Series - Patrik Hübner
- Generative Design by Patrik Hübner
- Generative Design, Vera van de Seyp
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:
-
Clona el repositorio en tu computador.
-
Cámbiate al directorio del repositorio.
-
Ejecuta el comando:
Ventana de terminal git filter-branch -f --index-filter "git rm -rf --cache --ignore-unmatch path_al directorio" HEAD -
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 -
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 -
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:
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:
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.
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.
- Arduino Basic Blender to Arduino Communication. Youtube tutorial
- Math x Blender = POWER! Youtube tutorial
¿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).