Posts

the end of the end

Image
At long last, I have something resembling a final project. It's nothing like what I set out to make, however. After hours and hours of getting brightness tracking working for the light pen, trying to finagle both video tracking and serial buffer management in a single web application, and attempting to integrate that into my "veins" toy, I hit a brick wall. For whatever reason, I couldn't figure out how to make the jump from moving and resizing a cursor to also having that cursor disperse "veins" - the farthest I got was a moving and resizing cursor. See below. So, I gave up. In the process of giving up, however, I saw something interesting in my webcam mirror - since the framerate of my webcam was embarrassingly slow, the LED would make light trails each frame when moved quickly enough. I was inspired. I scrapped my current project, and instead began working on something entirely different. What I ended up with was pretty neat. The first order o

the beginning of the end

Image
Today, I made my first bit of progress towards my final project. The overall gist? A more robust version of the "veins" toy in the previous post, controlled by a physical device tracked via camera, with various features. The first step: the physical device itself. What better way to interact with a drawing toy than a pen? The initial idea was to have a device that could: >track pressure applied to the tip with an FSR, for the purpose of determining the "intensity" of the "brushstroke" >have an LED on the end to be tracked via camera >have a slide pot of some kind for use as a color picker The first two were easily attainable. I had it together in no time: The third, however, proved unattainable. I had purchased a touch-sensitive slide pot, but upon attempting to use it, found a number of practical challenges. >it was extremely sensitive to any bending or physical interference >it was too large to fold around the pen withou

veins - a weird visual toy

Image
I call this particular bit of code "veins" because it ... sorta looks like veins. Put less creepily, it's a bit like an old Windows screensaver (the one with all the random tubes) crossed with a Jackson Pollock painting. But less elegant. It's a pretty simple toy - I just get the pixel color of wherever the user is clicking, then I send our four "pix" objects that carry that color in random directions, creating random lines at 90-degree angles to each other. It's kind of neat on its own, but clicking many times in a single location / holding the mouse button down also creates an interesting corruption-style effect, or a wavelike effect if the mouse is dragged. For performance considerations, I stop the "pix" objects after 500 steps, so I can rapidly click/hold the mouse button down without bogging down the browser. https://github.com/b-bolles/veins

"write on your journal a paragraph or two about what computing means to you at this point."

Computing, for me, is a means of realization. Pretty much every creative effort I've ever undertaken has been on a computer, or related to a computer: >Robotics with Lego Mindstorms sets >Music production - messing around with synths and sequencers in Ableton >Video game design with Gamemaker as a young kid and with Unity as an older "adult" >3D modeling with Blender >Writing with any number of word processors ...just to name a few. I feel strongly about mediums like AR and VR because they begin to bridge the gap between the virtual and the real. I grew up wishing I could explore the amazing fantasy worlds I saw on TV, in video games, and in my head. In fact, I spent more time in my head than I did in the real world - and since the virtual world isn't bound by the same laws the real world is, I naturally gravitated toward the former. I still do. I spend too much time in MMOs like FFXIV because I love inhabiting the worlds, and interacting with t

Squeezy Circle

Image
My latest invention takes after the subgenre of infinite runners akin to the Flash classic Helicopter and the infamous iPhone game Flappy Bird - namely, ones that require the player to finesse a specific input to weave between randomly placed pillars flying at the player on a 2-D plane. In my case, it's an FSR controlling a sphere. It's particularly jerky, since it's not interpolating the inputs, just assigning them directly to the sphere, but it works well enough. I have a series of blocks objects that steadily approach the sphere, and delete themselves once they're offscreen. They check for collision with the ball only when they're at relatively the same x position, and compare the ball's center coordinate with their own openings. Checking the center of an object as opposed to the entire thing is a practice employed by many 2D 'shmup games, which I am terrible at. Since I seem to be incapable of writing solid serial communication on my own, I borro

tile-map-thing

Image
It's not quite a game, and it's only sort of art, but it's kind of neat. I created what could generously be called a map creation tool - working on a grid that resizes itself to your screen, the application will randomly generate a map out of three tiles - mountains (gray), grass (green), and water (blue). It will then do a second pass, at which point it will replace any mountains or water not immediately adjacent to any other tiles of the same kind with grass, cleaning up the look somewhat and making it look less scattershot. It still looks pretty scattered, but it's cleaner than it would be otherwise. Some screens: I weighted the selection in favor of grass because it looks better. The tiles themselves are individual objects, which hold their color/x/y values within themselves, as well as draw functions. Full code: https://pastebin.com/YTtQAABX https://pastebin.com/YBJYKiQS

Stupid Triangle Thing

Image
...is the best name I can come up for this strange interactive computer contraption I've hacked together. Full demo: To start: I made a p5js sketch which would do several things. 1. make triangles onscreen on a certain input 2. set colors to each triangle 3. randomize the position of each point of each triangle, the color of each triangle, and the background color on a certain input 4. interpolate the movement of the triangles and the color changes from one random point to another 5. allow the user to control the rate of interpolation (speed) This was, as it would turn out, the easy part. I got it running in no time. Then, I got an Arduino interface working which would return values from 1-10 for a pot, as well as separate values which I decided to label "11" and "12" for two separate buttons. Code here: https://pastebin.com/qciFiYec I got it returning the values needed to a serial port in no time, as well. Circuitry: I then