Moon Projection

2019

A projection mapping project, made in TouchDesigner, for Luna Lounge. Features include psychedelic warping and distortion effects, audio reactivity, and physically-accurate real-time rendering.

Skills:

  • Realtime rendering

  • TouchDesigner

  • Max/MSP

  • OSC & TouchOSC

  • Particle systems

  • Reactive audio and visual system integration.

Roles:

  • Creative technologist

  • Projection mapping lead

  • Sound designer (generative)

  • Technical direction

  • Participant experience design

TouchDesigner Node Graph

Features

  • Realtime rendering in TouchDesigner

  • Physically accurate modeling:

  • Interactive control to “spin” the moon

  • Phase speed control

  • Light vs dark side phase weighting

  • Dual-tone “dark side” lighting with random motion of lights

  • 3D geometric distortion effects

  • Random spinning and transform effects to “jitter” the moon

  • 2D effects including feedback-style warping and compositing

  • Audio reactive effect to “pulse” to the bass of line-in audio

Spin

An interactive feature where participants press a button and watch the moon spin in reaction. Press the button in quick succession to give the moon enough momentum to spin all the way around.

Shader

Initial attempts at rendering the moon didn’t look quite right to the eye. The edges of the sphere were too dark, it appeared obviously curved and spherical. It turns out that a standard Lambertian (or diffuse Phong) shader won’t do the trick, the fine dust particles of the moon’s surface reflect light in a non-linear way, giving the moon its characteristic “flat” appearance. To accurately model the moon’s reflectance function, I implemented the Oren-Nayar reflectance model as custom GL shader code within TouchDesigner.

Phong (before):

Oren-Nayar (after):

Complete Loop Render

Below is a full one hour loop of one complete phase of the moon, with effects interspersed throughout.