I finally got around to watching The LEGO Movie. It’s… awesome! Everything is awesome! The cast reads like a list of my favorite actors: Will Arnett, Alison Brie, Charlie Day, Will Ferrell, Will Forte, Morgan Freeman, and Nick Offerman and Chris Pratt. The kid in me loved the story and the geek in me loved the awesome computer graphics.
Long time followers of my nerd adventures may remember that I’ve made a few movies of my own. I finally uploaded them to YouTube for your amusement.
Up first is a stop motion video made with cousins Tim, Mark and Ryan. It was probably during Christmas and I’d guess it was around 1987 or 88. We did it in Tim’s basement with his VHS camcorder. There was a feature that would record a few frames with the press of a button. When we had the idea, I remember talking about who was going to build each piece. Before Mark went back to his house to build everything, we typed in a bunch of reminders on his awesome Casio calculator watch. The video took forever and we had a “script” change at the end. As a Lego man was moving across the crosswalk, he fell down perfectly in the middle of one of the recording clips. We went with it (what else can you do?) and turned it into a medical emergency. It’s a riveting story. I sped up the video below so that you can get your boredom in a shorter amount of time.
I thought this project was incredibly cool so a couple years later, I decided to try it again on my own. I borrowed our neighbor’s VHS-C camcorder (so “tiny”!) and set up a table in our basement. The city I built was much simpler than the first one and the story was non-existant.
And last, but certainly not least, I fell down a rabbit hole in college. My Junior and Senior year and then part of the year after graduation were spent doing a Lego movie on the computer. This was about 2000-2002 so there were none of the fancy Lego CAD programs available. Instead, I painstakingly built up a library of Lego pieces in a program called POVRay. It was a free tool that did raytracing but the modeling was all done in text. So to build a piece, I’d start with a rectangle, add some height and draw the nubs on top. I even had versions of the pieces with the word LEGO writen on top of each nub. Something like a Lego person is a huge amount of code. I had posted it to the web a while back and found it on archive.org. This link shows you what it takes to draw a single Lego character. Before I got too deep into the project, I built a short little sample video based on the old Budweiser Wazabi commercial.
The pieces were incredibly detailed and it literally took years to build it all. I also wrote a bunch of crazy math functions to animate the camera movement through the virtual world and also to animate things like walking characters. Rememember that since it is all text based input, “walking” means manually adjusting the rotation of various geometric shapes while translating the whole object forward. It was crazy complicated, but obviously I really enjoyed it for whatever reason. It was kind of relaxing to sit down for a while every night and “build” more pieces from scratch and at a time when I had very little money, it was fun to have limitless amounts of Legos to play with.
After spending eons on the graphics, I put about 30 seconds of thought into the story and here’s the result:
It’s not too far-fetched to say that this project got me my job at Microsoft. It took about 11 minutes to render a single frame of the movie (on my P2 350Mhz computer) and there were 2538 frames. That comes out to about 20 days of non-stop computing power. But oh yeah, don’t forget that I screw up a lot so I had to redo a bunch of it. To get it all done more quickly and to enter a programming contest at Purdue, I wrote a distributed rendering program. POVRay could be controlled via the command line so you would install POVRay and my client app on your computer. A central server would hand out individual frames for all the clients to render and then the client would send back the final image. (Archive.org has a copy of the design document for this project.) It actually worked and saved me a bunch of time. Not only that, I won the programming contest which netted me an original XBox and an HP Jornada PocketPC. But better yet, the guy who ran that comptetition went on to work at Microsoft. When I was looking for a job, JimM helped me reconnect with him and I ended up working in his team for the next six years!
So yes, this Lego project was ridiculously complex and within a few months of me releasing that video, there were bigger and better Lego rendering tools available. But I do think that finding fun projects like this area great way to stretch your abilities and feed your passion. This single project helped me in a lot of interviews when I was exiting college and it taught me a lot about programming.