My Blog: projects, sketches, works in progress, thoughts, and inspiration.

Tagged: tree

I cracked open the old Processing Particle System again and tried something a little bit different.

Beginning with particles moving through a Perlin Flow Field I moved them into 3d. Since my particle system is built on the PVector class, adding the third dimension was a simple matter of adding a third parameter to every call to a new PVector and adding either the P3D or OpenGL (used for all the images here) rendering engine. An extra force pushes the particles up through space an array stores the previous locations for each particle. As particles die an instance of another object is created, exclusively for storing and rendering these paths.

Another addition causes the growing strands to bud. The budded particles inherit the properties from the parent. Changing the forces between particles, the branching rate, and the environmental properties creates many different structures.

Processing Particle Generated Tree

Processing Particle Generated Tree

As the script runs, a cloud of particles drifts up through space leaving behind a colorful twisted shrubbery. Using the mouse and keyboard the camera can be moved around the structure while it generates itself.

Read On »

Read On (Post Continues) »

Simple recursive functions can created complex geometric fractals. A function draws a graphic and then by calling itself any number of times creates branches in the image. Each of the branches follows the same algorithm and creates the fractal. The transformations which occur between iterations, the graphic drawn, and any other steps or even randomized algorithms within the process determine the resulting fractals structure. This video of a fractal programmed in Processing is one of the simplest geometric fractals. Each iteration produces two copies of itself at it’s end. More complex versions of such a function are used to generate trees and other structures in video games and other virtual environments. The rotations of these two branches are changed slightly each frame and the function is recalculated. Within an object oriented programming language like Processing, each iteration could also create a new object or pass values into an array allowing the data to be easily reused without re-running the entire function.

Post Page »