CSCI 441 - Computer Graphics

Fall 2024 - MP - Over Hill and Under Hill

This assignment is due by 10/31/2024 11:59pm.

It seems you've been able to evade the Intern as you no longer have a shadow. Returning to your ride you find construction tape blocking the entrance and a permit displayed next to your sign. Wonderful! Construction has begun on your ride! You get closer to read the fine print of the permit.

24 September 2024
Arda Land

PERMIT FOR CONSTRUCTION OF MEGA-COASTER


Please be advised that construction has begun on the latest attraction at Arda Land - the Mega-Coaster! No access without permission from Ilúvatar. Stay clear of the area until work has completed.

Mega-Coaster?! What Mega-Coaster? This is where my ride is supposed to go!

You storm off looking for the man that seemed to always be around, until now. There seems to be a commotion going on near the great tower so you head that direction. Approaching nearer, there is a bright glowing orb hovering above the pyramid. You don't recall seeing that before.

As you push through the crowd and get near the front, the man is trying to calm everyone down. Luckily, he sees you and grabs you by the arm.

Quick! They'll eat me alive out here. We must head into the tower. I've been waiting for you. Ilúvatar wants to see you right away.

Perfect. Maybe now I'll find out what's going on.

As you move through the tower, 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 tower. Are you going underground?

The man stops abruptly, and you nearly walk into his back. He points to a sign on a narrow wooden door.


Lasciate ogni speranza,
voi ch'entrate.

He nods at you and swings the door open motioning for you to enter. You proceed.


Part I - Build Your Coaster


Quickly scanning the room, there are about fifty other people gathered - and you saw them around the park as you ran through. Why are they here too? You find the last remaining open seat and wait for whom you assume is Ilúvatar 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 make Arda Land the most successful theme park. For years, we have been trying to win a Golden Ticket but our attractions were never good enough. Alone, none of you will ever have the resources to build the one great ride. But together, perhaps you can find a way to make the tallest and fastest and best ride on the planet.
We will build the Mega-Coaster in our park, but we need to theme areas of the park. Please create a new land for us to build around the Mega-Coaster. Here, take one of these flyers and start right away. Resources are limited so you must hurry. We wish to open the park in a few weeks time so any delay will hinder our chances for the award."

You quickly take one of the flyers as they go by and begin reading:

The Golden Ticket has a series of judging criteria. There are five in all, each testing a different skill you have learned in your travels. You must choose some of your fellow Heroes to join you in your land. Arda Land has seventeen lands and each have enrollment slots available. Fifteen lands can accept only three Heroes while the remaining two can four Heroes.

The first part of your midterm project is to assemble into lands inside the park to begin construction on your ride. Construction materials are centrally located, so you may only partner with other characters located in your park section (those seeking Jewels or Rings). Our class will have fifteen teams of three and two teams of four (reserved for those seeking Jewels). Do not assume you are the team of four, contact the instructor first to ensure the team is still available. Be aware that as a team of four, you will be expected to do an amount of work reflective of four members. Once you have formed your team, ALL members of your team must email the following to the instructor by MONDAY, SEPTEMBER 30, 11:59PM:

  1. The Members of Your Team
  2. Your Guild Name
  3. What You Seek (Jewels or Rings)

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 consists 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 Parts D & E. 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 Gouraud Shading. This will be implemented through a directional light, a point light, and a spotlight. 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.


Section E - Texturing

Your world will be placed within a textured skybox to bring your scene to life. Appropriate texture filtering will need to be used and the cube faces must be properly aligned.

Scanning the room, you instantly know who should join you in the guild. You pull them aside, speak for a few minutes, and it's agreed. You shall begin preparations immediately. You aspire to build the most prestigious ride and strive to stand out amongst the other teams. You already have plans for when you return to your ride of what you will build.


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 & viewports, the skybox, and your heroes.

At the end of lab, each hero will vote for their favorite guild that should be awarded the Golden Ticket.

!!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:

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 iteration 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 when at the end if 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:


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 consists of ground and other scenic objects.
Cameras & Viewports 20% Arc Ball 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 key presses as well.
Shader & VAOs 20% Vertex and Fragment Shaders compile and link without errors. Objects in world created using VAOs. Shaders and VAOs interact correctly.
Illumination 20% 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.
Texturing 20% 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 10/31/2024 11:59pm.