Empty Vessel Boy



Empty Vessel Boy was my open-ended final project for CalPoly SLO's Introduction to Computer Graphics course (CPE 471). The goal for this project was to create a hierarchical character model; animating and exploring in a 3-dimensional world.




Walk Forward
    'W' Key
Run Forward
    'w' Key
Turn Right
'    'd' Key
Turn Left
    'a' Key
Jump
    Spacebar
Crouch
    's' Key
Add Ghost
    Down Arrow Key
Clear Ghost Images
    Up Arrow Key
Toggle Human Fill
    'e' Key
Quit
    'q' Key
Reset Camera
    'End' Key
Rotate Camera View Left
    Right Arrow Key
Rotate Camera View Right
    Left Arrow Key
Rotate Camera View Down
    '[apostrophe] Key
Rotate Camera View Up
    /[ForwardSlash] Key


When EVB is midair, you have control over its trajectory using the same forward and turn keys.

There are collision detections implemented so that you cannot walk/run off a platform. If you jump off of a platform, you can not run or walk around until you land on another platform again. On the platforms, there may be an elevated stage or poles positioned on them that you are prevented from walking into as well.



Animation

The animating is done by interpolating between predefined key humanoid frames using angles and normals set for every action. A timer is used to interpolate between the frames utilizing a given FPS macro.

Modeling

The humanoid was modeled using a system of rotations, translations and scaling to a 1 unit glusphere (except for the neck using a cylinder). Every limb is connected at a joint(sphere) representing where the limb can be both bent and rotated about.

Hierarchical Tree
        -Waist
            -Upper Body
                -Neck
                    -Head
                -Right Upper Arm
                        -Right Lower Arm
                -Left Upper Arm
                        -Left Lower Arm
            -Lower Body
                -Right Upper Leg
                    -Right Lower Leg
                        -Right Foot
                -Left Upper Leg
                    -Left Lower Leg
                        -Left Foot



Resources

All information used for this project was acquired from CPE-471 class notes or its course supplementary text: OpenGL A Primer: 3rd Edition, by Edward Angel.