openFrameworks
Leave a comment

One Degree of Freedom – Interactive projection mapping

onedgeree

Created by Neil Mendoza, One Degree of Freedom explores interactive projection mapping as a means to touch and interact with an object. Drawing inspiration from marble and pinball machines, the installation gives the mapping illusion an extra layer of depth.

The 3D form was designed generatively in openFrameworks by distorting a set of points using a super formula and calculating a Voronoi diagram from the same. The cells in the Voronoi diagram were then scaled down to leave a gap between them and a point that sits in a different plane was added at the centre of each cell to make the form three dimensional. The form was then CNCed from foam and painted white. A backing plate was laser cut and a mounting hub was screwed onto it, the backing plate was then glued to the foam object. Using the hub, the foam object was then mounted directly on to a rotary encoder.

The projection mapping software is also written in openFrameworks. The physics of the balls is simulated using Box2D. Each of the balls is a light source and the lighting and translucency are calculated using GLSL shaders with the translucency approximation based on this presentation. There is one mesh that the lighting calculations are based on, extra divisions were added to this mesh in Maya to make the “crystals” look a little rounded and so that the lighting did not appear skewed. There is also a “wireframe” mesh for each polygon that glows when it is hit by a ball. The audio is generated using a software synthesizer. Each polygon has it’s own MIDI note and every time it is hit, a “note on” is sent out with the velocity of the note proportional to the speed that the ball that hit it was moving.

The rotation is tracked using a rotary encoder attached to a Teensy micro controller. The rotary encoder has a resolution of 4096 readings per revolution so each piece of rotation datum can be packed into two bytes with data in the first 7 bits of each byte and a flag to indicate the order in the 8th bit. This is then sent over serial approximately once per rendered frame. Neil tells us that there is a slight lag that is proportional to the speed that the object is rotating but this is compensated for in the mapping software.

Project PageNeil Mendoza

onedegree_neil_mendoza_04

onedegree_neil_mendoza_03