Tower Lights Animator v2
|Tower Lights Show|
|Duration||Spring 2017 - Fall 2017|
The Tower Animator was created to produce the Tower Lights show which is displayed on the south side of the University of Idaho's Theophilus Tower. Each window is rigged with a set of LED lights which illuminate in synchronization to music. Signals are sent through the buildings wireless connection to tell lights when to light up and what color to be. The Tower Animator is the software that individuals user to make shows.
In Fall of 2017, the teams from Software Engineering produced four new versions of the Tower Animator, each with their own twist and features. These four animators exhibited attractive new features such as the ability to select a color and associate it to the left or right mouse button, and the ability to copy frames so that editing in the timeline became far less time consuming. Our job is to synthesize these four new animators into one as well as add some new features of own.
Our client would like to see something new that combines all of the features into one new animator, plus the ability to handle music files and use the same interface to edit the goofy glasses lights show for the marching band. This program would allow
- The creation, editing, and management of frames
- The addition of colors, effects, and channels
- The use of hotkeys to map portions of the animation to transmittable sections
- The saving of the animation in a file format
Our goal for this project is to make the animation processes easier for the users of the software. This will be accomplished through adding animation features such as path drawing and the ability to create groups of pixels that will be given the appearance of movement. This will allow a user to select a group of pixels and move them from point A to point B over a certain amount of time. A secondary goal for the project is to give the ability to associate an audio file with the current animation. This will allow an animation to run synchronized with an audio file.
"Marching Band Mode"
The animator will be able to enter this mode, allowing the user to develop animations for the goofy glasses marching band halftime show using the square grid interface of the tower animator. The marching band mode will be able to save animations for the goofy glasses lights show into a format usable by the marching band player.
Hotkeys will enable the user to assign special effects to a frame using keyboard shortcuts. The user will be able to import these special effects from a library.
Like most projects, we have run into issues with creating a new design for old software. One of the biggest issues we have had to resolve is creating an output file that is compatible with the tower animator hardware while retaining new detailed information about the animation sequences of various pixel groups. Our solution is to use a two file system: one file used to retain object information of the animations and another that is compatible with the hardware that is used for the tower show. Because of the nature of the new file system, we will need to make sure the new software is reverse compatible with the old file types. To do this there will be an import feature added to the software. This feature will allow for a user to import a file created from a previous version.
This image is a representation of what we hope to achieve when the project is complete. The left hand side is the animation canvas (called the 'grid') and the right is were the main controls are. The grid is an area that is many times larger than the size of the Tower Lights show. The orange group of boxes in the center of the grid represents the frame of the light show. The frame can be moved around on the grid to capture different areas of the canvas. This is the first major improvement over the previous version that the team will be sure to implement.
This is our state diagram which describes how the program will transition between different operations.
This is our class diagram which describes how the data structures in the program interact.
This was our poster for Expo. Below is a link to our technical presentation given at the Expo. Media:Technical_Presentation-TowerIlluminati.pdf
A screenshot taken of our current GUI. The GUI is created using the QT/C++ extension. This screen shot was taken November 2014.
A more current screenshot taken March, 2015. Below is a link to our reference manual. Media:TowerIlluminati_Refman.pdf
Team Photo: Brandon Brewster, Zach Bjorklund, Zach Spence
Brandon is an undergraduate studying Computer Science. He was a part of the CS 338 project to rework the tower animator and was selected to continue working on it for senior capstone.
Zachary Spence is a senior majoring in computer science and minoring in history. He plans on attending grad school at the university to get a master's in education for curriculum and Instruction with the dertification option, to be able to teach computer science and history at the jr./sr. high school level. He is from Deary, ID, and has been raised in Idaho all his life. He enjoys reading, writing, fencing, singing, and spending a lot of time with his family.
Zach is a computer engineering major in his fifth year at the U of I who emphasizes in audio engineering and signal processing. His passion is electronic sound and music production. His other hobbies include skateboarding, airsofting, skiing, and freerunning.
He is currently taking and enjoying Signals and Systems II with Dr. Sullivan. Recently he has also been developing interest in cyber security and opening to the idea of grad school. He plans to graduate Spring of 2018 after which he'll be headed south to work for NAVAIR. Beyond that, he's not sure what to expect but hopes to someday start his own production company for film and games.
Brandon Brewster (email@example.com)
Zach Spence (firstname.lastname@example.org)
Zach Bjorklund (email@example.com)
Emeth Thompson (firstname.lastname@example.org)
Ranger Adams (email@example.com)
Paul Bailey (firstname.lastname@example.org)
Matthew Brown (email@example.com)
Cameron Simon (firstname.lastname@example.org)