FlockLA
I am pleased with the final result. For those familiar with Los Angeles, they could make out locations such as Downtown, The Valley, and where the oceans and mountains must be.
After the last class, it was clear that I need to make my project a real time animation rather than a still print. I also changed the attraction force and flocking forces to get a more appropriate "wandering" motion from the particles, rather than orbiting.
I wanted the piece to be reminiscent of how cities look at night viewed from a plan, which informed my color choices. I also plotted the intersections themselves and scaled them by their traffic flow.
More animation progression (1st run through):
Tuesday, December 9, 2014
Wednesday, December 3, 2014
Project 4 Final Progress
I finally decided where I want to go with this project. After sitting in traffic for over almost an hour, I thought about ways I could visualize traffic in an artistic way. After some looking, I found traffic data for Los Angeles, a notorious location for traffic, and I was all too familiar with the traffic situation after living there for 4 years. The data contains the average number of cars passing through a random sample of intersections across LA. I want to plot the intersections according the latitude and longitude and then use the traffic flow through the intersection as the mass in order to attract the particles and have them flock to the intersections.
The most difficult step will be parsing the data, because the latitude and longitude of the intersections is not easily attainable. They are very easy to get using the Google Maps API, but the restrictions on the use of the API make it unusable for my purposes. Therefore I have to use Open Street Maps, which does not provide an easy way to get the latitude and longitude for a cross street. I am working on parsing the Open Street Maps data for a specified region of LA, so that I can get the latitude and longitude of an intersection.
For now, here is an update plotting random intersections as white dots with random attraction magnitudes.
Tuesday, November 25, 2014
Project 4 Final Progress
The flocking simulation is now running and displaying the trails for each particle. Initially I was drawing each trail every frame because my sketch was 3D and allowed for camera movement. However, that significantly slowed down the animation. I realized that I could significantly speed up the drawing by locking the camera and only drawing the changes every draw, instead of redrawing the whole frame.
Below is an example of the flocking behavior with the trails drawn as described above.
I'm still trying to decide where I want to go with this project. Right now the flock is just following a particle moving along a 3D sinusoidal curve. I know I want the flock to be influenced by something else, like an image, and have that source be revealed by the behavior of the flock.
Thursday, November 13, 2014
Project 4 Final
Idea
Create generative art piece utilizing the swarm behavior of a flocking system as part of the aesthetic.
Goals
Have the boids "paint" an image by leaving behind a colored trail or some other type of trail technique, such as a polygon trail or bezier curve.
Develop some way to control the boids in an interesting way, such as based off an image map, or just through user interaction.
Technical
Will be coded in Processing, and built on top of the flocking system I've already created. Or I may migrate my code to webGL so it is easier to be presented anywhere.
Presentation
My project would be either projected in real time, or shown on the big HVS screen.
Inspiration:
Golan Levin
Floccugraphs

Robert Hodgin
Magnetic Structures

Daniel Shiffman
Swarm
Create generative art piece utilizing the swarm behavior of a flocking system as part of the aesthetic.
Goals
Have the boids "paint" an image by leaving behind a colored trail or some other type of trail technique, such as a polygon trail or bezier curve.
Develop some way to control the boids in an interesting way, such as based off an image map, or just through user interaction.
Technical
Will be coded in Processing, and built on top of the flocking system I've already created. Or I may migrate my code to webGL so it is easier to be presented anywhere.
Presentation
My project would be either projected in real time, or shown on the big HVS screen.
Inspiration:
Golan Levin
Floccugraphs
Robert Hodgin
Magnetic Structures
Daniel Shiffman
Swarm
Thursday, November 6, 2014
Project 3 Chaos and Complexity: Progress
After presenting my last work in progress it was clear that merely looking "chaotic" was not enough and I needed to embed a true chaotic system into my simulator.
I found the interactivity of my piece very rewarding and did not want to give that up. However, when it was not in use, my piece was quite uninteresting and would not entice viewers to actually interact with it. So I decided to embed a chaotic system to drive the cursor position when there are no users interacting, and as soon as someone starts interacting with the mouse, it uses their input to drive the simulation.
For the chaotic system, I chose to implement a double pendulum especially since it has similar forms to what my piece was already generating and I thought the movement would go well together. I use the end of the double pendulum to drive the particles and I only display the endpoint of the pendulum, so it is not very visible that my simulation is using a double pendulum. And I have not yet decided if that is desirable, or if I want to make the double pendulum more apparent.
Also, in order for my pendulum to be stable, I needed to implement 4th order Runge-Kutta instead of just simple Euler integration.
You can see the trail of the double pendulum as the circle in the image below.
I found the interactivity of my piece very rewarding and did not want to give that up. However, when it was not in use, my piece was quite uninteresting and would not entice viewers to actually interact with it. So I decided to embed a chaotic system to drive the cursor position when there are no users interacting, and as soon as someone starts interacting with the mouse, it uses their input to drive the simulation.
For the chaotic system, I chose to implement a double pendulum especially since it has similar forms to what my piece was already generating and I thought the movement would go well together. I use the end of the double pendulum to drive the particles and I only display the endpoint of the pendulum, so it is not very visible that my simulation is using a double pendulum. And I have not yet decided if that is desirable, or if I want to make the double pendulum more apparent.
Also, in order for my pendulum to be stable, I needed to implement 4th order Runge-Kutta instead of just simple Euler integration.
You can see the trail of the double pendulum as the circle in the image below.
Thursday, October 30, 2014
Project 3 Chaos and Complexity: Progress
I begun with experimenting with gravitational attraction/repulsion of the particles from the mouse cursor. After some experimenting, I was able to get some interesting behavior from my particle simulation. The movement of the particles looks "chaotic," but strictly speaking, the system itself is not really chaotic. Nevertheless, I am happy with the shapes and forms I am able to achieve and I find the simple user interaction I included to be very rewarding and fun to play with.
Below is an example of just one of the many dynamic forms my system produces interactively.
Tuesday, October 28, 2014
Project 3 Chaos and Complexity: Idea
For project 3 I am interested in creating a chaotic particle system, and I was inspired by this work by Felix Woitzel:
http://www.cake23.de/fmx/turing-fluid-particle-projection-feedback.html
I plan on creating some sort of feedback loop that affects the particles, however, I don't have an exact plan and I will first just experiment and see if I can come up with something interesting.
In order to run a simulation with a large number of particles, I will look into how to do the simulation with shaders on the GPU. In the meantime, I will implement something CPU based to see what interesting behaviors I can achieve before worrying about the number of particles.
http://www.cake23.de/fmx/turing-fluid-particle-projection-feedback.html
I plan on creating some sort of feedback loop that affects the particles, however, I don't have an exact plan and I will first just experiment and see if I can come up with something interesting.
In order to run a simulation with a large number of particles, I will look into how to do the simulation with shaders on the GPU. In the meantime, I will implement something CPU based to see what interesting behaviors I can achieve before worrying about the number of particles.
Monday, October 13, 2014
Project 2
I initially intended to to the bulk of this project as a custom python script in Houdini (which I had never done before), but I ran into difficulty and was not able to get the results I desired. I wanted to maintain a lot of control and have a custom Tree class that would have its own methods and logic, but I just could not seem to manipulate the geometry from my Tree objects. I'm fairly certain I was making some false assumptions about how python works and I decided that with the time left it would probably just be easier to implement my core concepts through the standard Houdini nodes. By doing so, however, I lost the fine control and had to sacrifice some features that I had wanted to implement.
I start by emitting points randomly from the terrain surface, and then placing a tree at that point. I also varied the size of the trees so that those that are lower and where more water would collect are larger.
I originally wanted the trees to have varying lifespans based on how optimal their location was, and then the trees that lived longer would produce more seeds. However, with my current implementation all the trees have the same lifespan. So to simulate the reproductive success of the trees, those that are in an optimal location spread more seeds over time. The seeds are spread by scattering particles in random directions from each tree and then projecting those particles back onto the plane. Once that is done, a tree is instanced at that point.
This first image is the initial condition with the trees scattered randomly across the terrain. Although, you can see that I have a treeline to prevent the trees from growing too high up on the mountain.
Advancing forward in time, you can see that the trees start to become more clustered and a structure appears.
Even further ahead in time, the trees become even more clustered in the optimal regions, however, I also check to see how many trees are near a given tree, and kill the tree if it is being crowded out.
I start by emitting points randomly from the terrain surface, and then placing a tree at that point. I also varied the size of the trees so that those that are lower and where more water would collect are larger.
I originally wanted the trees to have varying lifespans based on how optimal their location was, and then the trees that lived longer would produce more seeds. However, with my current implementation all the trees have the same lifespan. So to simulate the reproductive success of the trees, those that are in an optimal location spread more seeds over time. The seeds are spread by scattering particles in random directions from each tree and then projecting those particles back onto the plane. Once that is done, a tree is instanced at that point.
This first image is the initial condition with the trees scattered randomly across the terrain. Although, you can see that I have a treeline to prevent the trees from growing too high up on the mountain.
Advancing forward in time, you can see that the trees start to become more clustered and a structure appears.
Even further ahead in time, the trees become even more clustered in the optimal regions, however, I also check to see how many trees are near a given tree, and kill the tree if it is being crowded out.
I still need to work on the visuals so that I can render a timelapse, rather than showing these screenshots.
Tuesday, October 7, 2014
NetLogo
In anticipation of project 2, I tried to use NetLogo to emulate the effect I wanted to generate for project 2.
My idea for project 2 is to generatively create a forest on an arbitrary piece of terrain. I will use some pseudoscience logic to control where the trees "grow." Basically, the lower parts of the terrain are where the water would collect and thus more favorable regions for trees to grow. However, too many trees near each other will compete for resources and block each others sunlight causing them to die. Therefore I predict that some sort of equilibrium could be achieved by balancing these parameters.
These parameters are what I attempted to simulate in this NetLogo model. I used the Rabbits and Grass model, but treated the energy providing grass as if it were water-rich soil and the rabbits were stand-ins for trees. I kept the grass fixed because the low areas of the terrain where the water collects would also remain fixed. For the rabbits, if they had enough energy they could reproduce like a tree spreading its seeds, but otherwise the remained still. I also queried how many neighbors each rabbit had so I could kill them off if they became to clustered.
Below is the initial condition for the model.
After running it briefly, the rabbit population seems to be skyrocketing. But they are mostly grouped where the grass is, which is what I intended.
After letting it run some more, you can see the population does level off and approaches an equilibrium state.
My idea for project 2 is to generatively create a forest on an arbitrary piece of terrain. I will use some pseudoscience logic to control where the trees "grow." Basically, the lower parts of the terrain are where the water would collect and thus more favorable regions for trees to grow. However, too many trees near each other will compete for resources and block each others sunlight causing them to die. Therefore I predict that some sort of equilibrium could be achieved by balancing these parameters.
These parameters are what I attempted to simulate in this NetLogo model. I used the Rabbits and Grass model, but treated the energy providing grass as if it were water-rich soil and the rabbits were stand-ins for trees. I kept the grass fixed because the low areas of the terrain where the water collects would also remain fixed. For the rabbits, if they had enough energy they could reproduce like a tree spreading its seeds, but otherwise the remained still. I also queried how many neighbors each rabbit had so I could kill them off if they became to clustered.
Below is the initial condition for the model.
After running it briefly, the rabbit population seems to be skyrocketing. But they are mostly grouped where the grass is, which is what I intended.
I will be using these principles to help inform how I create project 2.
Thursday, September 25, 2014
Tuesday, September 16, 2014
Project 1 Chance Art : Final Results
Here are some of my final results. I am also going to experiment with animating the number of cubes on the surface because I think it would look interesting to see the same pattern as different 'resolutions' of 3D cubes.
(lighter)
larger
(lighter)
larger
Project 1 Chance Art : Progress
Here is an early version of what I originally intended to create, using Perlin noise on the surface of the sphere to generate the data necessary for scaling the cubes.
I didn't like how large the cubes were in this version, so I shrank them down in my next render. I also added a fake tilt-shift blur to see how that would look, since that was a key effect present in my inspiration images.
At this point, I feel I just need to tweak the colors, the patten, and any other aesthetics, as I have the mechanism in place for placing the cubes and coloring them based on their scale.
I didn't like how large the cubes were in this version, so I shrank them down in my next render. I also added a fake tilt-shift blur to see how that would look, since that was a key effect present in my inspiration images.
At this point, I feel I just need to tweak the colors, the patten, and any other aesthetics, as I have the mechanism in place for placing the cubes and coloring them based on their scale.
Project 1 Chance Art: Progress
In the process of creating my work, I stumbled across an interesting accident by randomly offsetting the cubes from the sphere's surface based on the normal at that point on the sphere.
Project 1 Chance Art : Inspiration
For this first project we are tasked with creating artwork based on chance. I was inspired by the artwork of Lee Griggs seen below:
These forms reminded me of photography from orbit of clouds on Earth, such as the following:
For my own project I will rely on random noise patterns to generate the organic shapes. I will also use Houdini in order to procedurally generate the geometry.
Subscribe to:
Posts (Atom)