Pride and [ERROR: FUNCTION TERMINATED]

It is a truth universally acknowledged that any homework of significant difficulty is in want of long hours to completion. In this case, twenty hours, give or take some breaks to re-hydrate from where the tears slipped away unnoticed among the frustration and eye strain. Even then, the outcome isn’t what you wanted and you may not make the deadline at all.

May whatever powers-that-be bless professors that give their students who fail part one of a multi-part homework a working version to complete the next section.

All dramatics and literary reference aside, animation is hard. I know this for a fact, I’ve been doing frame-by-frame animation since middle school and, while that can get tedious, it is much, much more straightforward than the computer graphics assignment I was referencing above. However, I’m getting ahead of myself; this is a story about learning, frustration, trial, error, failure, success, and at the end of it all, the final product.

The first thing to note is that Computer Graphics is a known grade killing class, and has been that way for at least five years, if not since it’s conceit. You talk to any Georgia Tech student who has taken the course and they’ll tremble in horror, either fake or very real, the reaction is the same at its core. I, unfortunately, didn’t know this until after I had begun.

The second thing to note is that the professor that I had for the class was infinitely preferable to previous holders of the position, as referenced by the second paragraph.

The third thing to note is that I’m still not entirely sure what a scene graph is. Of course, I understand what it is in concept — a data structure designed to keep graphic elements organised in a certain configuration for ease of use. Say you had a character with the parts: body, head, left arm, right arm, left leg, right leg, left hand, right hand, left foot, and right foot. The graph would be organized something like this:

Body
/           |            |            |             \
Head    left arm   right arm      left leg     right leg
|               |              |            |
Left hand    right hand    left foot    right foot

The character would then be connected to the world of the scene through the Body node. Using this construction, all of the pieces of the scene graph of the character are moved relative to its parent nodes– the nodes above it and connected to it within the scene graph. It’s fairly simple for anyone with a basic knowledge of coding languages, but understanding a scene graph and implementing one are two entirely separate things. It’s the implementation where I stumbled and was left in the dust on the side of the road.

However, homework waits for no one, especially not a homework with multiple parts. Part two of the homework was to create a character using the scene graph implementation from part one, and to connect the pieces appropriately to make a recognizable image of at least ten parts and three levels like the scene graph above. This was accomplished mostly by trial, error, and begging my fellow students to take pity and help me. If there is one thing I can say about college, it really does destroy any pride you may have once had when it comes to school work.

The third and final part of the homework was to take the character from part two and create an animation in the scene graph. Camera movements, movement of at least one part of the character, and one part of the surrounding scene were required. This part came the easiest to me, but it was still an exercise in frustrated guess-and-check. Moving the camera a few degrees only to find you turned it the wrong direction, making sure that the piece of your character that you decided to move doesn’t visually disconnect itself and become a floating arm spinning into the distance.

I’ll admit, I laughed aloud at some of the things my errors caused, but it felt more hysterical than anything at the time. When your entire animation starts spinning into the endless void, you have to start laughing, or you’ll cry. Still, I lived in the TA office hours until I finally managed to create a working product. It isn’t what I wanted, not nearly as good as it could have been, but remember what I said earlier about pride. If it completes all of the requirements and doesn’t look like hot garbage, it is a success.

You can view the finished version that took 20 hours out of my life by clicking the link below.

https://dj-baker.github.io/charged-animation/

DJ Baker
DJ is a third-year Computational Media Major at the Georgia Institute of Technology. They are a Science Fiction Research Fellow, a campus radio host and board operator, and the host of the Sci-Fi Lab Podcast. DJ is a writer, artist, web designer, animator, researcher, and programmer.