CPE 471 Final Project
The Adventures of Honk
by Ryan Murphy
Project Description:
The main objective of this project is to create a user interactive character that the user can use to look around, walk, suck, and blast. The user controls a cute little creature named Honk who lives on a small island.
Project Motivation:
Honk is a character that I created in high school and used to make several animations. I want to see my character come to life. Also, I wanted to gain experience with hierarchical animation and unique cartoon like lighting. Also to experiment with low-tech approaches to advanced rendering features like shadows, fog, and reflection.
Project Goals:
Project Implementation and User Controls:
Honk was created using hierarchical modeling. I created a actor class and derived from it a Honk object and contain capabilities for animation, shadows, and materials. Honk is comprised of custom Sphere and Cylinder objects which contain all of the components for lighting and polygon control. The user can rotate the camera around him and watch his idle animation which consists of Honk looking at the ground, shaking his head, and blinking. By using the right mouse button the user can bring up a menu that allows you to toggle between the initial viewing mode and third person view. In third person view the mouse is used to look up or down. The W, A, S, D keys are used for movement forward, back, and rotate. *Note honk bobs up and down as he walks forward. The space bar allows Honk to puff up, cock his head back, and let out a blast. The blast is transparent and has collision detection with Honks nemesis Uni.
Uni is the blue enemy that walks out of the trees. He has parametric equations that control the walking animation. If Honk's blast hits him he explodes in a transparent blast. You can slow down Honks blast and Uni's destruction by pressing the K key. *Note the blast lights up the ground allowing you to see reflections of Honk and the tree's. If Uni is moving away to fast you can press U to keep him in place.
Other features in the scene include texture mapped grass and palm trees. The trees are modeled hierarchically as well and have the capability to bend when Honk blasts although this feature was not completed. The normal's on the leaves of the Palm trees are controlled to create the flat cartoon like shading. There was not enough time to implement a lake or a mirror so to show the reflection effect you can press the B key. There is fog in the background that allows objects to come smoothly into view rather than just popping in and out. Also my framework has a Model class derived from Actor (The Parent of Honk's class) which allows you to load in a mesh have a couple of different lighting modes on it including toon shading but this feature was never used.
Both Honk and Uni have shadows. As you rotate Honk around his shadow follows and even scales appropriately based on its orientation to the light. This was done using Honks position and the Light vector.
Control Table:
Screenshots:
This is a third person view from Honks perspective. He is looking at two palm trees. Notice the Cartoon like lighting of the trees, especially the flat look of the leaves. Also the shadow of Uni on the texture mapped ground.
This shows the transparency of Honks blast. Also in this picture the ground is toggled to reflective
Honk has just blasted Uni. Notice how the explosion lights up the ground allowing you to see the reflection of Honk and the Tree.
This picture has reflection turned on. Honk is in the middle of the blinking sequence of his idle animation and Uni is walking away. Also notice effect of the fog on the far tree causing it to seemingly fade into the distance.
This picture shows the scaling of honks shadow for proper effect. The left has the light to the left so the shadow appears on the right stretched out away from the light. The right shows the light behind Honk and the shadow stretched out front.
Sources:
The only real source I used was the text: OpenGL: A primer” by Edward Angel.