animating with math

space magic

Some of my artist friends at work were talking about doing an art challenge to the theme, space travel back around November of 2015.  I'm not the kind of artist who usually works to a specific theme, but for this one I could see how it might work out.  

The title space magic came to mind instantly. It's inspired by the great times we had playing games together under that clan name.  I love my blue warlock robot unicorn and our adventures in the game world we helped create.  Many of these fine friends of mine would be showing art there too, so it was definitely time to throw down and represent to the fullest.


The show date for the art challenge was set to Friday, January 15, 2016 at the Eastside Artist Collaborative.  This seemed like a fine occasion to combine some of my recent math animation sketches into a new mix using the Leap Motion controller.  I immediately set out to hook up controls for the position and rotation of the 5 platonic solids driven by my hands in mid air.





early tests


Getting a new idea working is the greatest moment ever.  I was sitting in the passenger seat as we drove to cut our Christmas tree when I had my eureka moment.  The blue images above are from that excellent mobile session.  

Next, I put a simple alpha test shader with wireframe texture on the platonic solids.  The designs started taking on a new characteristic with the thin, sinuous dashed lines in the set of images below.  


phase space rotations

These patterns are made by narrowing the camera clip planes to a thin slice positioned at the center of the object.  When I turn off background refresh and rotate the object around it leaves a trail plotting out the intersection with the central plane.  The resulting moire patterns blew my mind.  A happy accident that quickly became my main focus of development.  

In addition, I hooked up the left hand rotations to drive the color of depth fog and that really brought it to life.  I like how the changing of colors encodes the passing of time.  It's like watching an animation play out within in a still image.

I experimented with many different combinations of controls mapped to the different axes of translation and rotation on my Leap Motion controlled hands.  Finally, I arrived at a control scheme that is described below.  But as I was figuring it out I produced these experiments in the next set of images. 

These designs were made using an old codebase that no longer exists in that form, so there won't be any more quite like them ever again.  That's why I grab lots of screenshots as I go.



I kept discovering new geometric patterns emerging from within the platonic solids.  By mapping their rotations in phase space I began to see new shapes take form that appeared to be dense with their own language of form and data.  I'd like to hear what Georgio Tsukalos would have to say about these.  


space magic triptych

As the code came together feature by feature the style of images began to take on a distinct look.  I focused my search for three images to print as a triptych for the gallery show.


It was hard to pick just three to print.  I had hundreds of screenshots to sort through and the constant temptation to make more.  Many nights were spent exploring the shapes that were emerging, searching for the perfect screenshot.  The session above is when I produced the set of three that I printed and hung in the gallery.  


The set of images above remind me of loot engrams.  I wanted to print a second triptych with some of these, but it was starting to become costly and time was running out.  Next time!


Here are the three images I finally printed and hung up in the gallery as a triptych.



warlock labs


Warlock Labs, January 8, 2016

Meanwhile, my buddy Scott Faulkner who runs the Warlock Labs art studio announced his call for art in the Greenwood Second Fridays Art Walk.  He set the theme to Believe: an X-Files Art Show in anticipation of the re-release of one of his favorite TV shows.

It was a bit of a stretch for my space magic art to fit this theme.  Scott is awesome and he was cool with me hanging some prints anyway.  With two gallery shows lined up for the first month, 2016 is already shaping up to be a good year!  





eastside artist collaborative (EAC)

The art challenge show at EAC was one week after the Warlock Labs show.  With the time remaining I set up a live, interactive installation where people could try out space magic themselves.  I printed these instructions for how to use the Leap Motion controller.  

The final control scheme worked as follows:

Right hand wrist orientation controls the direction and amount of rotation applied to the platonic solid shapes.  Translation of the right hand is directly mapped to control position of the shape.  When the right hand pinch gesture is detected the controls change: wrist orientation is now a throttle for translation in the forward and lateral directions. 

Left hand wrist orientation controls fog color.  X, Y and Z are mapped to R, G and B.  When pinching, clip plane slicing with overdraw is activated.  This is what creates the thin dashed lines as the cross section renders the object while rotating around.  


I picked up a bluetooth number pad so I could map a few extra controls.  I printed custom labels for the keys so the people trying it out at the gallery could know how it works.  The middle buttons switch between the 5 platonic solids.

tear it up

tear it up

I mapped a few extra controls on the other buttons.  Most of them were pretty obvious, reset the scene, scale larger/smaller, take screenshot.  This one deserves a bit of explanation:  The "Tear It Up" button translates the entire scene about 5e11 (five hundred billion) units.  This introduces a massive amount of floating point error, causing the fractals to thrash around in a violent seizure.




Here are some shots of my friends and fellow artists trying out the space magic installation during the showing at the Eastside Artist Collaborative studio space.

EAC, January 15, 2016

That's my buddy Zeke Garcia in the iconic selfie by my prints.  He is a fellow game industry artist and the most prolific painter I have ever known.  His solo exhibition is here Romantic Impressions.

Zeke purchased the middle print and and then my coworker and friend Ryan picked up the top one.  Thanks for the encouragement fellas!  I will apply this inspiration to my forward velocity.



Here are some of the images created by people at the show...



There is a secret button combo I programmed into the number pad controls.  When the two buttons beside the Tetrahedron are pressed simultaneously it turns on overdraw:  camera.clearFlags = CameraClearFlags.Depth;  I unleashed this madness when the bass drops at about 03:06 in this excellent song:


Here are some screenshots of what that looked like captured live at the event itself.



easter colors

Years ago in the batcave I discovered the easter colors.  


Easter comes in spring, the season of rebirth.  These colors seem to announce that rebirth so gloriously.  Here are some photos of naturally occurring easter colors taken this spring by my daughter, Ellena. 



I've been waiting on publishing this post all year because somehow it didn't feel finished.  It's strangely perfect right now in December during such dark and rainy weather we're having. 

The batcave glows and comes alive with these images projected on my movie screen.  They are so powerful, lighting up the dark winter nights better than any full spectrum light possibly could.  

It's what I need to keep my spirits up in the cold, dark northwest winter.  That and a bowl of ramen.




Here are some of the original images I captured when I discovered the easter colors back around 2011.  



The Hydra

These images were created using the input device known as the Hydra.  Three joysticks, a steering wheel and midi gear caused such an amazing color explosion like I had never before experienced.  I mapped the RGB color values of depth fog to be driven by the X, Y and Z axes of my center joystick.  

Using the Hydra I produced color combinations that I would have never dared otherwise.  I discovered amazing new worlds of color such as these easter colors.


the easter set

When Easter came around this year it occurred to me how much I needed to bring back the easter colors.  I felt compelled to celebrate the rebirth that was happening all around me.  We had a few friends over to our house for Easter brunch, so I decided to get their help creating patterns using my affine transformation fractals.  

I asked each of my friends for the following inputs:

  1. Choose any two colors.
  2. Pick a number between 1 and 10. (used as input for fractal iterations)


I entered those values into my fractal code in Unity 3D and here is what we got.  Easter eggs from the year 3 billion. 

I'm calling these shapes Fjori Stars, named after a character from a book in the game Skyrim.  

This technique was invented as a result of having only my laptop trackpad for input.  That's a lot less degrees of freedom compared to the all powerful Hydra.  Here I had to automate the animation using math instead of my own hands on joysticks and midi sliders.  It's the same simple technique from my earlier post on affine transformation fractal glitch where my WaveAnimator component translates and rotates the object on selected axes based on a Sin wave.  It's really fun to tweak the numbers slightly and see what different kinds of shapes I can get.  

The results are somewhat more reproducible than the original shapes made using the Hydra.  But there is still a healthy amount of chaos involved based on when I clear the background with the space bar and capture a screenshot with the enter key. 

Each image is a unique snowflake that couldn't ever be reproduced exactly.

The next logical step would be to build a robot to draw these designs onto real eggs.  Arduino and some stepper motors should be all we need.



easter part 2

Feather and I identified several important ways the easter set could be improved.  

We changed the background to white, chose new easter colors and put the designs onto real eggs.  Well, virtually real eggs inside of Unity 3D.  



Thus, we set out to remaster the easter set. Feather chose the colors and fractal iteration count while I grabbed screenshots.  


Feather and I are both really into the color blue.  It took a lot of self-discipline to move past blue and explore the other easter colors, but we eventually managed to do it.


Here is the complete remastered easter set:




The final step was to texture map them onto 3D egg models in Unity.  The designs work so well on the eggs, I just want to pick them up!  

Arduino powered drawing robots would be a fun project, but we'll save that for later.  The Leap Motion Controller is by far the best way to virtually interact with the eggs.  


Leap Motion Controller is for sale at Best Buy for about $70.  I've always wanted to tinker with this amazing gadget, so I went out and picked one up.  It was seamless to set up the Unity C# scripts and a bunch of great example scenes, all free to download on their website.  It only took about half an hour to get the hand controller up and running with RigidBody components added to the easter eggs.  







Leap Motion is so much fun to play with.  Here I have assigned the MagneticPinch component that comes with the included Unity C# scripts.  It senses when thumb and index finger tips are touching and assigns a dynamic spring to the nearest rigid body object.  That's the part in the movie above where I picked up the purple/blue egg.  

I can think of so many ways to use this amazing device to control elements in my animation scenes.  First order of business, I need to see what it looks like to control R, G and B fog colors using the X, Y and Z axes of the palm of my hand.  

I have finally discovered the successor to the Hydra that is fit for the mobile batcave era.  It is thrilling to imagine the new art that will arise here in the near future.


scratch glitchers


Hello, my name is anatomecha and I'm addicted to Scratch.  

lots of unicorns


Scratch is a web-based tool for creating animation and games using a visual node-based programming system.  It was created by MIT and is offered for free online.  I admit to staying up to the wee hours of the morning creating trippy animations like these or "just adding one more feature" to a simple game design - because it's that quick and easy to use their tools.  And it is so much fun to see ideas come to life in the interactive realtime editor.  


Scratch was designed to be accessible to kids so they could learn the concepts of computer programming.  It achieved that goal so successfully and I am the evidence:  I was taught how to use Scratch by a 10 year old kid Zyatah, the daughter of two of our close family friends.  Most of what she knows she figured out on her own by tinkering on the website.  She has since entered an awesome after school program called Creative Coding 4 Kids that teaches Scratch after her 5th grade class lets out in the afternoon.  I recently got the opportunity to meet the founder of Creative Coding 4 Kids - we had a great conversation that I'm sure I'll be posting more about here in the near future.  I highly recommend for anyone with kids in the Seattle area to check out this excellent program for teaching kids the art and craft of coding!

This is the simple animation that got it all started for me - Zyatah showed me how to make the cat move right until it hits the wall, then then bounce in the opposite direction and repeat.  I watched as she dragged and dropped the icons from a tool palette into the work area, connecting them into this sequence.  

crazy cat

Literally 5 clicks later and the cat is walking back and forth on screen.  That is how simple it is to create animation in the node-based code editor tool on the Scratch website.  With that I was hooked.  I registered my own profile and dove in to see what I could create. 

Notice the final purple block in the sequence.  That is Zaytah's personal artistic touch.  "Change color effect by 25" makes him flicker rainbow colors, a thrilling visual effect.  She went on to show me her collection of animations on her Scratch projects page.  Her piece, "Illusion (a square instead)" blew me away with its hypnotizing moire patterns.  


She has such great techniques with color and distortion effects.  A natural knack for glitch.  So we formed a studio on Scratch where we can showcase all of our greatest glitch art.  Check us out here!!  scratch glitchers

A few weeks later I was hanging out with my animation students and TAs at UW in the computer lab after class had finished.  We got onto the subject of Scratch and I showed them Zyatah's crazy cat example.  Just like me, they were hooked.  A bunch of them created profiles of their own right on the spot!  


making games from scratch

The node-based visual programming system is really capable.  It was made by members of MIT, so I guess they know what they're doing.  I was curious to test its ability to create actual games, so I put together these basic demos.  I found that can make my own game from (heh) scratch so easily.  

Each of these simple game prototypes were started and mostly finished in one sitting. Way too much fun to make these!  

The code block layouts can get pretty sophisticated as shown in the image above.  Those stacks of blocks in the right column that start with a big purple bar are functions.  Inside the main "forever" loop over in the left column the smaller purple blocks are where that same function is being called, passing in different input values.  Above the main loop a bunch of orange blocks represent variables that get initialized when the scene starts.  This is real programming!  It's cool it can get that in-depth, but also very cool that it doesn't have to.  


A lot of scratchers are really into drawing and showing their works in simple slideshows, or animations no more sophisticated than crazy cat.  A fine way to go if that's what you're into.  Check out this great hand-drawn Destiny art slideshow.  These were drawn in the paint toolset included inside Scratch.  



Meanwhile another scratcher rolled a fully functional 3d platform game with sweet retro-looking vector graphics.  This demonstrates how far you can take it.  Pretty impressive, I would say.

Totally cool that these diverse styles can all thrive happily together in the same online community.



You can start from scratch or you can remix.  Everyone else's work on the entire site has a See Inside button where you can go in and start tinkering with the code blocks.  Then, hit the Remix button and it gets saved to your own projects page.  Credit is automatically given to the original creator.  It's the ultimate open source community.  I can browse the awesome Scratch projects the other users have made and riff off of them continuing in my own direction.  

Remixing is the process of learning for Generation G.  Learning by doing and tinkering and breaking things and eventually exclaiming, "I got it working!" my favorite words.  I never had to read a single piece of documentation, it was all there in context and talked up by word of mouth by other scratchers in the comments section of the website.


Here are two alternate takes on remixing I made.  The first one is from another scratcher's koch fractal curve project.  I simply replaced all constants with random numbers - instant glitch.  Credit for the original goes to vissaeus.  And in the second piece I took some cool boy and girl drawings by Zyatah and remixed them into a little story complete with space magic from the year 3 billion.


dads and kids on scratch

I was rambling on about scratch at work the other day, when my coworker and good friend AnalyticSpinors chimed in about his own scratch collaborations with his kids.  Turns out he has been a scratcher for the past 8 years!  He describes how his kids are not just learning to follow established rules for how math and coding are meant to be done, they are discovering their own methods for problem solving entirely on their own and coming up with processes that actually work.  This is how real science is done! 

Currently, AnalyticSpinors and his kid laserboy5 are building 2D platformer games together right along the same lines as I was doing.  Look at this awesome use of classic 8bit mega man art created by the father and sun duo.  So serendipitous, it kinda freaked me out.  Uses exactly the same control scheme as my own blockdude adventure game I had made just a week before!  Only they have already implemented wall-jump and have a much more realistic modeling of gravity than I had achieved.


messing around

I recently entered a graduate program pursuing a masters in Learning Technologies at Drexel University.  One of the things that came up in our readings was this new approach to education called Connected Learning.  In their research on how kids use the internet they found two main categories of types of activity, one focusing on socialization and the other is what they called messing around. This is where kids use creative tools like Scratch to tinker and explore and express themselves, bringing their imaginations to life.  

Some kids get way into this kind of messing around.  They geek out like crazy when they find the thing they love doing.  In doing so they gain a sense of agency that empowers them to take responsibility for their own learning.  When this happens the kid will be self-motivated to learn whatever is necessary in order to achieve their goals.  It can result in a life-long passion for creativity that may lead to productive career paths like I have found in my work.  I feel that as educators we need support this kind of learning however possible.

I'll admit I'm guilty of this thing called messing around.  And I'm not going to quit anytime soon because it's way too much fun!


boids algorithm

Artificial Life is a field of study and an associated art form which examine systems related to life, its processes, and its evolution, through the use of simulations with computer models, robotics, and biochemistry.

Mechanical Life is the term I have always preferred.  Artificial Life sounds so pejorative.  What is life and what qualifies it real versus artificial?  There's a lot of great discussion to be had here, it's one of the reasons why I wanted to create this website.  Regardless, this has to be the most compelling art form I've ever encountered.  

The boids algorithm is a classic example.  Here simple rules interact and result in emergent behavior that defies all expectation.  Velotron has been tinkering with this for years, so I decided to implement my own version of the boids algorithm in Unity.  Here it is running in Unity WebGL.  Click the link to launch in your browser...



Boids follow three simple rules:

  • Separation - steer to avoid crowding local flockmates
  • Alignment - steer toward the average heading of local flockmates
  • Cohesion - steer to move toward the average position (center of mass) of local flockmates

The original boids algorithm was presented at SIGGRAPH 1987 by Craig Reynolds, a pioneer of early 3D computer graphics who did work on the original Tron movie - the most legit OG Tech Artist cred I can imagine.  This line from Wikipedia about the name cracks me up, so I'll quote it directly...

The name “boid” corresponds to a shortened version of “bird-oid object”, which refers to a bird-like object. Its pronunciation evokes that of “bird” in a stereotypical New York accent.

lol!! Craig Reynolds' original boids simulation used simple triangular shapes without feathers and wings so he felt it necessary to call that out in the name.  Now every time I talk about it people must think I'm trying to sound like I'm from the east cost.

The code is really straightforward.  There is a function for each of the three rules.  The returned vectors get normalized and weighted based on the UI sliders.  That results in the new heading and the object is then moved along its forward vector taking momentum into account.  All together less than 150 lines of code.  It's not optimized at all, but I don't care right now because I'm too busy playing around with the sliders.  Someday I will do an optimization pass and see how many boids I can get on screen at once.  I've seen versions of the boids algorithm that run 4k instances at 60 hertz... in a web browser.  Welcome to the knee of the curve.

Here it is in Unity C# for anyone who wants to try it out.  Drop it in your scripts directory and assign it to any objects in the scene.


As soon as I got it working I got sucked in and couldn't stop playing around with it.  I have spent hours on end fiddling with the sliders that change the weight values of separation, alignment and cohesion.  It is so much fun!!  Although, it has had a negative effect on my productivity.  Every time I do this I discover new flock behaviors that surprise me.  At first it was fun to attempt to replicate real birds.  But soon I found it was more interesting to explore the abstract emergent behaviors inherent to the unique details of my own implementation.  


boid flocking patterns

A couple of patterns jumped out at me right away.  They make interesting shapes in phase space.  Enter the values in the demo to see it live!


realistic bird flock

realistic bird flock -  At times this can look somewhat close to real bird flocking.  Starting from these settings, shift cohesion and separation up and down to keep them looking lively.  I wanted to get the literal stuff out of the way so we can get on to the fun abstract emergent territory.  


mega-boid - High cohesion values with no alignment or separation.  All the boids clump together into one.  Make the clump fatter by slowly increasing separation.


explosion - Starting from a mega-boid pattern quickly increase separation.  They explode outward spherically.  


halo - Zero separation and alignment, low values of cohesion.  The boids orbit around each other in a pattern that resembles a divine headdress, or a giant sci-fi space installation.  Diameter of the halo is inversely proportional to cohesion.

boid planetoid

boid planetoid - Balanced separation and cohesion with low alignment stabilizes into a spherical shape. 

black hole

black hole - Starting from a planetoid pattern quickly increase cohesion.  They all collapse into one point resembling a gravitational singularity.  The event horizon is clearly visible when viewed in phase-space.

synchronized dancing

synchronized dancing - When alignment is set really high the boids all try to aim in the same direction.  Low momentum causes them to immediately flip to the new orientation.  Large sections of the flock keep flipping back and forth 180 degrees as the whole group eventually converges on the same heading.  Looks like they are in a music video flash mob or something.


v-formation - Back to realistic again... this one freaked me out when I discovered it.  I was like, holy shit, they are migrating South for the winter!!  Starting with a mega-boid slowly increase alignment.  It suddenly takes on a life of its own.  Good luck keeping them on camera as they swoop around looking for warmer climates.


I had so much fun painting in phase space with the boids.  Shapes came up that I couldn't have predicted.  It got really crazy when I applied the boid component to the camera itself.  I can't help but see what looks like landscape imagery in these screenshots.  Created totally by accident.


These swooping shapes are fun to look at too.  The camera is stationary here.  This is what it looks like when I apply the boids component to my affine transformation fractals.


Here is a gallery of some more fun boids images I grabbed while experimenting in Unity...

I raised a big question in the intro paragraph.  What is life and what qualifies it as real versus artificial? I don't intend to answer it, but rather to explore it and raise even more questions for further discussion.  Obviously, these boids don't have much in the way of real intelligence, and any comparison to biological life doesn't stack up.  But if a machine passes the Turing Test well enough, who is to say for sure?  


affine transformation fractal glitch

The Sierpinski Triangle 

The Sierpinski Triangle is an example of an Affine Transformation Fractal.  The Axiom, or initial shape is the Tetrahedron, the first of five Platonic Solids.  Iteration 1 is the Triforce from Zelda.  I can't imagine a more perfect starting point for my exploration.

The algorithm is simple: the axiom is replaced by smaller copies of itself with linear or affine linear transformations applied.  These transformations include simple matrix or vector addition and multiplication to produce translation, rotation, scaling and reflection.  As long as these transformations preserve parallel relationships within each subsequent axiom they can be called affine.

Another name for this algorithm is the Multiple Reduction Copy Machine, MRCM.  I set out to build my own version in Unity C# starting with a class called AffineTransformationFractal that extends the MonoBehaviour class.  It has two main functions, Generate() and Reproduce().  In Generate() I recursively iterate to the specified depth, calling Reproduce() on each instance of the axiom.   

Here is the code for Generate()... 

// Unity C# Generate method
// member of AffineTransformationFractal : MonoBehaviour 
public void Generate() {
    List<GameObject> newMembers = new List<GameObject>();
    List<GameObject> children = new List<GameObject>(); 

    for(int i=0; i<iterations; i++){ 
        for(int m=0; m<members.Count; m++) { 
            children = Reproduce( members[m], i, m );
            // add children to the list of new members
            for( int c=0; c<children.Count; c++){
                newMembers.Add( children[c] );
        // refresh the list of members
        for( int nm=0; nm<newMembers.Count; nm++ ){
            members.Add( newMembers[nm] );
    Destroy ( generator );

The original Reproduce() function worked just fine, but it provided an inefficient artist workflow when adding new shapes and experimenting with their transformations.   My first implementation stored the affine transformations as a series of Vector3 class members.  I got the Vector3 values by observing objects in Maya and recording their values in my code.  An obvious hack, but It served as a low-tech way to get the first version up and running.   

Seen here is the 7th iteration Sierpinski triangle explored in the Unity 3D editor. It was created using the original Reproduce() method I first threw together in the hotel room on 3/06.

Mandelbrot's book, the Fractal Geometry of Nature suggested a more elegant implementation of the Reproduce() function.  He described the creation of the Koch curve where the Initiator (or axiom) is replaced by a Generator object comprised of multiple transformed copies of itself.  I realized all I had to do was save an additional 3D asset with the copies moved into place and then have Reproduce() instantiate that asset in place of each axiom.  This way Unity handles of all vector transformations automatically with no need for hard-coded values.  

This simplified technique enabled me to build all sorts of affine transformation fractals including the Koch fractal curve as seen below.  Pardon the rough edges visible in the low iterations, it was made while riding in the passenger seat of a car using only my laptop trackpad for input.  That's how easy it was to use the new technique, it didn't even require the use of Maya.

I have always been fascinated by the Koch snowflake.  A curve with theoretically infinite length and no tangents, thus defying the rules of conventional 2d curves.  Mandelbrot called it a Teragon or monster shape because of this and claimed that it exists somewhere between the first and second dimensions.  1.26(...) Hausdorff dimensions, to be exact.  I'm going to explore it more deeply and present the results in a future post.  

Here is the new and improved Reproduce() function that I used to create the Koch curve and everything thereafter...  

// Unity C# Reproduce method
// Member of AffineTransformationFractal : MonoBehaviour
List<GameObject> Reproduce( GameObject axiom, int i, int m ) {
    List<GameObject> children = new List<GameObject> ();

    // create the generator object as a child of the axiom's parent
    GameObject newGenerator = Instantiate (generator);
    newGenerator.transform.SetParent ( axiom.transform.parent );

    // copy over transforms from axiom to children
    newGenerator.transform.localScale = axiom.transform.localScale;
    newGenerator.transform.position = axiom.transform.position;
    newGenerator.transform.eulerAngles = axiom.transform.eulerAngles;

    // add children to the list of children
    for( int c = 0; c < newGenerator.transform.childCount; c++ ){
        Transform child = newGenerator.transform.GetChild(c);
        children.Add( child.gameObject );
    Destroy ( axiom );
    return children;

This easier way of setting things up opened the door for a lot of fun artistic exploration.  I tried out a variety of shapes including the rest of the Platonic Solids.  Here is a shot of what the dodecahedron looks like as an affine transformation fractal.  

That's a lot of loot engrams. 168421 to be exact, but only one exotic.



Głîtçh - "A computer glitch is the failure of a system, usually containing a computing device, to complete its functions or perform them properly." 

The next step was to bring back the glitch techniques from the old batcave sessions.  

The easiest starting point was to set the camera background to not refresh.  This causes each frame of rendering to pile up into a composite palimpsest image.  I have been calling this technique Phase Space Painting because of how each still image shows the result of motion over time.  This is similar to math and scientific visualization where a linear function is graphed repeatedly over a localized Phase Space.  Certain patterns can be observed this way that would not otherwise be visible as found in Lorenz Strange Attractors.  I got a lot of mileage out of this technique in the early batcave days.  In Unity this is done by setting the Camera.clearFlags to Depth or Nothing as opposed to the usual Skybox setting.  

It doesn't look like much in a static scene, it needs animation.  So, to get things moving I made a quick WaveGenerator utility object and used it to drive a WaveAnimator component that oscillates any transform value over time.  

Here it is applied to rotation on the Sierpinski Triangle:  


I plugged the same WaveGenerator into another script that would lerp between two colors resulting in a new ColorAnimator component.  The first version I made, which I lived with for way too long included only two hard-coded fog color values.  But that's all I needed in order to venture back into the untamed psychedelic world of the early batcave days.  With the ColorAnimator applied to the depth fog of the main camera in the Unity scene I was instantly greeted by such vibrant colors.  

I am strangely drawn to the combination of blue and pink.  Their interactions are rich and intense, calling out to me.  For some reason I feel so compelled explore this possibility space.  


Next, I sketched out code for a basic Clip Plane Slicing implementation.  This immediately yielded interesting results.  Clip Plane Slicing is a simple technique where I set the camera clip planes very close together and over time move them through objects to render cross-sections.  This works great in combination with Phase Space Painting and animated depth fog colors.  

Here are some of the initial results:


Over the next few sessions these kinds of fractal mandala images were arising.  I had a general idea where I was going with this, but over time new patterns emerged that I couldn't have predicted.  That's when I really start having fun with my art.  Now I need to let go of any intentions I might have, get out of the way and let it take on a life of its own.

3/06 anatomecha ARISE


The number 306 has special significance to me.  It's a random number that appears in uncanny places.  So we made it into a holiday.  Velotron Heavy Industries released our first album, Welcome to the Knee of the Curve on 3/06/2012.  

Velotron Heavy Industries, 3/06/2012


Hard to believe it's been three years since then. When the sixth of March came around this year I knew I had to do something good.  I had just completed my GDC presentation with my good friend and colleague deathGlitch about our work in Rigging Tech Art at Bungie.  It took a lot of late nights and weekends to prepare for over the past six months.  

GDC 2015 Tools-Based Rigging in Bungie's Destiny

Game Developers Conference 2015

This session goes into detail on the Rigging and Tech Art work necessary for bringing all of the animated objects to life in Bungie's Destiny. Destiny is a large scope game, requiring many assets to be rigged and animated including characters, players, combatants, cinematics, vehicles, weapons, and props. Read more...


With free time back on my horizon I went for it headlong.  I implemented affine transformation fractals in Unity 3D C# on my laptop in the hotel room.  It was the morning of 3/06/2015, the day after the GDC show in San Francisco.  I got it up and running before checking out of the hotel later that morning and continued to tweak it on the plane ride back to Seattle.  

Seen here is the Sierpinski triangle.  These are some of the initial results I got in Unity...

sierpinski triangle, affine transformation fractal


The technique I used was simple, but effective.  It was inspired by this excellent book.   I'll break down how my implementation works in greater detail in a future post. 


Computer Explorations of Fractals, Chaos, Complex Systems, and Adaptation

"Simulation," writes Gary Flake in his preface, "becomes a form of experimentation in a universe of theories. The primary purpose of this book is to celebrate this fact."In this book, Gary William Flake develops in depth the simple idea that recurrent rules can produce rich and complicated behaviors. Distinguishing "agents" (e.g., molecules, cells, animals, and species) from their interactions (e.g., chemical reactions, immune system responses, sexual reproduction, and evolution), Flake argues that it is the computational properties of interactions that account for much of what we think of as "beautiful" and "interesting." From this basic thesis, Flake explores what he considers to be today's four most interesting computational topics: fractals, chaos, complex systems, and adaptation.


I cranked up the iterations high enough to melt my computer.  There are over a million individual tetrahedrons in the 10th iteration.  



Unity held up pretty well considering that each tetrahedron is its own GameObject with Animator component and all.  I could get a lot more on screen at higher frame rates with a few obvious optimizations.  


Before long I was greeted by the sign of success shown below.  This is the only way to end a good session. 

sign of success

sign of success

animating with math

I keep finding things I can't look away from in the intersection of art, math, music and science.  Patterns arise unexpectedly and take on a life of their own.  They teach me about how they work when I'm willing follow their ephemeral movements. 


Game engines are big boxes of math where many complex systems interact at once.  Math is so literal that it would at first glance seem predictable.  On closer inspection, interesting effects can be found at the edges or where multiple things interact.  



By breaking things and putting them back together again we learn how they truly work.  And when accidents happen in the routine course of events these anomalies often point in the direction of new discoveries.  I've learned to follow their lead down the rabbit hole.



These are samples of my recent work produced in the Unity 3D game engine.  I explore them as if an alien landscape or a specimen under a microscope.  

I take pictures to remember them by and sometimes I'll post them here.  


Here is one of my earlier works, the Glitch Sunset.


About 3 years ago I was really into this.  In the batcave I wrote code and developed hardware interfaces to explore the many ways to break the Unity 3D game engine.  My good friend Velotron made music and tech art in Ableton Live that drove the visual elements I was assembling in Unity via an OSC data stream.

Clip Plane Slicing

Depth Buffer Tearing

Phase Space Painting

These are some of the techniques I devised for exploring glitch.  I used them to create these images and animation.  I'm looking forward to explaining more about how they work.  



Terabytes of image and video data resulted from this highly productive phase between 2009 and 2012, most of which has never seen the light of day.  So I'll post some of those archives here once in a while along with the new stuff.  


Welcome to anatomecha arise.  I hope these explorations are as fun to view as they are to create.