#thingumbrella — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #thingumbrella, aggregated by home.social.
-
New #ThingUmbrella release(s): Updated the https://thi.ng/geom-io-obj OBJ mesh parser to support stream parsing using async iterables. This allows direct piping
fetch()responses to the parser.const response = await fetch(MODEL_URL);
const objModel = await parseOBJFromStream(response.body);Also polished and published a related small example project for it (incl. arcball camera controller, which had an update too):
Demo (Click & drag to rotate view, touchpad/mousewheel to zoom):
https://demo.thi.ng/umbrella/webgl-obj/Source:
https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/webgl-obj/src/index.tsAlternatively to stream parsing, there's also a generator/co-routine based version. This can be used standalone or together with https://thi.ng/fibers to better control the time slicing behavior when parsing large model files (tens or hundreds of MB) and so gives fine-grained control to avoid blocking the main UI thread:
import { timeSlice } from "@thi.ng/fibers";
const response = await fetch(MODEL_URL);
const src = await response.text();
// parse in 10 millisecond time slices
const model = await timeSlice(parseOBJGenerator(src), 10).run().promise();More background info & discussion for those interested:
https://codeberg.org/thi.ng/umbrella/pulls/405#OpenSource #Stream #Mesh #OBJ #WebGL #TypeScript #JavaScript
-
Some weeks ago I got a cheap and fast TTArtisan 50mm/f1.2 prime lens to take better indoor pictures and close ups. Since it's fixed length and manual focus only, it's a very different kind of taking pictures, selecting/framing motifs, and often feels like a throwback to my first camera in the 1980s. I love it!
Since the lens has quite noticeable vignetting, I found it interesting how that effect is showing up as curve in the image waveform...
You can visualize your own images here:
https://demo.thi.ng/umbrella/pixel-waveform/ -
Some weeks ago I got a cheap and fast TTArtisan 50mm/f1.2 prime lens to take better indoor pictures and close ups. Since it's fixed length and manual focus only, it's a very different kind of taking pictures, selecting/framing motifs, and often feels like a throwback to my first camera in the 1980s. I love it!
Since the lens has quite noticeable vignetting, I found it interesting how that effect is showing up as curve in the image waveform...
You can visualize your own images here:
https://demo.thi.ng/umbrella/pixel-waveform/ -
Three years ago, I was busy finishing Marblemania, an endless algorithmic/generative realtime animation piece inspired by marbling, using softbody physics (but no actual fluid sim) and with thousands of variations and stylistic options...
This video shows stills of a small sampling of these variations.
More variations here (and in the #Marblemania hashtag):
https://mastodon.thi.ng/@toxi/110688682293173253
https://mastodon.thi.ng/@toxi/110667570347783712#TextureTuesday #Marblemania #AlgorithmicArt #GenerativeArt #Art #Marbling #Animation #ThingUmbrella
-
Color Therapy. Noisy evolution.
Two snapshots of my piece C-SCAPE, 2022, a multi-organism 1.5D cellular automata simulation. Patterns of symbiosis and annihilation.
Made with https://thi.ng/cellular
#CSCAPE #CellularAutomata #GenerativeArt #AlgorithmicArt #EvolutionaryArt #Abstract #Color #Texture #ThingUmbrella #NoAI
-
#ReleaseFriday Triggered by a recent feature proposal[1], I went ahead and polished & published a closely related, already work-in-progress (but still private) feature in https://thi.ng/rdom to support something I call "bare lists"[2]. I've started working on this for another project last year, but needed to do more testing (which I think have sufficiently done by now).
These "bare" lists are managed reactive control components which attach items directly to the list's parent DOM element instead of first creating a wrapper/container element for the items and so avoid introducing additional nesting.
There're many use cases where this additional nesting was a real problem with the earlier approach, e.g. in containers with CSS grid or flex layout, tables, or generally situations where we want to have static & reactive list items as true siblings...
The new version of thi.ng/rdom is technically a breaking change (sorry!), but the actual changes required (for you) are tiny and purely limited to the
$list()and$klist()component function calls, which are now accepting a parameter object instead of positional args for the different possible behaviors. Of course, lists with item wrapper elements can still be created too, just as before (but via new args).I've updated & tested all existing examples impacted by this change and also created a new fully commented example project (example #187) to illustrate these "bare" lists in situ (check the DOM inspector to see the shallow structure and how updates are applied):
Demo:
https://demo.thi.ng/umbrella/rdom-bare-lists/Source code:
https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/rdom-bare-lists/src/index.ts[1] github.com/thi-ng/umbrella/discussions/562
[2] My use of "list" here is generic, not limited to<ul>or<ol>...#ThingUmbrella #Reactive #UI #OpenSource #TypeScript #JavaScript #WebDev
-
#ReleaseFriday Triggered by a recent feature proposal[1], I went ahead and polished & published a closely related, already work-in-progress (but still private) feature in https://thi.ng/rdom to support something I call "bare lists"[2]. I've started working on this for another project last year, but needed to do more testing (which I think have sufficiently done by now).
These "bare" lists are managed reactive control components which attach items directly to the list's parent DOM element instead of first creating a wrapper/container element for the items and so avoid introducing additional nesting.
There're many use cases where this additional nesting was a real problem with the earlier approach, e.g. in containers with CSS grid or flex layout, tables, or generally situations where we want to have static & reactive list items as true siblings...
The new version of thi.ng/rdom is technically a breaking change (sorry!), but the actual changes required (for you) are tiny and purely limited to the
$list()and$klist()component function calls, which are now accepting a parameter object instead of positional args for the different possible behaviors. Of course, lists with item wrapper elements can still be created too, just as before (but via new args).I've updated & tested all existing examples impacted by this change and also created a new fully commented example project (example #187) to illustrate these "bare" lists in situ (check the DOM inspector to see the shallow structure and how updates are applied):
Demo:
https://demo.thi.ng/umbrella/rdom-bare-lists/Source code:
https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/rdom-bare-lists/src/index.ts[1] github.com/thi-ng/umbrella/discussions/562
[2] My use of "list" here is generic, not limited to<ul>or<ol>...#ThingUmbrella #Reactive #UI #OpenSource #TypeScript #JavaScript #WebDev
-
Latest harvest of "Light Streaks" — generative photography (see start of thread for context and an explanation of the technique...)
Again, all of these variations are still from the exact same system and choice of five randomly chosen functions. The only variable between them is the initial random seed number. Exposure here is between 5-10 billion iterations... I'm amazed by just how varied the outcomes are, still regularly encountering directions I haven't seen before...
#Monochrome #Light #Simulation #LongExposure #Fractal #IFS #GenerativePhotography #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
-
Latest harvest of "Light Streaks" — generative photography (see start of thread for context and an explanation of the technique...)
Again, all of these variations are still from the exact same system and choice of five randomly chosen functions. The only variable between them is the initial random seed number. Exposure here is between 5-10 billion iterations... I'm amazed by just how varied the outcomes are, still regularly encountering directions I haven't seen before...
#Monochrome #Light #Simulation #LongExposure #Fractal #IFS #GenerativePhotography #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
-
More variations of "Light Streaks" — generative photography... A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems). See start of thread for context and an explanation of the technique...
All of the variations in this post and the following ones are from the exact same system and choice of functions. The only variable here is the random seed number.
#Monochrome #Light #Simulation #LongExposure #Fractal #IFS #GenerativePhotography #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
-
More variations of "Light Streaks" — generative photography... A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems). See start of thread for context and an explanation of the technique...
All of the variations in this post and the following ones are from the exact same system and choice of functions. The only variable here is the random seed number.
#Monochrome #Light #Simulation #LongExposure #Fractal #IFS #GenerativePhotography #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
-
More variations of "Light Streaks" — generative photography... A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems). See start of thread for context and an explanation of the technique...
All of the variations in this post and the following ones are from the exact same system and choice of functions. The only variable here is the random seed number. There seem to be several families of outcomes produced, in this post a selection of textures & sparklers...
The sub-atomic fabric of space time?
#Monochrome #Light #Simulation #LongExposure #Fractal #IFS #GenerativePhotography #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
-
More variations of "Light Streaks" — generative photography... A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems). See start of thread for context and an explanation of the technique...
All of the variations in this post and the following ones are from the exact same system and choice of functions. The only variable here is the random seed number. There seem to be several families of outcomes produced, in this post a selection of textures & sparklers...
The sub-atomic fabric of space time?
#Monochrome #Light #Simulation #LongExposure #Fractal #IFS #GenerativePhotography #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
-
More variations of "Light Streaks" — generative photography... A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems). See start of thread for context and an explanation of the technique...
All of the variations in this post and the following ones are from the exact same system and choice of functions. The only variable here is the random seed number. There seem to be several families of outcomes produced, in this post a selection of "auroras"...
Each image is the result of around 2-4 billion iterations of light capture. Original resolution is 5120x5120 pixels. I will post a fullsize image later...
#Monochrome #Light #Simulation #LongExposure #Fractal #IFS #GenerativePhotography #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
-
More variations of "Light Streaks" — generative photography... A small selection of long-exposures of randomly generated IFS (aka Iterated Function Systems). See start of thread for context and an explanation of the technique...
All of the variations in this post and the following ones are from the exact same system and choice of functions. The only variable here is the random seed number. There seem to be several families of outcomes produced, in this post a selection of "auroras"...
Each image is the result of around 2-4 billion iterations of light capture. Original resolution is 5120x5120 pixels. I will post a fullsize image later...
#Monochrome #Light #Simulation #LongExposure #Fractal #IFS #GenerativePhotography #GenerativeArt #AlgorithmicArt #ThingUmbrella #TypeScript
-
Simulated Cyanotype Chemigrams...
Lately I've been revisiting my old fluid sim toolset which started out as part of my toxiclibs Java libraries (2007/8, based on Jos Stam's research, also previously mentioned in this thread[1]), then ported & expanded it for #Houdini in 2016, then ported again to TypeScript/GLSL (via https://thi.ng/shader-ast in 2019) and been messing around with it on & off ever since... Fluidsims are just so mesmerizing to work/play with and can be taken into so many interesting directions!
I also always loved the watercolor cover designs by Gabriella Holmström for The Memoir[2] series on Hypnus Records and wanted to create similar abstract structures/constellation, albeit with simulated fluids... Stills/snapshots, but showing traces of their creation process.
Attached are a few variations of this system (already collected again hundreds which I have to still curate). Each piece is starting with just 4 drops in always the exact same locations (diamond-shaped layout in the center), but each variation is evolving differently due to randomized concentrations and simulation coefficients, therefore resulting in many different diffusion behaviors and outcomes... Some of the pieces which exhibit more viscous fingering[3] almost remind me of Hokusai's Great Wave[4]...
I will be offering sets of unique prints/cards of these via my shop soon. Also still researching feasibility of integrating interactively created variations in the shop (also for other artworks/collections of mine).
[1] https://mastodon.thi.ng/@toxi/115802423411074211
[2] https://www.youtube.com/@Hypnusrecords/videos, for example: https://www.youtube.com/watch?v=efdfYJODiuA
[3] https://en.wikipedia.org/wiki/Saffman%E2%80%93Taylor_instability
[4] https://en.wikipedia.org/wiki/The_Great_Wave_off_Kanagawa#FluidSim #Simulation #Art #GenerativeArt #AbstractArt #NoAI #ThingUmbrella #TypeScript #ShaderAST
-
Simulated Cyanotype Chemigrams...
Lately I've been revisiting my old fluid sim toolset which started out as part of my toxiclibs Java libraries (2007/8, based on Jos Stam's research, also previously mentioned in this thread[1]), then ported & expanded it for #Houdini in 2016, then ported again to TypeScript/GLSL (via https://thi.ng/shader-ast in 2019) and been messing around with it on & off ever since... Fluidsims are just so mesmerizing to work/play with and can be taken into so many interesting directions!
I also always loved the watercolor cover designs by Gabriella Holmström for The Memoir[2] series on Hypnus Records and wanted to create similar abstract structures/constellation, albeit with simulated fluids... Stills/snapshots, but showing traces of their creation process.
Attached are a few variations of this system (already collected again hundreds which I have to still curate). Each piece is starting with just 4 drops in always the exact same locations (diamond-shaped layout in the center), but each variation is evolving differently due to randomized concentrations and simulation coefficients, therefore resulting in many different diffusion behaviors and outcomes... Some of the pieces which exhibit more viscous fingering[3] almost remind me of Hokusai's Great Wave[4]...
I will be offering sets of unique prints/cards of these via my shop soon. Also still researching feasibility of integrating interactively created variations in the shop (also for other artworks/collections of mine).
[1] https://mastodon.thi.ng/@toxi/115802423411074211
[2] https://www.youtube.com/@Hypnusrecords/videos, for example: https://www.youtube.com/watch?v=efdfYJODiuA
[3] https://en.wikipedia.org/wiki/Saffman%E2%80%93Taylor_instability
[4] https://en.wikipedia.org/wiki/The_Great_Wave_off_Kanagawa#FluidSim #Simulation #Art #GenerativeArt #AbstractArt #NoAI #ThingUmbrella #TypeScript #ShaderAST
-
Simulated Cyanotype Chemigrams...
Lately I've been revisiting my old fluid sim toolset which started out as part of my toxiclibs Java libraries (2007/8, based on Jos Stam's research, also previously mentioned in this thread[1]), then ported & expanded it for #Houdini in 2016, then ported again to TypeScript/GLSL (via https://thi.ng/shader-ast in 2019) and been messing around with it on & off ever since... Fluidsims are just so mesmerizing to work/play with and can be taken into so many interesting directions!
I also always loved the watercolor cover designs by Gabriella Holmström for The Memoir[2] series on Hypnus Records and wanted to create similar abstract structures/constellation, albeit with simulated fluids... Stills/snapshots, but showing traces of their creation process.
Attached are a few variations of this system (already collected again hundreds which I have to still curate). Each piece is starting with just 4 drops in always the exact same locations (diamond-shaped layout in the center), but each variation is evolving differently due to randomized concentrations and simulation coefficients, therefore resulting in many different diffusion behaviors and outcomes... Some of the pieces which exhibit more viscous fingering[3] almost remind me of Hokusai's Great Wave[4]...
I will be offering sets of unique prints/cards of these via my shop soon. Also still researching feasibility of integrating interactively created variations in the shop (also for other artworks/collections of mine).
[1] https://mastodon.thi.ng/@toxi/115802423411074211
[2] https://www.youtube.com/@Hypnusrecords/videos, for example: https://www.youtube.com/watch?v=efdfYJODiuA
[3] https://en.wikipedia.org/wiki/Saffman%E2%80%93Taylor_instability
[4] https://en.wikipedia.org/wiki/The_Great_Wave_off_Kanagawa#FluidSim #Simulation #Art #GenerativeArt #AbstractArt #NoAI #ThingUmbrella #TypeScript #ShaderAST
-
Simulated Cyanotype Chemigrams...
Lately I've been revisiting my old fluid sim toolset which started out as part of my toxiclibs Java libraries (2007/8, based on Jos Stam's research, also previously mentioned in this thread[1]), then ported & expanded it for #Houdini in 2016, then ported again to TypeScript/GLSL (via https://thi.ng/shader-ast in 2019) and been messing around with it on & off ever since... Fluidsims are just so mesmerizing to work/play with and can be taken into so many interesting directions!
I also always loved the watercolor cover designs by Gabriella Holmström for The Memoir[2] series on Hypnus Records and wanted to create similar abstract structures/constellation, albeit with simulated fluids... Stills/snapshots, but showing traces of their creation process.
Attached are a few variations of this system (already collected again hundreds which I have to still curate). Each piece is starting with just 4 drops in always the exact same locations (diamond-shaped layout in the center), but each variation is evolving differently due to randomized concentrations and simulation coefficients, therefore resulting in many different diffusion behaviors and outcomes... Some of the pieces which exhibit more viscous fingering[3] almost remind me of Hokusai's Great Wave[4]...
I will be offering sets of unique prints/cards of these via my shop soon. Also still researching feasibility of integrating interactively created variations in the shop (also for other artworks/collections of mine).
[1] https://mastodon.thi.ng/@toxi/115802423411074211
[2] https://www.youtube.com/@Hypnusrecords/videos, for example: https://www.youtube.com/watch?v=efdfYJODiuA
[3] https://en.wikipedia.org/wiki/Saffman%E2%80%93Taylor_instability
[4] https://en.wikipedia.org/wiki/The_Great_Wave_off_Kanagawa#FluidSim #Simulation #Art #GenerativeArt #AbstractArt #NoAI #ThingUmbrella #TypeScript #ShaderAST
-
Simulated Cyanotype Chemigrams...
Lately I've been revisiting my old fluid sim toolset which started out as part of my toxiclibs Java libraries (2007/8, based on Jos Stam's research, also previously mentioned in this thread[1]), then ported & expanded it for #Houdini in 2016, then ported again to TypeScript/GLSL (via https://thi.ng/shader-ast in 2019) and been messing around with it on & off ever since... Fluidsims are just so mesmerizing to work/play with and can be taken into so many interesting directions!
I also always loved the watercolor cover designs by Gabriella Holmström for The Memoir[2] series on Hypnus Records and wanted to create similar abstract structures/constellation, albeit with simulated fluids... Stills/snapshots, but showing traces of their creation process.
Attached are a few variations of this system (already collected again hundreds which I have to still curate). Each piece is starting with just 4 drops in always the exact same locations (diamond-shaped layout in the center), but each variation is evolving differently due to randomized concentrations and simulation coefficients, therefore resulting in many different diffusion behaviors and outcomes... Some of the pieces which exhibit more viscous fingering[3] almost remind me of Hokusai's Great Wave[4]...
I will be offering sets of unique prints/cards of these via my shop soon. Also still researching feasibility of integrating interactively created variations in the shop (also for other artworks/collections of mine).
[1] https://mastodon.thi.ng/@toxi/115802423411074211
[2] https://www.youtube.com/@Hypnusrecords/videos, for example: https://www.youtube.com/watch?v=efdfYJODiuA
[3] https://en.wikipedia.org/wiki/Saffman%E2%80%93Taylor_instability
[4] https://en.wikipedia.org/wiki/The_Great_Wave_off_Kanagawa#FluidSim #Simulation #Art #GenerativeArt #AbstractArt #NoAI #ThingUmbrella #TypeScript #ShaderAST
-
Also new in #ThingUmbrella: The new https://thi.ng/text-format-image package provides conversion/formatting for bitmap output for CLI/Terminal apps, currently only via the widely supported iTerm2 format (see readme for details). Supports JPG/PNG (possibly others, depending on terminal used) as well as https://thi.ng/pixel pixel buffers (e.g. for dynamically generated images/visualizations)
Ps. The above relies on extended ANSI sequences to submit bitmap data to the terminal. If you're after actual text/character-based image conversion, you can alternatively use the functions provided in https://thi.ng/text-canvas:
https://github.com/thi-ng/umbrella/tree/develop/packages/text-canvas#image-functions
#ReleaseFriday #TextMode #Image #CLI #TypeScript #OpenSource
-
Also new in #ThingUmbrella: The new https://thi.ng/text-format-image package provides conversion/formatting for bitmap output for CLI/Terminal apps, currently only via the widely supported iTerm2 format (see readme for details). Supports JPG/PNG (possibly others, depending on terminal used) as well as https://thi.ng/pixel pixel buffers (e.g. for dynamically generated images/visualizations)
Ps. The above relies on extended ANSI sequences to submit bitmap data to the terminal. If you're after actual text/character-based image conversion, you can alternatively use the functions provided in https://thi.ng/text-canvas:
https://github.com/thi-ng/umbrella/tree/develop/packages/text-canvas#image-functions
#ReleaseFriday #TextMode #Image #CLI #TypeScript #OpenSource
-
Welcome to #TextModeTuesday! For the next few weeks I'll be posting some projects & experiments related to this just spontaneously made up hashtag. If you've got something related to interesting text-based art/experiments, patterns, ASCII-art, ANSI-art etc. please share — the more, the merrier...
To start with, here's an experiment from a few years ago to demonstrate some capabilities of https://thi.ng/text-canvas and https://thi.ng/shader-ast to create a raymarching renderer outputting images in text mode (with customizable character sets to represent luminance).
Demo:
https://demo.thi.ng/umbrella/ascii-raymarch/Commented source code:
https://github.com/thi-ng/umbrella/blob/develop/examples/ascii-raymarch/Hotkeys:
- c = toggle color on/off
- t = toggle theme switch
- space = toggle updateWebGL version of the same scene (using an almost identical TypeScript shader source, only here transpiled to GLSL and using slightly different colors):
https://demo.thi.ng/umbrella/shader-ast-raymarch/#TextModeTuesday #ASCIIArt #ThingUmbrella #TypeScript #ShaderAST #Raymarching
-
Welcome to #TextModeTuesday! For the next few weeks I'll be posting some projects & experiments related to this just spontaneously made up hashtag. If you've got something related to interesting text-based art/experiments, patterns, ASCII-art, ANSI-art etc. please share — the more, the merrier...
To start with, here's an experiment from a few years ago to demonstrate some capabilities of https://thi.ng/text-canvas and https://thi.ng/shader-ast to create a raymarching renderer outputting images in text mode (with customizable character sets to represent luminance).
Demo:
https://demo.thi.ng/umbrella/ascii-raymarch/Commented source code:
https://github.com/thi-ng/umbrella/blob/develop/examples/ascii-raymarch/Hotkeys:
- c = toggle color on/off
- t = toggle theme switch
- space = toggle updateWebGL version of the same scene (using an almost identical TypeScript shader source, only here transpiled to GLSL and using slightly different colors):
https://demo.thi.ng/umbrella/shader-ast-raymarch/#TextModeTuesday #ASCIIArt #ThingUmbrella #TypeScript #ShaderAST #Raymarching
-
Welcome to #TextModeTuesday! For the next few weeks I'll be posting some projects & experiments related to this just spontaneously made up hashtag. If you've got something related to interesting text-based art/experiments, patterns, ASCII-art, ANSI-art etc. please share — the more, the merrier...
To start with, here's an experiment from a few years ago to demonstrate some capabilities of https://thi.ng/text-canvas and https://thi.ng/shader-ast to create a raymarching renderer outputting images in text mode (with customizable character sets to represent luminance).
Demo:
https://demo.thi.ng/umbrella/ascii-raymarch/Commented source code:
https://github.com/thi-ng/umbrella/blob/develop/examples/ascii-raymarch/Hotkeys:
- c = toggle color on/off
- t = toggle theme switch
- space = toggle updateWebGL version of the same scene (using an almost identical TypeScript shader source, only here transpiled to GLSL and using slightly different colors):
https://demo.thi.ng/umbrella/shader-ast-raymarch/#TextModeTuesday #ASCIIArt #ThingUmbrella #TypeScript #ShaderAST #Raymarching
-
Welcome to #TextModeTuesday! For the next few weeks I'll be posting some projects & experiments related to this just spontaneously made up hashtag. If you've got something related to interesting text-based art/experiments, patterns, ASCII-art, ANSI-art etc. please share — the more, the merrier...
To start with, here's an experiment from a few years ago to demonstrate some capabilities of https://thi.ng/text-canvas and https://thi.ng/shader-ast to create a raymarching renderer outputting images in text mode (with customizable character sets to represent luminance).
Demo:
https://demo.thi.ng/umbrella/ascii-raymarch/Commented source code:
https://github.com/thi-ng/umbrella/blob/develop/examples/ascii-raymarch/Hotkeys:
- c = toggle color on/off
- t = toggle theme switch
- space = toggle updateWebGL version of the same scene (using an almost identical TypeScript shader source, only here transpiled to GLSL and using slightly different colors):
https://demo.thi.ng/umbrella/shader-ast-raymarch/#TextModeTuesday #ASCIIArt #ThingUmbrella #TypeScript #ShaderAST #Raymarching
-
Welcome to #TextModeTuesday! For the next few weeks I'll be posting some projects & experiments related to this just spontaneously made up hashtag. If you've got something related to interesting text-based art/experiments, patterns, ASCII-art, ANSI-art etc. please share — the more, the merrier...
To start with, here's an experiment from a few years ago to demonstrate some capabilities of https://thi.ng/text-canvas and https://thi.ng/shader-ast to create a raymarching renderer outputting images in text mode (with customizable character sets to represent luminance).
Demo:
https://demo.thi.ng/umbrella/ascii-raymarch/Commented source code:
https://github.com/thi-ng/umbrella/blob/develop/examples/ascii-raymarch/Hotkeys:
- c = toggle color on/off
- t = toggle theme switch
- space = toggle updateWebGL version of the same scene (using an almost identical TypeScript shader source, only here transpiled to GLSL and using slightly different colors):
https://demo.thi.ng/umbrella/shader-ast-raymarch/#TextModeTuesday #ASCIIArt #ThingUmbrella #TypeScript #ShaderAST #Raymarching
-
A short video of another related old experiment, here showing a few random variations (4-5 secs each) using a low discrepancy sequence to iteratively create Voronoi patterns reminiscent of quasi-crystal lattices...
Made with https://thi.ng/lowdisc and https://thi.ng/geom-voronoi
Demo:
https://demo.thi.ng/umbrella/quasi-lattice/Source code (minimal code, more comments than code):
https://github.com/thi-ng/umbrella/blob/develop/examples/quasi-lattice/src/index.tsPs. Also check out @hamoid's recent Voronoi work (which just made me look for this video 😉)...
#TextureTuesday #ThingUmbrella #LowDiscrepancy #Voronoi #QuasiCrystal #Lattice #Pattern #TypeScript
-
A short video of another related old experiment, here showing a few random variations (4-5 secs each) using a low discrepancy sequence to iteratively create Voronoi patterns reminiscent of quasi-crystal lattices...
Made with https://thi.ng/lowdisc and https://thi.ng/geom-voronoi
Demo:
https://demo.thi.ng/umbrella/quasi-lattice/Source code (minimal code, more comments than code):
https://github.com/thi-ng/umbrella/blob/develop/examples/quasi-lattice/src/index.tsPs. Also check out @hamoid's recent Voronoi work (which just made me look for this video 😉)...
#TextureTuesday #ThingUmbrella #LowDiscrepancy #Voronoi #QuasiCrystal #Lattice #Pattern #TypeScript
-
Aeolian dune simulation (made in 2017) for #MeerMittwoch:
The images show a screenshot of the JavaScript application to create the simulation and some Houdini renders of exported height fields. The sim itself had 5 macro params to control the behavior of the interactive deposit/erosion/transportation process. It supported tileable patterns, customizable seed terrain (images) and ran realtime at ~30fps. The profile (cross-section) visualization was important because the tool was intended to create traction patterns for footwear...
References:
https://en.wikipedia.org/wiki/Aeolian_landform
https://en.wikipedia.org/wiki/Saltation_(geology)
https://en.wikipedia.org/wiki/Barchanhttps://web.archive.org/web/20170809065427/https://wou.edu/las/physci/taylor/g322/baas_2002.pdf
#GenerativeDesign #ComputationalDesign #Dunes #Simulation #Erosion #CellularAutomata #3D #Houdini #JavaScript #ThingUmbrella
-
Aeolian dune simulation (made in 2017) for #MeerMittwoch:
The images show a screenshot of the JavaScript application to create the simulation and some Houdini renders of exported height fields. The sim itself had 5 macro params to control the behavior of the interactive deposit/erosion/transportation process. It supported tileable patterns, customizable seed terrain (images) and ran realtime at ~30fps. The profile (cross-section) visualization was important because the tool was intended to create traction patterns for footwear...
References:
https://en.wikipedia.org/wiki/Aeolian_landform
https://en.wikipedia.org/wiki/Saltation_(geology)
https://en.wikipedia.org/wiki/Barchanhttps://web.archive.org/web/20170809065427/https://wou.edu/las/physci/taylor/g322/baas_2002.pdf
#GenerativeDesign #ComputationalDesign #Dunes #Simulation #Erosion #CellularAutomata #3D #Houdini #JavaScript #ThingUmbrella
-
An update: After several failed publish attempts, more searching, (re)reading and experimenting for the past 4 hours, I've now figured out a solution using #NPM granular access tokens... But to summarize & document the issues, in case someone else encounters the same pain points:
1) There seems to be a new incompatibility between the NPM auth changes and running `yarn npm publish --access public`. After working successfully for the past 8 years, that command now gives me 404, even after re-authenticating. It just doesn't seem to pick up the auth token configured in `$HOME/.npmrc`. As result I've now switched all my publish commands to just be `npm publish --access public`. That seems to work!
2) The wording about the 50 package limit on the NPM auth token docs is very confusing: "Each token can access up to 50 organizations, and up to either 50 packages, 50 scopes, or a combination of 50 packages and scopes." As written, this reads like these limits are omnipresent for each token, but in fact one can also create tokens which can access ALL packages under your control. The 50 limit only seems to apply when creating token which is only allowed a subset...
Summa summarum, it is #ThingUmbrella #ReleaseFriday after all (updates to https://thi.ng/geom, bug fixes for https://thi.ng/args) and I can now proceed to enjoy the start of the Glühwein season on this cold Friday night... 🎉
-
An update: After several failed publish attempts, more searching, (re)reading and experimenting for the past 4 hours, I've now figured out a solution using #NPM granular access tokens... But to summarize & document the issues, in case someone else encounters the same pain points:
1) There seems to be a new incompatibility between the NPM auth changes and running `yarn npm publish --access public`. After working successfully for the past 8 years, that command now gives me 404, even after re-authenticating. It just doesn't seem to pick up the auth token configured in `$HOME/.npmrc`. As result I've now switched all my publish commands to just be `npm publish --access public`. That seems to work!
2) The wording about the 50 package limit on the NPM auth token docs is very confusing: "Each token can access up to 50 organizations, and up to either 50 packages, 50 scopes, or a combination of 50 packages and scopes." As written, this reads like these limits are omnipresent for each token, but in fact one can also create tokens which can access ALL packages under your control. The 50 limit only seems to apply when creating token which is only allowed a subset...
Summa summarum, it is #ThingUmbrella #ReleaseFriday after all (updates to https://thi.ng/geom, bug fixes for https://thi.ng/args) and I can now proceed to enjoy the start of the Glühwein season on this cold Friday night... 🎉
-
(Yet another) 1-minute excerpt of an #Umbra variation, one of my recent algorithmic/generative realtime animation art pieces, constantly evolving and exhibited exclusively on Layer.
Very much love this color theme, especially after ~15 seconds... 🤌
(See above hashtag for other clips)
Made with ❤️ and my opensource https://thi.ng/umbrella tools... #NoAI
#GenerativeArt #AlgrorithmicArt #AbstractArt #Art #Animation #Video
#ThingUmbrella #TypeScript #ShaderAST #Color -
(Yet another) 1-minute excerpt of an #Umbra variation, one of my recent algorithmic/generative realtime animation art pieces, constantly evolving and exhibited exclusively on Layer.
Very much love this color theme, especially after ~15 seconds... 🤌
(See above hashtag for other clips)
Made with ❤️ and my opensource https://thi.ng/umbrella tools... #NoAI
#GenerativeArt #AlgrorithmicArt #AbstractArt #Art #Animation #Video
#ThingUmbrella #TypeScript #ShaderAST #Color -
(Yet another) 1-minute excerpt of an #Umbra variation, one of my recent algorithmic/generative realtime animation art pieces, constantly evolving and exhibited exclusively on Layer.
Very much love this color theme, especially after ~15 seconds... 🤌
(See above hashtag for other clips)
Made with ❤️ and my opensource https://thi.ng/umbrella tools... #NoAI
#GenerativeArt #AlgrorithmicArt #AbstractArt #Art #Animation #Video
#ThingUmbrella #TypeScript #ShaderAST #Color -
(Yet another) 1-minute excerpt of an #Umbra variation, one of my recent algorithmic/generative realtime animation art pieces, constantly evolving and exhibited exclusively on Layer.
Very much love this color theme, especially after ~15 seconds... 🤌
(See above hashtag for other clips)
Made with ❤️ and my opensource https://thi.ng/umbrella tools... #NoAI
#GenerativeArt #AlgrorithmicArt #AbstractArt #Art #Animation #Video
#ThingUmbrella #TypeScript #ShaderAST #Color -
(Yet another) 1-minute excerpt of an #Umbra variation, one of my recent algorithmic/generative realtime animation art pieces, constantly evolving and exhibited exclusively on Layer.
Very much love this color theme, especially after ~15 seconds... 🤌
(See above hashtag for other clips)
Made with ❤️ and my opensource https://thi.ng/umbrella tools... #NoAI
#GenerativeArt #AlgrorithmicArt #AbstractArt #Art #Animation #Video
#ThingUmbrella #TypeScript #ShaderAST #Color -
Another 1-minute excerpt of an #Umbra variation, one of my recent algorithmic/generative realtime animation art pieces, constantly evolving and exhibited exclusively on Layer.
(See above hashtag for other clips)
Made with ❤️ and my opensource https://thi.ng/umbrella tools... #NoAI
#GenerativeArt #AlgrorithmicArt #AbstractArt #Art #Animation #Video
#ThingUmbrella #TypeScript #ShaderAST -
Another 1-minute excerpt of an #Umbra variation, one of my recent algorithmic/generative realtime animation art pieces, constantly evolving and exhibited exclusively on Layer.
(See above hashtag for other clips)
Made with ❤️ and my opensource https://thi.ng/umbrella tools... #NoAI
#GenerativeArt #AlgrorithmicArt #AbstractArt #Art #Animation #Video
#ThingUmbrella #TypeScript #ShaderAST -
Another 1-minute excerpt of an #Umbra variation, one of my recent algorithmic/generative realtime animation art pieces, constantly evolving and exhibited exclusively on Layer.
(See above hashtag for other clips)
Made with ❤️ and my opensource https://thi.ng/umbrella tools... #NoAI
#GenerativeArt #AlgrorithmicArt #AbstractArt #Art #Animation #Video
#ThingUmbrella #TypeScript #ShaderAST -
Another 1-minute excerpt of an #Umbra variation, one of my recent algorithmic/generative realtime animation art pieces, constantly evolving and exhibited exclusively on Layer.
(See above hashtag for other clips)
Made with ❤️ and my opensource https://thi.ng/umbrella tools... #NoAI
#GenerativeArt #AlgrorithmicArt #AbstractArt #Art #Animation #Video
#ThingUmbrella #TypeScript #ShaderAST -
Another 1-minute excerpt of an #Umbra variation, one of my recent algorithmic/generative realtime animation art pieces, constantly evolving and exhibited exclusively on Layer.
(See above hashtag for other clips)
Made with ❤️ and my opensource https://thi.ng/umbrella tools... #NoAI
#GenerativeArt #AlgrorithmicArt #AbstractArt #Art #Animation #Video
#ThingUmbrella #TypeScript #ShaderAST -
Been working on some additions/adjustments for #Umbra, one of my recent algorithmic/generative art pieces, currently shown exclusively on Layer.
Here's a 3 minute segment (of an infinite realtime animation). Give it time to develop/change! Fullscreen playback probably best...
Made with https://thi.ng/shader-ast (transpile TypeScript to GLSL) & https://thi.ng/webgl-shadertoy
Let's hope the video compression gods are kind to this one...
(Ps. Alas Firefox still doesn't support Rec.2020 color in video, so use Chrome/Safari for best viewing experience)
#GenerativeArt #Generative #AlgrorithmicArt #AbstractArt #Art #Texture #TypeScript #ShaderAST #ThingUmbrella #NoAI
-
Been working on some additions/adjustments for #Umbra, one of my recent algorithmic/generative art pieces, currently shown exclusively on Layer.
Here's a 3 minute segment (of an infinite realtime animation). Give it time to develop/change! Fullscreen playback probably best...
Made with https://thi.ng/shader-ast (transpile TypeScript to GLSL) & https://thi.ng/webgl-shadertoy
Let's hope the video compression gods are kind to this one...
(Ps. Alas Firefox still doesn't support Rec.2020 color in video, so use Chrome/Safari for best viewing experience)
#GenerativeArt #Generative #AlgrorithmicArt #AbstractArt #Art #Texture #TypeScript #ShaderAST #ThingUmbrella #NoAI
-
Been working on some additions/adjustments for #Umbra, one of my recent algorithmic/generative art pieces, currently shown exclusively on Layer.
Here's a 3 minute segment (of an infinite realtime animation). Give it time to develop/change! Fullscreen playback probably best...
Made with https://thi.ng/shader-ast (transpile TypeScript to GLSL) & https://thi.ng/webgl-shadertoy
Let's hope the video compression gods are kind to this one...
(Ps. Alas Firefox still doesn't support Rec.2020 color in video, so use Chrome/Safari for best viewing experience)
#GenerativeArt #Generative #AlgrorithmicArt #AbstractArt #Art #Texture #TypeScript #ShaderAST #ThingUmbrella #NoAI
-
Been working on some additions/adjustments for #Umbra, one of my recent algorithmic/generative art pieces, currently shown exclusively on Layer.
Here's a 3 minute segment (of an infinite realtime animation). Give it time to develop/change! Fullscreen playback probably best...
Made with https://thi.ng/shader-ast (transpile TypeScript to GLSL) & https://thi.ng/webgl-shadertoy
Let's hope the video compression gods are kind to this one...
(Ps. Alas Firefox still doesn't support Rec.2020 color in video, so use Chrome/Safari for best viewing experience)
#GenerativeArt #Generative #AlgrorithmicArt #AbstractArt #Art #Texture #TypeScript #ShaderAST #ThingUmbrella #NoAI
-
Been working on some additions/adjustments for #Umbra, one of my recent algorithmic/generative art pieces, currently shown exclusively on Layer.
Here's a 3 minute segment (of an infinite realtime animation). Give it time to develop/change! Fullscreen playback probably best...
Made with https://thi.ng/shader-ast (transpile TypeScript to GLSL) & https://thi.ng/webgl-shadertoy
Let's hope the video compression gods are kind to this one...
(Ps. Alas Firefox still doesn't support Rec.2020 color in video, so use Chrome/Safari for best viewing experience)
#GenerativeArt #Generative #AlgrorithmicArt #AbstractArt #Art #Texture #TypeScript #ShaderAST #ThingUmbrella #NoAI
-
#ReleaseFriday — New version 3.1.0 of the recently talked about https://thi.ng/args package, a declarative & functional CLI argument parser & app framework. I updated the arg specifications to be fully self-describing & serializable (with minor exceptions), and streamlined the API for factory functions to define the specs.
Why is this useful? For example, now I can (already have!) implemented a CLI as separate short-lived client/process which only acts as RPC frontend/proxy for the actual CLI commands defined & executed in a long running app server, which is heavily based on a plugin architecture. Each plugin can contribute any number of CLI commands, each with its own set of args/options... When the CLI client app is launched, it first retrieves a list of these registered commands and all their options from the server, then uses the https://thi.ng/args CLI framework to select the right command, validate its options or display formatted usage info. If all is ok, the command is then triggered via an HTTP request to the app server, executes there and the command's log messages are send back as response...
#ThingUmbrella #CLI #RPC #TypeScript #JavaScript #OpenSource #SoftwareArchitecture
-
#ReleaseFriday — New version 3.1.0 of the recently talked about https://thi.ng/args package, a declarative & functional CLI argument parser & app framework. I updated the arg specifications to be fully self-describing & serializable (with minor exceptions), and streamlined the API for factory functions to define the specs.
Why is this useful? For example, now I can (already have!) implemented a CLI as separate short-lived client/process which only acts as RPC frontend/proxy for the actual CLI commands defined & executed in a long running app server, which is heavily based on a plugin architecture. Each plugin can contribute any number of CLI commands, each with its own set of args/options... When the CLI client app is launched, it first retrieves a list of these registered commands and all their options from the server, then uses the https://thi.ng/args CLI framework to select the right command, validate its options or display formatted usage info. If all is ok, the command is then triggered via an HTTP request to the app server, executes there and the command's log messages are send back as response...
#ThingUmbrella #CLI #RPC #TypeScript #JavaScript #OpenSource #SoftwareArchitecture