This repository includes code & resources for students attending my Generative Art & Creative Coding with JavaScript workshops in 2018.
Here is a list of tools, software and libraries that will be used during the workshop.
Tool | Documentation | Description |
---|---|---|
Code Editor | A JavaScript code editor, VSCode is recommended | |
Browser | A modern browser, Chrome is recommended | |
Canvas API | [docs] | The HTML5 <canvas> API, built into all browsers |
Command-Line | [guide] | A command-line application like Terminal (macOS) or cmder (Windows) |
Node.js (v8+) | [docs] | Used for running command-line JavaScript tools |
npm (v5+) | [docs] | Used to install third-party dependencies and tools |
canvas-sketch |
[docs] | A development tool & framework for Generative Art |
canvas-sketch-util |
[docs] | Utilities for Math & Random Number Generation |
ThreeJS | [docs] | A 3D rendering engine for WebGL |
Before starting the workshop, make sure you have installed and set up:
- A browser, Chrome recommended
- A code editor, VSCode recommended
- A terminal application (like Terminal, cmder or cmd.exe)
- Node.js 8+ and npm 5+
If you already have these tools installed, you can use the --version
flag to make sure you have at least node@8
and npm@5
:
npm --version
node --version
If you haven't installed these yet, you can find more instructions here:
We will be using canvas-sketch
and its command-line interface (CLI) during the workshop.
To install the CLI with npm, use the --global
or -g
flag like so:
npm install canvas-sketch-cli --global
💡 Note the
-cli
suffix in the name; this tells npm to install the CLI tool, not the code library.
If you are new to the command-line, you can read more details here:
During the workshop, you won't need to clone and run this repository locally. However, if you wish to do so, you can find more instructions here:
I've also included a small "cheat sheet" that you can use as a reference if you are forgetting some of the patterns and recipes discussed during the workshop.
This workshop encourages students to make use of npm modules to build complex and interesting artworks.
If you find a module you want to use, like point-in-polygon, you can install it from your project folder like so:
npm install point-in-polygon
Below are some nice modules for creative coding & generative art:
- load-asset - a utility to load images and other assets with async/await
- point-in-polygon - test if 2D point is within a polygon
- nice-color-palettes - a collection of 1000 beautiful color palettes
- gl-matrix - 2D and 3D vector & matrix math utilities
- poisson-disk-sampling - can be used for 2D and 3D object placements
- delaunay-triangulate - 2D and 3D triangulation
- simplify-path - simplify a 2D polyline path
- chaikin-smooth - smooth a 2D polyline path
- earcut - fast 2D and 3D polygon triangulation
- voronoi-diagram - for 2D and 3D voronoi diagrams
- svg-mesh-3d - convert SVG path string to a 3D mesh
- eases - a set of common easing functions
- bezier-easing - create cubic bezier curve functions
- glsl-noise - noise functions as a GLSL module (used with glslify)
- glsl-hsl2rgb - HSL to RGB function as a GLSL module (used with glslify)
More links to generative art & creative coding:
-
Generative Art
-
Anders Hoff — Writing on Generative Art
-
Tyler Hobbs — Writing on Generative Art
-
My Blog — Writing on Creative Coding & Generative Art
-
GLSL & Shaders
-
Math
-
Linear Interpolation — intro to
lerp
-
math-as-code — A cheat sheet for mathematical notation in code form
-
-
More Resources
-
awesome-creative-coding — a large list of resources
-
graphics-resources — a large list of papers & study material
-
-
Tools
-
giftool.surge.sh — A simple tool for creating looping GIF animations from a folder of PNG frames
-
cubic-bezier.com — A cubic Bezier curve editor, useful alongside the bezier-easing module
-
-
Communities
-
#plottertwitter, #generative, #webgl and similar hashtags on Twitter, Instagram etc.
This repository has a dual license.
The textual documentation and markdown files are all licensed as MIT.
The JavaScript source files have been released under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0), see src/LICENSE.md for details.