Shop OBEX P1 Docs P2 Docs Learn Events
Another Beautiful -- and Propeller-Powered -- Piece from Alliance Studio — Parallax Forums

Another Beautiful -- and Propeller-Powered -- Piece from Alliance Studio

JonnyMacJonnyMac Posts: 9,105
edited 2016-05-03 20:26 in Propeller 1
My friend, Steve Wang, and his team have created another beautiful piece for Riot Games: this is the character Lucian from League of Legends.

The effect Steve wanted was that the souls of the Shadow Isle People are emanating from the central lantern and being dispatched by Lucian.

Alliance uses the EFX-TEK HC-8+ controller (which I co-designed). For this project we needed four of them as there is a total of 30 lighting channels. To create the light sweeping effect we laid in offset strips of LEDs. To create the motion each strip was light with a simple triangle wave. By offsetting the waves we create apparent motion. Diffusion through the fiberglass structure blends everything nicely.

Full-time cogs:
-- main control loop (Spin)
-- PWM driver (PASM)
-- DMX driver (PASM)
-- "Ramp" cog which creates triangle wave output on triggered channels (Spin)

Transient cogs:
-- "Flame" bloom and contract (Spin)
-- Gun 1 (Spin)
-- Gun 2 (Spin)

One of the problems to solve in the light motion was that client (Riot) wanting the chests and heads of the Shadow Isle People to fade more slowly than the elements in their wispy tails. While thinking about how to solve this I picked up my guitar to play -- then an idea hit me: I could create a background cog that could ramp any channel up or down, and I could use a table of control values to control the rates based on the channel state (0: idle, 1: ramp up, 2: ramp down). The foreground loop changes the state from 0 to 1 ("plucks" the channel, if you will); the background cog takes it from there. Once that piece was in place the rest came pretty easy. The foreground program calls the Lantern cog with random delays in between events. When the lantern is at full brightness the foreground uses a loop to sequentially change the state of the tail channels with the appropriate delays (to control the motion speed) in between.

The project required 30 outputs. We did this by using four HC-8+ controllers. The master controller uses a DMX output driver to link to the three slaves. The slaves are running simple DMX slave code; the only thing I added was a timeout so that a loss-of-DMX signal extinguishes the channels.

To simplify the master programming I created a method that treats the outputs as if I have one large controller.
pub set_channel(ch, level)                                      ' sets local and remote channels

  if (ch < 8)
    pwm.set(ch, level)
  else
    dmx.write(ch+1, level)

(sorry, I cannot post the entire program as it belongs to the client)

Note that DMX channels start at 1 which is why there is a +1 in the DMX output.

The original request was to randomly "fire" the guns. After seeing the display running and the slow fade of the heads and chests, the client asked if the gun firing could be synchronized with the hero head lighting. No problem. When the foreground loop triggeres the head channel, it launches the gun animations (these are transient cogs). There is a great view from the back of the hero head (which has a big hole blown in it) of the guns.

Finally, cool factor is enhanced by pumping fog (created with an industrial ultrasonic humidifier) through the mouths of the Shadow Isle People.

I really enjoy working with Steve and his team. He's a Hollywood legend, and is able to attract an incredibly talented group of artists and technicians.

In the end, the code is pretty easy, and yes, it's just LEDs. That said, this statue made a lot of people happy when on display at PAX in Boston a couple weeks ago. I was thrilled to hear from the setup team that the crowd loved the lighting animation.
640 x 960 - 136K
1440 x 960 - 302K
640 x 960 - 96K

Comments

Sign In or Register to comment.