In order to test the current limits of 3D printing, I created a technique for converting digital audio recordings into 3D-printable, 33rpm records that play on ordinary turntables. Though the audio quality is low, the songs encoded on these records are still easily recognizable. The 3D modeling in this project was too complex to do by hand, so I wrote a Processing program to do this conversion automatically. It works by importing raw audio data, performing some calculations to generate the geometry of a 12" record, and eventually exporting this geometry straight to a 3D printable file format.
I initially came up with this idea after many experiments with very low resolution, real-time digital signal processing on an Arduino. Through these projects, I learned that audio is a very resilient medium; it can take a fair amount of distortion and compression while still maintaining most of the integrity of the original sound. We have biology to thank for this: as we hear audio, some complicated processing goes on in our brains that makes us very good at ignoring noise and focusing on the important pieces of information coming through. We can work off of relatively few cues to piece together mangled or noisy audio and make sense of it.
I printed these records on an Objet Connex 500, a high-end UV-cured resin printer. Like most 3D printers, it creates an object by depositing material layer by layer until a final form is built. The Objet prints with tiny resin droplets at a resolution of 600dpi in the x and y axes and 16 microns in the z axis. Even with this precision, the smallest features printed by an Objet are at least 1 or 2 orders of magnitude larger than those on a real vinyl record. After a lot of experimentation and parameter tuning, I was able to produce records with a sampling rate of 11 kHz and 5-6 bits of resolution per sample. A detailed discussion of the development process, code, and downloadable 3D record files can be found on Instructables.
This video shows the entire record-making process and features some of the audio I've been able to reproduce. The process is broken up into a few steps: audio preprocessing, model generation, and printing. Because the sampling rate of the records is much lower than the typical 44.1kHz sampling rate of a digital recording, I apply a low pass filter to remove high frequency components before constructing the 3D model. I also apply RIAA equalization to counteract the frequency response of the phono preamp used during playback. As I programmatically generate a 3D model of a spiral groove wrapping around the surface of a record, I use information contained in the processed audio recording to modulate the depth of the groove. The resulting model is saved and sent to the printer, where it is converted to a series of layers to print from small droplets of resin. After one layer of resin is deposited on the print bed, it's cured by a set of bright UV lights and the next layer of resin is deposited on top; this continues until the model is finished printing (about 100 layers). From there, the model is cleaned and can immediately be played on an ordinary turntable.
My code takes raw data from a digital recording and uses it to modulate the depth of the record groove to match the original waveform of the song. If you look carefully at the following closeup images, you can see the waveform traced out by the bottom of the groove. The waves are oriented vertically relative to surface of the record and cause the needle to vibrate up and down as it moves across the groove, recreating the original audio signal. The geometry of the record is calculated as a mesh of triangular faces and saved as an STL file using the ModelBuilder Library.
Stereo (2 channel) vinyl records are cut both vertically and laterally, this way it’s possible for two isolated channels of audio to fit into one groove. I chose to encode audio information vertically within the groove because the 3D printer I used was most precise along its vertical axis. With the exception of Edison cylinders, mono recordings are typically cut laterally for better quality and higher dynamic range.
Closeup of an STL model used to create a 3D printed record, showing the individual triangles that make up the mesh. A full record side results in a mesh composed of about 10 million triangular faces. The depth of the groove traces out an audio waveform.
More audio examples.
Record model cross section, spanning many grooves.
Objet printer in action, making a record from UV-cured resin.
some old images I found during a downloads folder purge
#marbling #computationaldesign #generativeart #webgl
turning off anti-aliasing gives this noisy effect, looks like colored pencil
#papermarbling #marbling #suminagashi #ebru #marbledpaper #fluidart #marblingart #watermarbling #creativecoding #generativeart #generative #webgl #glsl #shader #computationaldesign #fluiddymanics #glitchart
Some of these patterns form tidy little cells when you let them run without much damping. This was combed using only horizontal and vertical lines.
#papermarbling #marbling #suminagashi #ebru #marbledpaper #fluidart #marblingart #watermarbling #creativecoding #generativeart #generative #webgl #glsl #shader #computationaldesign #fluiddynamics
slime mold, grown on my phone.
link to this app can be found in my "Shaders" highlight
#webgl #glsl #shader #gpgpu #creativecoding #generativeart #generative #computationaldesign #physarum #slimemold #particlesystem
letting things get weird with this scalloped pattern
#papermarbling #marbling #suminagashi #ebru #marbledpaper #fluidart #marblingart #watermarbling #creativecoding #generativeart #generative #webgl #glsl #shader #computationaldesign #fluiddynmaics #cfd
birdwing-inspired combing patterns
#papermarbling #marbling #suminagashi #ebru #marbledpaper #fluidart #marblingart #watermarbling #creativecoding #generativeart #generative #webgl #glsl #shader #computationaldesign #fluiddymanics
computational marbling: a few variations in this color scheme
#papermarbling #marbling #suminagashi #ebru #marbledpaper #fluidart #marblingart #watermarbling #creativecoding #generativeart #generative #webgl #glsl #shader #computationaldesign
Cells and waves. Someone on twitter mentioned that the waves look like numerical instability propagating across the system, I think that's probably right.
#webgl #shader #glsl #cellularautomata
Some early puzzle prototyping on hand-printed, double-sided suminagashi plywood. It was a bit tricky to control the cut lines in simulation, but I still might play around with this more in the future.
#puzzle #lasercutting #suminagashi #fluidart #computationaldesign #webgl #fluiddynamics #fluidsimulation #marbling
I made a small npm package for parsing tetrahedral MSH files in a web browser (MSH is a 3D file format that stores finite element information for simulation purposes). Hoping to use this to show how to write soft body simulations with gpu-io.
Made with some help from #chatgpt – you could not get me to shut up about this thing a few weeks ago, but I'm afraid I may be entering the "trough of disillusionment" phase of the hype cycle. After getting stuck for way too long debugging subtle chatgpt mistakes, I'm sticking with human generated code for a bit.
Find the library as "msh-parser" on npm, live demo in the GitHub repo. Link in FOSS (free and open source software) story.
#webgl #finiteelementanalysis #tetmesh #tetwild #geometryprocessing #computationalgeometry #threejs #opensource
Another gpu-io demo, this one is a classic reaction-diffusion system, where two virtual chemicals interact to create dynamic patterns.
Similar systems were proposed by Alan Turing in 1952 as a mechanism for pattern formation in plants and animals. You might have even spotted some of these patterns in the wild (scroll to the end to see some real life examples).
This reaction-diffusion system's behavior depends mainly on two parameters, which I've varied across x and y. You can zoom around to explore parameter space and find a variety of interesting patterns and dynamics. Most of the canonical behavior occurs in a small sliver of parameter space, but it's fun to explore some of the lesser-known regions as well. I'll post a link in my "Shaders" story.
Additional photography credits: Dennis Jacobsen, Arthur Winfree, and Matsui Nursery.
#reactiondiffusion #webgl #glsl #shader #generativeart #computationaldesign #gpgpu #patternformation #morphogenesis #creativecoding
Slowly working my way through these puzzles. Great to finally see them irl, really happy with how the prints look against the wood grain.
Guess what everybody on my xmas list is getting this year?
#puzzles #jigsawpuzzle #lasercut #webgl #glsl #generativeart #fluidart #marbling #suminagashi #ebru
Thrilled to see the marbling puzzles in print in the NYT this week! Featured in a full page article about @nervous.system’s work that ran in the Science section. Big congrats to Jesse and Jessica and also a massive thanks for including our collaboration in the article!
Marbling Infinity Puzzles are now completely sold out for pre-holiday delivery, but as of today it looks like you can still order them to ship in ~4 weeks.
#puzzles #jigsawpuzzles #generativeart
Made a simple fractal app to explore the Julia set with webgl. I’ll post a link in my “Shaders” highlight – you can play with the fractal parameters and zoom around to see lots of detail.
This demo is good for figuring out how to get started with my gpu-io library, the shader code is super simple. Code is linked from the app.
#webgl #glsl #shader #gpgpu #creativecoding #fractal #mathart #juliaset
Simulation of a multicellular slime mold (Physarum polycephalum) as it reconfigures itself in response to its environment. I'll post a link to the live demo in my "Shaders" highlight — it's fun to play with, even on a phone.
This simulation is a mix of grid and particle methods — lots of little agents interacting with an underlying field of chemo-attractants. Somewhat similar to how ants use pheromones to make trails. By adjusting the parameters of the simulation, different dynamics/patterns emerge.
I've pre-loaded the app with a few interesting presets to try out.
Inspired by the incredible work of @mxsage.
#webgl #glsl #shader #gpgpu #creativecoding #generativeart #computationaldesign #physarum #slimemold #particlesystem
I wrote a blog post about building this computational simulation inspired by the centuries-old craft of paper marbling (link in bio).
Paper marbling uses the movement of water to create swirling patterns of inks on paper. The earliest accounts of marbling date back to the 12th century in Japan. This simulation is based on the European style of “combed marbling”, which uses fine-toothed combs to create repeating patterns — commonly featured as decorative endpapers in books from the 17th-19th centuries.
I’m excited about the ways that this marbling simulation can help to unlock new patterns that would be impractical or even impossible to recreate in real life. Though marbling techniques have been around for centuries, there is still plenty to explore when it comes to pattern generation. Several of the combing patterns we used for the infinity puzzles are brand new (as far as I know) variations on traditional marbling techniques, such as “bouquet”, “birdwing”, and “thistle”.
More about what you’re looking at:
1: A variation on the popular "bouquet" pattern in reds/purples, but with some extra vertical combing at the end that shapes/splits the bouquets further. The resulting shape reminds me of Islamic architecture.
2: A variation on "birdwing” in teals/pinks, but with scalloped combing going in alternating directions.
3: Another variation on "bouquet” in blues/reds, but this version alternates the direction of the bouquets. I’m curious if anyone has seen this pattern before?
4/5: Freeform patterns, with the larger scale features driven by turbulence (as if air was blowing across the surface of the water).
6: Some sources of inspiration from a youtube video called “The Art of the Marbler”.
7: A screenshot of the current interface for my marbling software. I'm planning to release the marbling simulator as a web app at some point in the future, but I still have some work to do to make it more usable. Let me know if this is something you would be interested in trying out someday!
#papermarbling #marbling #suminagashi #ebru #marbledpaper #fluidart #marblingart #watermarbling #creativecoding #generativeart #webgl #glsl #shader #computationaldesign
Excited to share this puzzle collaboration with @nervous.system - Marbling Infinity Puzzles are generative jigsaw puzzles inspired by the art of paper marbling.
The artwork was made in a computational marbling simulation that uses physics to model the patterns and flowing shapes of marbled inks (more on that soon). @nervous_jessica and @nervous_jesse created the wave/vortex inspired puzzle cut, which pairs so nicely with the artwork!
These "infinity" puzzles have no edges and can be reconfigured in thousands of ways. All puzzles are laser cut from wood and are available in 3 sizes. I'll post a link to the puzzles in my story, also find a link on my website.
#jigsaw #jigsawpuzzle #lasercut #generative #generativeart #papermarbling #marbling #suminagashi #ebru #marbledpaper #fluidart #marblingart #creativecoding
My fluid animations will be running ALL EVENING this weekend on Salesforce Tower! Weather has been very iffy, but hopefully it will clear up enough to get a peek.
These animations were inspired by the dreamy interactions between the tower and the sf fog—my favorite phenomenon is shown in the third pic (“god rays”).
Unfortunately, the fog has really rolled in the last couple of nights and visibility is poor, so I’m not sure if anyone will actually be able to view this. I don’t think it technically counts as irony since this was totally predictable—silly me for trying to run an outdoor video installation in the middle of summer! Happy to get some relief from the heat either way.
The installation will continue through the month of August from midnight-1am.
#karlthefog #fluidart #marbling #generativeart #webgl #glsl #salesforcetower #clouds #creativecoding
cloudy/windy renderings – I finally got this code to a point where it will run for hours without settling... and it tiles in space!
#clouds #fluidsimulation #fluidart #webgl #glsl #shader #creativecoding #generativeart #marbling
CNC mill update: starting to make circuit boards on this machine now! Made two double-sided PCBs for a project I did with the Exploratorium's @tinkeringstudio and @wonderfulideaco last month.
I'm still running this machine at 5k RPM, but will try taking it up higher soon (it should go to ~20k). Third video gives you a sense of what it sounds like when it's running, seems pretty smooth so far. The new aluminum spindle is doing a great job of removing heat when running at high speeds – planning to machine a second spindle in the next few months!!
#cncmachining #diy #printedcircuitboard #machinedesign #shadowremix
fractal fluid. I really like the emulsion texture that forms in the second half of the video.
#fluiddynamics #webgl #glsl #creativecoding #emulsion #fluidart #simulation
unstable dish soap
#fluidart #fluiddynamics #webgl #glsl #shader #thinfilm #interference #blackandwhite
Several of my fluid simulations are running on top of Salesforce Tower every night from midnight-1am for the month of August. If you are in the Bay Area, look up! Big thanks to @jimcampbellstudio for the opportunity to show this work and for all the help testing these animations on the tower!
#generativeart #computationaldesign #webgl #glsl #shader #simulation #fluidart #clouds #suminagashi #thinfilminterference #marbling
color gradients
#suminagashi #marbling #fluidart #webgl #glsl #shader #physics #simulation #generativeart #creativecoding #computationaldesign #gradient
suminagashi gradient
#suminagashi #marbling #fluidart #webgl #glsl #shader #physics #simulation #generativeart #creativecoding #computationaldesign #blackandwhite #gradient
suminagashi loops
#suminagashi #marbling #fluidart #webgl #glsl #shader #physics #simulation #generativeart #creativecoding #computationaldesign
digital suminagashi simulation
#suminagashi #marbling #fluidart #webgl #glsl #shader #physics #simulation #generativeart #creativecoding #computationaldesign
back to bubble films.
#thinfilm #bubble #interference #fringe #light #webgl #glsl #creativecoding
Red cabbage ramp up. This one doesn't look very symmetric or spiral-y at first, but it ends up working pretty well. I like how each cabbage has its own "personality" when animated.
Made from a single photo with: https://apps.amandaghassaei.com/botanigram/
Also check out this series on youtube if you want to understand how this all works:
"Doodling in Math: Spirals, Fibonacci, and Being a Plant"
https://www.youtube.com/watch?v=ahXIMUkSXX0
#fibonaccispiral #cabbage #botanigram #goldenangle #phyllotaxis
Going through some old versions of the code, this was a version that formed these cool little u-shaped barbed structures. I'm still not exactly sure why.
#fluidart #generativeart #shaders #webgl #glsl #fluidsimulation
birefringent crystals. (I'm trying to simulate oil drops, but it's not working yet)
#thinfilm #interference #optics #polarizedlight #crystals #birefringence #rainbow #webgl #glsl #shader #wip #generative
Semi transparent drops, messing with alpha compositing this time. Looking more like #watercolor
#webgl #glsl #marbling #generativeart
Adding new drops at the edge.
#marbling #papermarbling #ebru #suminagashi #fluidart #webgl #glsl #creativecoding #generativeart
Pulled out some old experiments with oil-based inks on newsprint. The bubbles in the ink formed these ultra-fine lacey textures when transferred to paper. Thinking about how to include similar processes in my shader programs.
#marbling #fluidart
Marbling simulation progress – drops of ink scattered on water form a "stone" pattern. I've added some diffusion within the ink drops to give it a bit more texture.
#marbling #ebru #suminagashi #fluidart #webgl #glsl #creativecoding #generativeart
Last plant post for a bit, wanted to add some info about making these "ramp up" animations, which show how rotations of 137.5 deg get you to the final zoetrope effect.
Made with @p5xjs, code on github: https://github.com/amandaghassaei/botanigram/tree/main/docs/spin-animation
There’s a live demo of the code hosted at https://apps.amandaghassaei.com/botanigram/docs/spin-animation/
#stopmotionanimation #pelecyphoraaseliformis #fibonaccispiral #goldenangle #goldenratio #p5js #creativecoding #cacti #zoetrope
A collection of cabbage animations made with https://apps.amandaghassaei.com/botanigram/
Anyone want to sync these to music?
#redcabbage #fibonaccispiral #fractal #goldenratio #goldenangle #stopmotionanimation #abstract #botanigram
A quick intro video to explain how to use Botanigram: https://apps.amandaghassaei.com/botanigram/ (link in story)
Tips:
- you can paste images directly into the app
- use the arrow keys to fine tune the center point (I like to do this while the animation is running)
- export as gif, mp4, or png frames
Expert mode:
- adjust the rotation angle slightly to stabilize the orientation
Couldn’t help but add a bunch more Astrophytum asterias animations that I made yesterday, hope you like them!
#opensource #webgl #threejs #botanigram #creativecoding #stopmotion #fibonacci #goldenangle #goldenratio #botanigram
A compilation of Astrophytum asterias animations made with https://apps.amandaghassaei.com/botanigram/ (link in story).
Each animation is made from a single photograph – I pulled these from the internet. Does anyone have a cactus like this? I'd love to feature one (or many) in the Botanigram app!
In general, cacti work well for these animations – the little spines and tufts provide a nice focal point to track the growing illusion. Hope you give it a try!
#astrophytum #astrophytumasterias #cacti #zoetrope #stopmotionanimation #creativecoding #webgl #fibonacci #goldenratio #goldenangle #plantgeometry #botanigram
Just released a little web app that creates "growing" animations of plants from a single photograph. Try it out and see how your plants grow!!
https://apps.amandaghassaei.com/botanigram/
The magic behind these animations is a natural phenomenon called the golden angle, which governs the spacing of leaves, petals, and branches on growing plants. The golden angle (137.5°) is responsible for the spiral patterns on pinecones, sunflowers, and succulents, and is related to the Fibonacci series and the golden ratio. 🌻
This project was deeply inspired by the "Blooms" series of work by @john.edmark — I recently came across an interview where Edmark describes how you can spin REAL plants to produce similar animated effects and found myself wishing I could test it out on every plant I saw around me.
I’ll post a link to the app in a story. Hope you enjoy it and make some cool stuff!
#creativecoding #fibonacci #goldenratio #goldenangle #succulents #cacti #stopmotion #animation #zoetrope #phenakistoscope #webgl #threejs #botanigram
A few more videos showing the design process behind the orrery. First video is a timelapse of the 3D model, showing nearly 1000 changes that I've made over the past few years. I fabricated the first working version of this orrery in 2019, but went back to improve some parts of the design and document the full build in this latest version.
Second video shows the final 3D model with all the parts laid out flat for toolpathing. The main components of the mechanism were cut from 1/8" and 3/16" brass sheet stock.
Find step-by-step instructions and all CAD files in my Instructables post. I've added the link to my website under Projects > Orrery.
#orrery #tellurion #cncmachining #horology #kineticsculpture #diy #fusion360 #3dmodeling #cad #opensourcehardware
The orrery is finally finished! Designed from scratch and machined from brass using a CNC mill (and some very tiny cutting tools). By winding it forward, you can calculate the date of future eclipses and differentiate between total and annular eclipses. Full build documentation, all CAD files, and tons more information on @instructables (link on my website under Projects > Orrery).
#orrery #tellurion #cncmachining #horology #kineticsculpture #diy #handmade #fusion360 #opensourcehardware
The saga of the silver tooth! This calendar dial was the most difficult part to fabricate in the entire orrery build. After redoing the engraving to fix some issues with cut depth and burrs, I had a hell of a time figuring out how to make one tooth silver.
Originally, my plan was to try to silver-leaf it, but I just couldn't make it work in such a small spot. Instead, I filed out the existing tooth and cut a small piece of aluminum shim to fit in its place. The dial wax (basically a black shellac) that I used to darken the letters of the engraving worked as a nice adhesive – I warmed up the shellac and pressed the tooth in (turns out this same stuff is used to glue components of brass horns together). After a bit of careful sanding, I was able to bring it flush with the surface.
So what's with the silver tooth? Well, I'm keeping this orrery in the family, giving it to Michael. The silver tooth marks when we first met – October 20, 2012, almost ten years ago now. This is also why the year dial starts at 2012 (though I've been telling people that it's just picking up where that Mayan calendar left off). It's meant to be a subtle feature of the orrery, and I'm really happy with how it ended up!
Only a bit of alignment left, hopefully my next post will show the finished product!
#orrery #tellurion #horology #cncmachining #engraving #diy
Moon finally attached – it glides along a cam that keeps it on a slightly tilted orbit. The tilt of the moon's orbit precesses about 19 degrees per year in the opposite direction of the moon's rotation around the earth.
#orrery #tellurion #horology #cncmachining #kineticsculpture #diy
After a lot of adjustments, the full mechanism is now up and running! You would not believe how many times I've had to take this apart and put it back together to get to this stage.
Working pretty smoothly – still have a few slightly sticky spots, mostly due to the extra thickness of the lacquer coating around the gear teeth I think, but should work itself out in time.
Only things left now are to add the moon (I want to tighten up the sliding fit of the moon's mounting post first, you can see it wobbling around a bit in this video) and lacquer the two dials and install those. I've added some pockets in the wood base to hold down the calendar dial with magnets in case I need to pop it out later, also drilled some holes to help release it.
That should be it then! Working on a very detailed Instructables post with all the CAD files included – should be posted some time in January.
#orrery #horology #tellurion #kineticsculpture #cncmachining #diy
3D printed records were featured in Vinyl World — a new book about vinyl culture! It’s a fun read, lots of history and info about the ways people are producing, distributing, collecting, and playing vinyl records, some great albums featured as well. Text is in both German and English.
My records are part of a section about vinyl production — I’ve included a few pages from that section here, so cool to see pics of the mastering/pressing process in more detail!
Thanks so much to the author Markus Caspers and @teneuespublishing for featuring my work and for sending over a copy of the book — can’t wait to read through it more this weekend!
#diyaudio #3dprinting #vinyl #vinylworld
Excited to share a new feature in the origami simulator – now it's possible to copy svgs designed in @cuttlexyz and paste them directly into origamisimulator.org
cuttle.xyz is a 2D vector editing program with some really powerful parametric and scripting tools, great for origami tessellation design (among many other things). This new feature opens up a lot of possibilities for parametric design of origami crease patterns – I'm hoping we can add even more integrations between these apps in the future!
Also going to take this opportunity to plug an origami sim feature request thread I've got on github:
https://github.com/amandaghassaei/OrigamiSimulator/discussions/41
I'm planning to do a big push on the origami app next year, so please let me know (in the thread) if there are features that you'd like to see. Top of my list is to do some code refactoring to make the physics solver more portable to other apps/projects and to start building out some design editing tools (esp for curved creases).
Thanks for the video and the PR @cuttlexyz !
#orgiami #computationaldesign #webgl #threejs #creativecoding #origamitessellation #creasepattern #vectordesign #cad
Work in progress simulating a "stone" marbling pattern – a random pattern of ink drops scattered on water. Focusing mainly on the movement/interactions of the drops at this stage. The colors are a bit flat at the moment, but I'll be adding some variation in opacity (showing diffusion of ink) within the drops next.
#marbling #ebru #suminagashi #fluidart #webgl #glsl #creativecoding #generativeart #shader #wip
Some large renderings I made over the holiday. These are a full page at 600dpi. The last two images show some detail, lots of little fractals in the swirls.
I want to go even bigger but need to get a better GPU and a spare machine to run them on – my computer was tied up with these for about 36 hours!
#webgl #glsl #shader #fluidanimation #fluidart #rendering #fractal
Birdwing marbling pattern – I like the illusion of counter-rotating circles in this one, it's actually made with sine waves.
#marbling #suminagashi #ebru #fluidart #generativeart #creativecoding #webgl #shaders #patterndesign #birdwing
Just added several new creases patterns to origamisimulator.org – thanks to all the contributors for their designs! Really happy to get more curved crease and kirigami (cut and fold) examples in the app. More info below, including how to find the crease patterns in the Examples menu:
1 - Examples > Curved Creases > Hex Spiral Tessellation. Designed by @polyscopes based on the Spidron Tessellation by Daniel Kwan and similar spiral tessellations by @ekaterina.lukasheva
2 - Examples > Curved Creases > Leaf Pattern (Opus T-69). Designed by @ekaterina.lukasheva
3 - Examples > Kirigami > Auxetic Triangle Tessellation. Designed by Garrett Milliron based on the paper "Programmable active kirigami metasheets with more freedom of actuation" by Tang et al.
4 - Examples > Curved Creases > Sweet Dreams (Opus T-41). Designed by @ekaterina.lukasheva
5 - Examples > Tessellations > Hex/Tri Tessellation (flat foldable). Designed by @polyscopes based on a smocked (pleated fabric) pattern by @paperain based on the origami of @alessandrobeber
6 - Examples > Curved Creases > Improvisation 62. Designed by @ekaterina.lukasheva
7 - Examples > Kirigami > Perforated Triangle Tessellation. Designed by Johann Kreuter.
#origami #kirigami #curvedfolding #computationaldesign #origamitessellation #creasepattern #webgl #threejs
Another high res render from the marbling sim. Chrysanthemum pattern with extra texture added to give it more of a brushed look.
#marbling #generativeart #creativecoding #shader #glsl #webgl #fluidart #pattern
ink drop simulation in the works.
#suminagashi #generativeart #creativecoding #glsl #webgl #shader #cells #ghosts
Fit test for the hand crank and worm drive. Still need to press on a final gear that engages with the core mechanism, but this was a nice test to see if the dimensions of the wood base look good. I'm using some scrap plywood to test for now, planning to machine the final base from cherry wood later this week.
Last adjustments to the design and updates to the toolpathing shown in the second video, very close now!
#orrery #cnc #cad #cam #fusion360 #tellurion #horology
Final fitting! Moving slowly, but nearly there. Wanted to show a close-up of the four types of rotation happening at the final (leftmost) stage of the orrery.
The fastest spinning gear drives the motion of the moon around the earth (the moon is not on there yet, but you can see the vertical post it will mount to). The height of the moon tracks along an angled cam (also rotating), which depicts how the orbit of the moon is slightly angled relative to the orbit of the earth around the sun. Above that is a little arrow that indicates the position of the moon’s closest approach to the earth (since the orbit is actually elliptical), this also processes gradually over time.
Finally, the top mount holding the earth rotates to counteract the rotation of the entire assembly around the sun – this keeps the tilt of the earth pointing in a fixed direction (that part makes more sense when the whole thing is assembled).
All these pieces together let you calculate a solar eclipse and differentiate between a total eclipse (when the moon is closer to the earth and blocks out the sun completely) from an annular eclipse (when a ring of light is still allowed to pass).
#orrery #diy #cnc #horology #tellurion #eclipse #kineticsculpture #wip
seafoam 🌊🌊🌊
#generativeart #creativecoding #shader #marbling #suminagashi #fluidpainting #webgl #glsl #patterns #loop
Wish I could take credit for these color combos, but choosing a few bright, saturated colors at random is working surprisingly well!
#generativeart #creativecoding #embroidery #textileart #patterns #colorpalette #webgl #glsl #shader
Leaning into this textile look a bit more, this is a variation on a "thistle" marbling pattern, with some added texture to make it look embroidered/woven. Thinking about ways to fabricate these designs in real life, need to find someone with a cnc embroidery machine! Until then, I have some pen plot ideas worth testing.
#marbling #embroidery #weaving #generativeart #creativecoding #glsl #shader #webgl #simulation
Glitchy tapestries, made in the marbling simulator.
#glitchart #generativeart #creativecoding #marbling #weaving #embroidery #glsl #shaders #webgl
Something in-between brushed paint and marbling.
#marbling #simulation #fluidart #generativeart #computationaldesign #creativecoding #pattern #webgl #glsl
Experiments with fluid dynamics and digital marbling – by reducing the viscosity of the medium or combing in multiple directions at once, it's possible to create a more dynamic look than you would typically see in traditional marbling. Captured these stills while the inks were in motion. Tried to find a moment when the movement retains some structure and the colors have not become too stretched or over-worked.
#fluidart #marbling #pattern #simulation #physics #fluiddynamics #generativeart #creativecoding #webgl #glsl
Dripping paint.
#generativeart #webgl #glsl #shader #creativecoding #fluidart #marbling
Spent the first half of this week doing a big refactor on the fluid library, getting ready to release a wind-inspired project very soon. While the code was in some intermediate (broken) state, the simulation was sloshing around and spontaneously formed these patterns. Tried to capture a few before they got too messy.
#fluidart #flow #physics #webgl #glsl #shader #pattern #fluiddynamics
Lines and waves. Second video has a strong 3D effect.
#generativeart #webgl #glsl #lines #fluidart #simulation #opticalillusion
Some shots of the first blooms on my passionfruit vine! I planted this last summer during that awful week when the wildfires turned the sky orange over San Francisco. Vine has grown like crazy since then, it has completely taken over a 10ft tall trellis – would probably be even bigger if I had a bigger pot for it. A lot of flowers coming in – each flower only lasts a day, but it's producing between 1 and 7 new blooms each day. Since this is growing indoors, I'm using a little paintbrush to pollinate the flowers, hoping to get it to produce fruit.
Fruit situation is a bit complicated.... I planted this from a purple passionfruit I bought at the grocery store, and I'm only now realizing how dumb that was since I don't know exactly what species it is. Supposedly the purple passionfruit vines are self-fertile, but so far I'm not having much luck. Could be that the plant isn't ready to fruit, but I'm worried it may be some type of hybrid, may even be completely sterile (though it does produce a lot of pollen). So yeah... please learn from my mistakes. I'm sorting it out over here though, have a few hot tips about some vines in the area that I can potentially cross with, it's gonna be interesting to see what works!
#passionfruit #passionflower #passiflora
More fluid patterns – thinking about printing some variation of the first pattern on fabric.
#pattern #fluidart #suminagashi #marbling #webgl #glsl #creativecoding #generativeart
Outtakes while developing a suminagashi simulator: working on a model for how each new drop of ink distorts the current image. This early version was pretty glitchy, but the movement of the rings leaves behind lots of nice texture.
#fluidart #suminagashi #marbling #glitch #webgl #glsl #generativeart #creativecoding
Tiling fluid simulations, would be fun to explore non-grid tilings as well.
#generativeart #fluidart #pattern #webgl #glsl #computationaldesign #marbling #suminagashi
Mixing together blobs of digital paint. Starting seeing a nice mix of large and small-scale patterns emerging from the fluid sim, so I started recording. This version of the code tends to form little hooked structures that point up and to the right – a bug probably, but I like the look of the end result.
Having some fun with color here, found that picking colors at random tended to work pretty well (surprised by this). I do have some control over encouraging a dominant color as I'm stirring up the simulation with my mouse, but trying not to overthink it and just see what happens.
#creativecoding #generativeart #computationadesign #abstractart #marbling #fluidsimulation #suminagashi #webgl #glsl #simulation
Stumbled upon this diffusive, watercolor behavior while working on the marbling simulation. Would be interesting to go for something like chromatography next — where various pigments in the ink diffuse at different rates, separating into waves of color.
All these little detours make getting from A to B take a lot longer, but feels good to have the space to keep pulling on these threads.
#fluidart #creativecoding #generativeart #computationaldesign #diffusion #webgl #glsl #chromatography #watercolor #shader
Some (not simulated) suminagashi I’ve been working on lately. Second image shows the ink floating on water before pulling a print.
Hoping to expand the marbling simulator to generate these types of forms, currently it works for something like the European or Turkish traditions of marbling that float paint on a viscous media or gel. In many forms of suminagashi, the ink is floated on plain water, and tends to move in more turbulent ways due to movements of the surrounding air (often, little blowing tools are used).
The fluid simulations I’ve been working on can capture these turbulent behaviors, but it’s really tricky to stretch the ink so far and still maintain the sharp boundaries between the light and dark bands (in simulation, that is — in real life it’s no problem). Going to start testing some new ideas today🤞
I definitely recommend trying out suminagashi — it’s really easy to get started and super relaxing, the process is extremely beautiful. All you need are two paint brushes (doesn’t matter what kind), some dish soap, ink (something like a calligraphy ink, you can pick up a bottle at a local art store), and paper (so far I’m liking newsprint, it’s cheap and really absorbent, they sell pads of it at the art store, but even printer paper will work). I fill a plastic storage bin with water and use that as a tray. There are tons of videos on YouTube explaining the process.
#suminagashi #marbling #fluidart #fluidpainting
First results from a paper marbling simulation I’m building. This is a simulation of a traditional “peacock” marbling pattern, typically made by dropping paint on water and dragging a series of fine-toothed combs through it.
For now I’m not using physics to generate this, it’s all done through a series of closed-form transformations (from the paper “mathematical marbling”). Thinking about how to add an underlying fluid simulation to help breathe a little more life into it — I think this should be compatible with the sim work I was doing earlier this year.
#papermarbling #marbling #suminagashi #ebru #fluids #physics #simulation #generativeart #creativecoding #webgl #glsl
Working through some post processing steps for the calendar engraving. After sanding, I melted black dial wax into the relief to make the markings pop, but some areas were a bit too shallow to receive the wax. Going to give it another shot on the reverse side to see if I can get a better result — might try using a tiny endmill instead of an engraving bit, hopefully cutting a bit deeper this time. I’m thinking that two passes could also help reduce the burrs on some of the inside corners that sanding didn’t remove.
Taking a break for now though, my hands are beat up from all the sanding!
Third shot shows a detail of the engraving — counting 365.25 days in a year by adding the extra quarter day to February. Excited for the final product, getting close now.
#horology #orrery
Second and third pulls of the spent ink left in the tray after doing a suminagashi print. Really like the little bubbles that form (maybe caused by the detergent?) and want to think more about how to add something like this to my fluid sims. Similar bubbles/cells form in soap films as they mix, feels like this would add a lot to the overall effect.
#suminagashi #marbling
Latest round of blooms! Couldn’t fit the entire “lemon drop” flower spike in a landscape shot but I’ll post it to a story.
#orchid #oncidium #miltoniopsis #dancingladyorchid #livingwall
The earth has gone around the sun THREE TIMES since I started this project! Though it’s hard to tell from these images (first one taken yesterday, second one taken three years ago), I’ve redesigned everything from scratch and learned a ton in the process. I’m hoping things finally come together as planned this go-around.
#orrery #horology
Made a tool to measure the distance between gears and scribe the result into metal (with the pointed ends). This way I can test fit the meshing of the gears before I drill the final holes to mount them in place.
I’ve run into a lot of trouble with poorly meshing gears in the past because I trusted the measurements from my CAD model, but any error in the gear geometry will cause excess backlash in the system or (worst case) gears too close together will bind up. After cutting most of this project on a CNC, this final fit is done by hand to account for any error in the machining process.
Copied this design from @clickspring1 (look up “pinion head depthing tool”). My version is pretty quick and dirty using some laser cut acrylic and off the shelf parts (including a vented screw with a hole drilled though it). All I had to do was turn some 1/8” rods to a point. Took some measurements and it’s surprisingly accurate (think the main source of error here is going to be my ability to center punch and drill in the correct spot), but hope to machine this tool for real at some point when I have the time.
#orrery #horology #clockmaking #toolmaking
Looking for some tips on how to do the final finish for these brass parts. Current plan is to sand to 1000 grit, throw in the tumble polisher with some detergent (Dawn) and steel shot for a few days (going for more of a burnished look rather than a mirror finish), then polish and seal with Renaissance Wax. Seems like I may need an extra cleaning step before applying the wax? Maybe with some kind of weak acid or a solvent like mineral spirits? Should I lacquer or stick with the wax coat? If anyone has suggestions I’d love to hear them!
Been tough to find time to make it to the shop recently, but almost ready to do the first test fits!
#horology #orrery #clockmaking #brass
Cutting parts from 3/16” brass stock. Had a false start on this one because I forgot to compensate for the radius of the edge finder, didn’t realize til I started center drilling, which is why there are a bunch of random holes on the left side of the material (first image). Hopefully I can still use the spaces in between the holes to make some small parts later. Being human sucks sometimes!
First attempt at cutting out the gear teeth with a tiny 1/32” diameter endmill was also unsuccessful (first photo), but figured out the right speeds and feeds on the second attempt (last three images). Broke two tools in the learning process unfortunately, but that’s how it goes sometimes.
Next up is cutting the bulk of the parts from a 12”x4” sheet of 1/8” brass. Then a lot of polishing and fitting and should be nearly there. This is version 2 of the orrery design, learned a lot since v1, hopefully this one comes together better — lot of moving parts. Will be posting all the build plans when it’s done!
#orrery #horology #cnc #machining
Starting to see some reblooms on the hanging garden! My favorite is the yellow one — Miltonidium Pacific Paragon “Honey Butter” — I got it for a few bucks off the bargain bin last year. Didn’t have any flowers when I got it, but it’s bloomed three times since then, each one bigger than the last. Still hoping for even bigger blooms next year as it becomes better adjusted to living in my apartment.
I’ve updated my @instructables post about these vertical planters — added some things I’ve learned about growing orchids over the past year and some changes I’ve made to how the plants are mounted: https://www.instructables.com/Vertical-Orchid-Planter/
#orchids #oncidium #diy #livingwall #verticalgarden
Simplifying my design last night — removing set screws and replacing them with press fits, generally trying to reduce the number of parts that need to be machined.
Going to try 3D printing a fixture to orient one of these parts at an angle under the drill press. That way, I can drill an angled hole that (eventually) holds the earth at the correct tilt. Anyone have any luck with 3D printed fixturing? Actually seems like a really good use case, I’m excited to try it!
#orrery #horology #fusion360 #cad #3dmodeling
Added a simple model of erosion into the fluid sim. The nice thing about this is I no longer need to add a “reset” button to the app. Trying to keep the ui minimal/non-existent here so it doesn’t distract from the visuals.
Trying out some new things with the colors too. Still feels a bit too monotone, so looking at my options for adding some warm tones into the highlights, or differentiating the cyan from the background a bit more.
#fluid #erosion #computationalfluiddynamics #physics #webgl #creativecoding #generativeart #computationaldesign #simulation #shader
White stripe in there is a bug but i like the way it highlights a path through the flow.
Had so many ideas about optimizations for this sim and none of them are working out for me at the moment. This version is lower res than I was hoping, but seems to run reasonably well at 60fps on my laptop - without spinning up the fan like it’s about to launch into space.
#computationalfluiddynamics #fluid #suminagashi #simulation #physics #webgl #creativecoding #generativeart #windtunnel #computationaldesign
Vortex street spontaneously forming behind an obstacle. This sim has some math issues that cause the excess turbulence, but I liked the look of the final result. Still working on the code, trying to get it right.
#fluid #computationalfluiddynamics #simulation #physics #turbulence #flow #webgl #creativecoding #generativeart
Symmetry breaking - a tiny nudge throws the whole system out of equilibrium.
#fluid #turbulence #physics #equilibrium #simulation #webgl
Still searching for interesting regions of parameter space. When one of the films is thick, these vertical bands become very prominent in the image, and there are some nice view-angle dependent effects on the vertical axis.
#thinfilm #interference #light #iridescence #rainbow #physics #creativecoding #generativeart
Been following the #suminagashi tag for a bit now, amazing marbling work on there! Thinking about how paper marbling could be augmented through digital tools - obviously it would be nice to edit colors after the fact and have an “undo” button - but a digital marbling interface could also feature novel brushes and combs that are non physical, generate perfectly tiling patterns, or enable new color palettes (like the soap film stuff I’ve been experimenting with) that do not transfer to paper in real life. Have some ideas I want to try out in the next few weeks, so we’ll see how it goes!
#fluid #marbling #papermarbling #simulation #fluiddynamics #creativecoding #generativeart
More double thin film experiments. This one is two films of identical thickness with the separation between them varying from no separation to a few hundred nanometers. With no separation, the diagonal bands resemble the patterns of a standard single layer soap film (second pic), but as the separation increases, the bands appear to rotate slightly and exhibit this cool modulation effect.
#thinfilm #interference #light #soapfilm #rainbow #physics #simulation #iridescent #creativecoding #generativeart
Interpolating through parameter space. This was generated by modeling a thick film on top of a much thinner film and reflecting white light into the surfaces as the separation between the two layers is modulated by about 200nm. I’m really interested to see how adding layers that absorb light could shift the available colors dramatically.
#thinfilm #interference #light #iridescent #physics #rainbow #creativecoding #generativeart
Testing out some more thin film interference models to see what kinds of color palettes can be generated this way. Thinking about creating a little interactive webgl tool for this as currently I’m running a really slow python script. Feels like I’m fumbling around in the dark with this current tool, just plugging in random numbers, waiting, and seeing what comes out - I want to build something that will allow me interactively explore parameters and see the transitions between states.
#thinfilminterference #interference #thinfilm #light #physics #rainbow #colorpalette #iridescent
Just added some new code to origamisimulator.org to better support curved crease origami. New changes were written by Prof @mitani.jun and grad student Sasaki Kosuke from their recent paper “Simple Simulation of Curved Folds Based on Ruling-aware Triangulation.”
In curved crease origami, the paper tends to bend significantly in the regions between creases, this new code allows the paper bending to be modeled more accurately in the origami simulator. In addition to these changes, a number of Prof Mitani’s curved crease patterns are now in the examples folder of the app - some of my favorites are shown here. Check out @mitani.jun to see these designs folded in real life, they are stunning!
#origami #curvedcrease #physics #simulation #threejs #webgl
Another @foldsome design folding in the origami sim. Just added a few more of these pleated tension folds to the examples menu Examples>Pleating at origamisimulator.org
#origami #boxpleats #origamitessellation #webgl #threejs #simulation #physics
We are in print in the New York Times today! Also in this week’s issue of The Economist! You would not believe how hard it is to find a real paper newspaper these days, had to go way out to the ‘burbs :) Congrats to @letterlocking and the rest of the team!
#letterlocking #signedsealedundelivered #unlockinghistory
Check out these box pleated crease patterns sent to me by origami artist / computer scientist @foldsome - kind of unbelievable that it’s possible to create these curved forms using only creases along a square grid! Surprisingly, these work pretty well in the origami simulator if you fold them partially and let them relax to an equilibrium. I’ve just added these examples to origamisimulator.org (find them under Examples>Pleating).
#origami #origamitessellation #boxpleats #pleating #simulation #physics #webgl #threejs #organicforms #creativecoding
Intricate diamond-shaped #letterlocking example from the Brienne trunk. Written by a prisoner of war in France to his father in 1689, explaining that his captors were treating him well. Unfortunately, it was never delivered to its intended recipient. This letter has no signs of adhesives used to secure it shut, and has been opened and refolded in the years since it was sent. This video shows a rendering of a CT scan of the letterpacket, with some ink visible on the outer layers. Check out the letterlocking YouTube channel for videos showing how to fold this and many other styles of locked letters - many of these can be sent through the mail with no envelope, it’s fun!
#unlockinghistory #signedsealedundelivered #ctscan #17thcentury #earlymodern #tomography #xray #mail #postalservice #pow #blender3d #3dscan