Disc experiment

Recently I’ve been exploring shapes and forms generated by algorithms. Sometimes I have a shape in mind and execute accordingly. This time I took a different approach.

The disc experiment is an exploration of a simple shape, the arc. I know I wanted the arc to be able to transform and I know I wanted it to exist in 3D space. After a few iterations I came upon this general shape.

A tweet from Felix Turner mentioned I should hook it up to web Audio a simple audio component of chrome with some ability to analyze sound data in real time, similar to a sound based experiment’s i’ve tried before. The data was too complex to accurately relate the sound to the visual so after a few iterations, I blatantly copied what Felix did and averaged the data into 1 parameter to make it easier to understand. I recently got into a classical music phase and found myself using Claire De Lune by DeBussy to provide the data.

versions : 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09

credits below

Loop Waveform Visualizer by Felix Turner

Three.js 3D framework

Dat-gui gui framework.

jstween for animation

Claire De Lune by DeBussy

Iris experiment

I recently found an great article about bezier curves by Mike Kamermans. What made it extra amazing was that all the images were open-sourced, interactive files created with Processing JS. You’re able to follow the mathematics of beziers as well understand how they were executed by reading the code.

His brief about calculating offset curves sparked off this concept of layering. By taking the initial bezier and rotate it about the y axis you get a simple and easily adjustable lathe. Offset curves around a lathe create a beautiful layering effect which add quite a bit of dimension. Using gradient fills instead of solids as subtlety to the shape(s) generated. It’s called Eye primarily because the shapes it was generating once I added the gradient fill looked liked an Eyeball. I think in hindsight, this experiment should be renamed iris and because I have an older flash experiment already named eye.

Update – I’ve renamed it Iris.

This experiment was built in HTML5 using the excellent three.js and dat.gui libraries.

I had a decent understanding of the idea so I set about modifying my base code with 3 distinct parts starting from left to right…

  1. The interactive 2d representation of the bezier.
  2. The rotate-able 3d version of the lathe.
  3. Controls created in dat.gui to modify parameters.

After a few versions I was able to get the bezier code as well as the layering effect working in 2d space. I then started working on the 3d shape, constantly adding and refining more parameters. I Isolated a few parameters which affect the animation of the shape and then spent the rest of the time cleaning and refining. Once the majority of the math was done, I spent time creating different view-able options with lines, particles and eventually fills.

Click the image below to see a progression of work

version : 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15

I’ve only tested this in chrome so there’s a very good chance it will not work in other browsers due to the needs of WebGL.

A Cooper Union mark variant in HTML5

I’ve always made a distinction between client-work and personal-work. Sometimes we make choices which prevents us from using a particular technology or an effect in favor of accommodating for the largest viewing audience. I chose to do it in HTML5 instead of flash not because of any particular argument over which technology is better. I’ve worked in flash for years and there wouldn’t be anything relatively new to learn. 3D in HTML5 and was something new to me and one of the best ways to learn new things is to force-ably throw yourself into a project.

If Murphy’s Law came into effect, I can always revert to a flash solution. As it turned out, browser compatibility issues prevented it from looking correct and the HTML5 version was scrapped for an entirely flash based solution.

Once the project was completed, I didn’t want to loose all that effort I spent on the HTML5 iteration so I slowly reformatted the original code using the latest version of Three.js and dat.gui, a framework that easily allowed you to modify parameters contained within a panel.

On a logistical note, I’m hesitant about naming it as the cooper union mark because of the alterations I’ve made to the original design, like the reintroduction of perspective and the addition of cube geometry. So for now, I’d like to call it a variant. Below are a few more randomly generated variants.

Case Study: An interactive brand for the Cooper Union

Created in flash using PV3D. Roll over to change the logo.


I’ve done a few dynamic logos in the past and have always had a bit of fun making them. So when my friends over at Behavior asked me to help out with creating one for the Cooper Union to coincide with their new site, it was impossible to say no. The logo itself (created by Doyle Partners) was a series of planes that were organized in an isometric-looking view that had so much potential for 3D motion.

The mark centers around an abstracted ‘C’ and ‘U’ intertwined in orthogonal space. We wanted the mark to deconstruct itself to it’s basic form of 2D planes which then form to create a composition. We wanted the composition to be randomly generated so what we needed to do was isolate specific parameters (like rotation and distance) that radically changes its look and feel. To do that we need to create a generative design system.

Once we found the parameters, it took a matter of trial and error to clamp which values looked good. For anything rotation related, we choose angles incremented to 45° while position based parameters are numbers divisible by 20. The Cooper Union mark is actually a variation generated using these parameters. After that, it was just a matter of animating these parameters from one set to another using tweening equations. The last thing we did was extend the animation back to the original mark by adding delays between each tweened parameter. On a side note, I do remember having fun changing the speeds to sync up with the tranformers’s transforming sound.



I’ve had some minor success with learning canvas recently and thought this would be a great way to dive into Three.js, Mr. doob’s 3D framework. For compatibility’s sake I ditched the WegGLRenderer in favor of the CanvasRenderer so it would work in all modern browsers and devices. For the most part, most of my preliminary tests work and so i moved forward with building it it in HTML.

Preliminary test done in Canvas using Three.js

Design system in Canvas using Three.js and jQueryUI

Everything was going splendidly until I hit a nasty roadblock that completely derailed the use of HTML, layer effects compatibility. It wasn’t supported in IE or Firefox and every hack I tried didn’t work or suffered massive performance issues. Removing the multiple/subtractive effects wasn’t an option because it was integral to the branding so there was no other recourse but to sandbag HTML in favor of Flash’s ubiquity among browsers. If i had to sacrifice anything it would be the user experience on mobile devices (who are already accustomed to it and won’t think much of it) than over half of all modern browsers. The final interactive brand was built with flash 10, using PaperVision3D.

A nice outcome of this was learning about perspective nomenclature. The Cooper Union mark is a non foreshortened, oblique projection with a 45 degree rotation. PaperVision3D nor Three.js had that particular angle configuration so I had to hack it by using an orthogonal camera position and using trial and error. I believe the closest approximation to the brand required squeezing the stage/canvas width a by 15%.

wormy experiment

This experiment was an offshoot from my previous experiment where I wanted to create a simple following formation rather than the circular one that arc had.

This particular experiment was unusual in that I didn’t really have a clear goal in mind. I was trying to solve a particular geometry problem. One iteration led to another which led to another. The end result was just a cleanup of all the iterations so you can see the inner workings. My fiancee wanted to name it colon but I had to veto an name it something more professional like wormy.

I’m slowly learning more about about html5, and I’m finally at a point where I can express some of these ideas at the same fidelity that I had with flash and processing. The reality is that it wouldn’t be possible without some of the open source frameworks available. For this experiment, I use jquery, jqueryui, seb’s vector class and had help from mr elstob.

version 01
version 02
version 03
version 04
version 05
version 06
version 07
version 08
version 09
version 10
version 11
version 12
version 13
version 14
version 15
version 16
version 17