CSCI 441 - Computer Graphics

Fall 2021 - Midterm Project - The Main Attraction



Canvas | CS @ Mines | Mines | Piazza
|   Home |  Assignments |  Leaderboard |  Schedule |  Resources   |
Blue Teapot2015: Asgard Green Teapot2016: Mount Olympus Red Teapot2017: Aaru Park Grey Teapot2018: Findias Speedway
White Teapot2019: Hanan Pacha Black Teapot2020: Onogoro Island Rainbow Teapot2021: The Colosseum
This assignment is due by Thursday, October 14, 2021 by 11:59pm.

After your journey, you arrive at the arena. An even larger crowd has assembled to welcome all those that are arriving.
As you push through the crowd and get near the entrance, the cloaked figure is trying to calm everyone down and clear a path. Luckily, you are being pulled by the arm and make your way through to the door. You hear the cloaked figure say:
Quick! We must head inside.
Perfect. Maybe now I'll find out what's going on.

As you move inside the arena, you can no longer hear the sound of the crowd outside. You don't remember making any turns, but you feel that you've been walking too long compared to the size of the building. Are you going underground?

The cloaked figure stops abruptly and you nearly walk into their back. The figure points to a sign on a narrow wooden door.


Lasciate ogni speranza,
voi ch'entrate.

Nodding at you and swinging the door open, you to enter.


Part I - Impress the Crowd


Quickly scanning the room, there are nearly fifty other people gathered - and you saw them outisde the arena as you ran through. Why are they here too? You find the last remaining open seat and wait for someone to speak, as they have already made their way to the podium.
"We have asked all of you here as you all have the same quest - to entertain. If you put on the best show, and the crowd agrees, you'll earn the Golden Gladius and be one step closer to returning home. The next fortnight will feature daily games honoring our gods. Alone, the gods will not be appeased. But together, perhaps you can find a way to properly honor the gods and entertain the crowd. Here, look at one of these flyers we've pasted outside the arena and begin preparations right away. Resources are limited so you must hurry. The Colosseum celebration begins in a few days time so any delay will not be looked at favorable by the gods."
You quickly take one of the flyers as they go by and begin reading:
The Golden Gladius is awarded on a series of jugding criteria. There are four in all, each testing a different skill you have learned in your travels. You must choose some of your fellow Heroes to join you. The Colosseum has fourteen days of celebration - six honoring the goddess Minerva and eight honoring the goddess Diana. Each day can accept three Heroes with the final day devoted to each goddess accepting four Heroes.

The first part of your midterm project is to assemble into teams. Festival days worship a single goddess, so you may only partner with other characters who worship your same Deity (Diana or Minerva). Our class will have twelve teams of three and two teams of four (one for each Deity). Once you have formed your team, one member of your team must email the following to the instructor by FRIDAY, OCTOBER 01 11:59PM:
  1. The Members of Your Team
  2. Your Guild Name
  3. Your Deity
For the midterm project, you will create a world for all of your Heroes to move around in. Read on to understand how everything fits together.

The actual midterm project is comprised of several smaller parts, each focusing on one of the topics covered to this point. The requirements for each section are described below.
Section A - 3D Drawing & Animation

As before, your Heroes must be made of solid 3D Objects. Beyond the ground plane and Heroes, you must also have two different types of objects scattered around your world.

Your Heroes must be animated. The other two objects may be stationary or could be animated (think a tree swaying in the wind for instance).


Section B - Cameras & Viewports

Users will be able to experience your program from one of many view points:
  1. From an arcball camera that can rotate around and follows a single Hero
  2. From a free cam that can move about the scene
  3. From a first person camera attached to one of your Heroes
The user needs to be able to toggle between camera modes through different key presses. When the first person point-of-view camera is turned on, it must appear as a picture-in-picture viewport within the window. Feel free to add additional cameras beyond the three listed (Sky cam, Side-scrolling cam, Third Person cam, etc.)

In addition to being able to select which camera view to use, the user must be able to select which Hero to move. The arcball cam will follow this hero and the first person cam will display their point of view.


Section C - Shaders & VAOs

You must be using VAOs for all of your objects. Additionally, you will need to create custom shaders to implement Part D. The shaders and VAOs will need to work seamlessly together and should run without error.


Section D - Illumination

You will need to implement the full Phong Reflectance Model using Gourad Shading. This will be implemented through a directional light, a point light, and a spot light. You must have at least one of each type of light. All of your lights will be additive and exhibit attenuation (except the directional light). Be sure to choose nice looking colors for each of your lights and your materials.

Scanning the room, you instantly know who should join you in your guild. You pull them aside, speak for a few minutes, and it's agreed. You three shall begin preparations immediately.


Part II - Website


Update the webpage that you submitted with A3 to include an entry for this assignment. As usual, include a screenshot (or two) and a brief description of the program, intended to showcase what your program does to people who are not familiar with the assignment.


Part III - Presentation


To demonstrate the features and world you have created, each team will have their project running during lab. It needs to clearly demonstrate each of the three different light types, the different camera types, and your three heroes.

At the end of lab, each hero will vote for their favorite guild that should win the Golden Gladius.

!!EXTRA CREDIT!! For extra credit, have a video generated by using an external file. We will model our file after the md5camera file format which implements a free cam model. At the start of your program, the user needs to be prompted which camera file they wish to open. The file is then formatted as follows:
n
eyePos1.x eyePos1.y eyePos1.z camDir1.x camDir1.y camDir1.z upVec1.x upVec1.y upVec1.z fov1
eyePos2.x eyePos2.y eyePos2.z camDir2.x camDir2.y camDir2.z upVec2.x upVec2.y upVec2.z fov2
...
eyePosn.x eyePosn.y eyePosn.z camDirn.x camDirn.y camDirn.z upVecn.x upVecn.y upVecn.z fovn
    
The first line states the number of frames that make up the camera animation. There then follow n lines. Each line is made up of the following information:
  • The first three values correspond to the camera's eye position
  • The next three values correspond to the camera's direction as a cartesian vector
  • The next three values correspond to the camera's up vector
  • The final value is the camera's field of view for our projection matrix.
We'll need to load the file into an array that holds all of our camera parameters. When ready to run the camera animation, every time through our render loop we'll use the next set of camera parameters from the array. This will result in an automated fly through your world. You can then determine if once at the end it should loop back to the beginning.


Documentation


With this and all future assignments, you are expected to appropriately document your code. This includes writing comments in your source code - remember that your comments should explain what a piece of code is supposed to do and why; don't just re-write what the code says in plain English. Comments serve the dual purpose of explaining your code to someone unfamiliar with it and assisting in debugging. If you know what a piece of code is supposed to be doing, you can figure out where it's going awry more easily.

Proper documentation also means including a README.txt file with your submission. In your submission folder, always include a file called README.txt that lists:
  • Land Name / Land Members
  • Assignment Number / Project Title
  • A brief, high level description of what the program is / does
  • A usage section, explaining how to run the program, which keys perform which actions, etc.
  • Instructions on compiling your code
  • Notes about bugs, implementation details, etc. if necessary
  • NEW: A rough distribution of responsibilities / contributions of each student
  • How long did this assignment take you?
  • How much did the lab help you for this assignment? 1-10 (1 - did not help at all, 10 - this was exactly the same as the lab)
  • How fun was this assignment? 1-10 (1 - discontinue this assignment, 10 - I wish I had more time to make it even better)


Grading Rubric


Your submission will be graded according to the following rubric.

Topic Percentage Requirement Description
3D Drawing & Animation 10% Heroes are animated & comprised of solid 3D Objects. Scene is comprised of ground and other scenic objects.
Cameras & Viewports 35% Arcball camera follows Hero and rotates correctly; user can control rotation. Free camera is correctly implemented, can move around the scene, and is user-controllable. Camera from Hero's point of view works correctly; it is attached to the Hero and looks along the Hero's direction of movement.

First-person camera view is placed in a separate viewport. User can toggle between cameras through use of a keypress. User can toggle between Heroes to follow through keypresses as well.
Shader & VAOs 10% Vertex and Fragment Shaders compile and link without errors. Objects in world created using VAOs. Shaders and VAOs interact correctly.
Illumination 35% Phong Reflectance Model implemented with Gourad Shading. All three light types implemented (directional, point, spot) and are additive. Attenuation applied as appropriate. Appropriate light colors and material colors used.
Submission, Presentation, & Team Reflection 10% Submission includes source code and README.txt. Source code is well documented. Webpage named <HeroName>.html submitted and updated with screenshot from latest assignment. Submission compiles and executes without error. Equal division of work is reported by team members. Project is presented and other projects are reviewed.


Experience Gained & Available Achievements


Assignment Attribute
Assignments +200 XP
Web Attribute
Web +200 XP
Camera Crew
Camera Crew
???
???
???
???
???
???
???
???


Submission


When you are completed with the project, zip together your source code and README.txt. Name the zip file, Guild_MP.zip where Guild is your Guild name. Upload this file to Canvas under MP Source Code. Only one team member needs to submit the project source code.

Every team member needs to submit their individual website under MP Website. Name the zip file HeroName_MP.zip.


This assignment is due by Thursday, October 14, 2021 by 11:59pm.
Last Updated: 09/21/21 15:06
Creative Commons License
Any questions, comments, corrections, or request for use please contact jpaone {at} mines {dot} edu.
Copyright © 2015-2021 Jeffrey R. Paone
Invia all'istruttore i nomi dei gemelli.