I made a tool that allows me to assemble hand drawings in specific ways.
The drawings are saved as JSONs with a few key attributes: lines for the drawing, orient lines and their labels for how to assemble the drawing, polygon border for the edge of the drawing,
I then take these jsons and put them into a diff program for producing an assemblage.
The assemblage program does the following
- load the drawings
- randomly select a drawing to put it down
- then it goes through the “orient lines” of that drawing, which serve as attachment guide, and then randomly selects a new drawing to attach at that place.
- the program automatically orients the new drawing to fit the attachment from the old drawing. It uses the polygon border to prevent new drawing it placed down from touching old drawings. The “LIMB” label is accompanied by a few others to help determine what kind of opening should be fitted.
- It keeps trying to place drawings until it fills all the openings
In the debug view below, it shows the green “polygon border” and the red and blue “orient lines” which direct how the drawings get assembled
random assembly debug view
random assembly Non debug view
I used the drawing tool to draw some of the mutant animals. Here are a few of them with the debug view on:
and then randomly generated assemblages of them eating each other:
I plan to add a few more functionalities to my program. I want it to delete overlaps between drawings
I plan to do this by
- automatically generating a convex hull of the points. (or manually drawing a closed border)
- clipping all the lines that fall in the intersection of the border
I want to use this tool to produce various combinations of assembled drawings
I think orifices and things going into them could be a theme, or assembled fossils, assembled aliens, assembled gardens, assembled outfits.
This is at the moment a little broken and the drawings a tad hasty, but essentially I want to make a recursive monster maker. It’ll take drawings of animal parts and automatically scale and fit them into predefined openings. Here are a broken runs of the algorithm.
I drew some inspiration from a project Golan showed me: Mario Klingemann “Ernst” (examples below):
I’ve done some assemblage in the past with hand drawn pieces:
This is a truchet tiling with hand drawn pieces.
Some process shots:
(weird bug I need to fix)
tool I build to draw, save, and generate, JSONs
I decided to revise my work on the truchet body tiling project. This essentially included me revising my work flow on getting hand drawn tiles into my truchet quickly to make “exceptions” to my rule set and create funny moments in the piece.
I added the creation of adam hands reaching to god. I also added some variation in the hands and the feet (middle fingers, peace signs, acrylics, etc). In line with my hairy framed blobs, I also added a hairy frame to this piece. To sign my work I included the sign language for HIMA in the bottom right. I also tweaked the truchet probabilities per Golan’s suggestion to have less piping and more disjoint pieces in the tiling.
Here’s the SVG for the final plot. (this is rendering small. click on it to see it larger).
(this are a lil crappy)
Full size pic of the 25×42 plot:
a few close ups:
I did a body horror truchet tiling.
Here’s how I made the tiles on procreate. I used the drawing guide and made a layer with a grid showing where lines should connect for each tile. Then I made a set of tiles and exported them as transparent PNGs. (there are 16 truchet tiles but only a few unique tiles which can then be rotated to produce the others in the set)
Import the PNG to illustrator and use Window > Image Trace with the preset line art. Expand the outline and save the SVG.
I used Golan’s truchet sketch on p5 as the code and swapped out the drawTile() with something that’ll display the appropriate SVG from the tile set.
I have a few ideas and I need help narrowing it down
idea #1 Asemic writing
- Training a GAN to produce children’s refrigerator writings + drawings
- Then apply a post processing algorithm to imbue the output with estimated pressure data
- Then get the axidraw working with pressure data (g code?)
- Then get it loaded up with a crayon to draw the drawings with the same pressure variation of a child
- End product?
- A bunch of children’s drawings produced by a neural net and inscribed by a machine
- From far away they look like nondescript children’s fridge drawings but closer up the writing is nonsensical and the drawing is not of an object. The drawing was conceived and executed by a machine. I think it can be kind of creepy.
- what do I get out of it? Learning about GANs and getting the axidraw working with pressure
Idea #2 Generative multiples
- An alphabet bestiary of animals.
- Each letter = new animal
- Each time a button is clicked a new generation of the alphabet bestiary
- Some examples:
- At the end I could try and plot it to make a physical book. Most likely this will exist as only online generative art. (dealing with stroke and fill is a pain, might need to use drawing bots libraries)
- what do I get out of it? I want to start growing a following on twitter to sell NFTs. I think an alphabet bestiary would keep me to a consistent goal that includes daily tweet content (each animal). I also think this is a conceptually accessible project. I would learn about different algorithms to produce each animal. It’ll be a bit tough to keep the project visually cohesive while using different algorithms. Generative algorithms typically have a distinct visual feel. I think my main focus for this would be generative pattern algos. For the final I’ll probably have an incomplete bestiary of a couple letters.
- (Lingdong already made something similar I might scrap this)
Idea #3 Embroidery
- thinking about free standing lace like this
- and using this style in creating dragonfly wings. Need to do experiments with the embroidery machine to see if this is possible
- Also want to make wound patches (I’ll attach a sketch later) and veins / scars
- or even a scarred / wounded stuffed animal
- I think generative stuffed animal patterns with scars / wounds stitched on it would be an interesting concept and very on brand for my work
- (idk if the machine will be fixed so I’ll need to look into that and meeting tatiana)
For mine I wanted to make hairy blobs.
here’s my blob
My sketched hatchings
Here’s my hatching SVG
The first row is diagonal lines with a little randomization
The second row is a space filling curve called a hilbert curve. This curve has 8^8 points. To produce gradations the points are rendered with a certain probability this functionally limits the amount of points and makes the curve less dense. There are multiple good sources to learn more about the hilbert curve from.
^ this link provides a good recursive solution for the curve. The first two arguments to the function they code describe the top left point from where the curve begins. The next four detail how the curve expands to the bottom and to the right.
The last row is multiple sin and cos waves added together to produce a more complex curve and then stacked at a certain spacing. The spacing edits the gradation.
Vpype! at the end I used this CLI to run some optimizations
here’s a good command to run after producing svgs.
vpype read FILE_NAME.svg linemerge linesort linesimplify write --center OUT_FILE_NAME.svg
I agree with the author that computers cannot draw. When drawing with a stylus, the holder of the stylus is presumed as the intelligent creator. Unless the computer has a say in what is on the page, then they are not drawing. I would only consider a drawing produced by an algorithm which learns without observation as the drawer. The author makes an interesting point on replication and how that affects perception. If a machine can draw, then where does the drawing lie on the spectrum of uniqueness? Do we classify it as something completely special to that computer or do we see it as something replicable because it was made by a computer? Even for an AI drawing machine, cloning the algorithm on a different computer should produce the same results. So how unique is the uniqueness?
here’s examples of my arc line walker
It generates arcs or random length and links them together.
Here’s the code: