CSCI 441 - Computer Graphics

Fall 2019 - Assignment 5 - The Main Attraction



Canvas | CS @ Mines | Mines | Piazza
|   Home |  Syllabus |  Assignments |  Leaderboard |  Schedule |  Resources   |
Blue Teapot2015: Asgard Green Teapot2016: Mount Olympus Red Teapot2017: Aaru Park Grey Teapot2018: Findias Speedway White Teapot2019: Hanan Pacha
E-chaski Yachachiq runa chay tariy Machu Picchu
This assignment is due by Tuesday, November 5, 2019 by 11:59pm.

There is so much excitement around the park since the awarding of the Golden Ticket. Your coaster will certainly be a hit with everyone that comes to the park! But construction has only started on the park as a whole. We are nearing the grand reopening date and there is still much work to do! Our park needs an identity. When people see this attraction in pictures they will know they are looking at a picture of Hanan Pacha.


Part I - Erect the Park's Main Attraction


Sapa Inka has been pleased with your work thus far and now has tasked you with a much larger construction project. A parachute floats down from the sky. Attached to the parachute is a scroll. You unfurl the scroll and read:
We are now ready to start using GLSL and VBOs for OpenGL 3.3. For this assignment, you will probably want to start from scratch as much of what we did before (specifying points/lines/vertices, materials, lighting, etc.) must be refactored. You will need to create two shader programs for your assignment to function completely.

You will start off by placing your entire scene inside a skybox using appropriate textures. This is your chance to finally make Hanan Pacha look like something more than just a floating coaster in a black space void. There are some links on the resources page, some in the Canvas textures file repository, or you can find others (if you find another source, send the professor the link to add to the resources page). Your first shader program will need to apply a decal-ed texture to your skybox. This will consist of a simple pass-through vertex shader and a fragment shader that applies the texel to the fragment. NEW: In order to load image files with OpenGL 3, download SOIL 3.0 that has been reworked to compile against OpenGL 3. The original SOIL version only worked with OpenGL 2.

Next use the included ModelLoader header file to load in a WaveFront object file (such as the Venus de Milo or Suzanne) and place the object in your scene. You must now create a vertex and fragment shader to apply to this object. These shaders will reimplement Gourad Shading using the Blinn-Phong Illumination Model. The vertex shader must transform the vertex into clip space and compute the Blinn-Phong illumination per-vertex. The vertex color must then be passed to the fragment shader that then sets the interpolated color to the fragment.

FFP-Free: If you are feeling particularly adventurous, implement Phong Shading instead of Gourad Shading!

As before, the user should still be able to interact with your scene using an appropriate camera model.

When running your program, it must accept one command line argument: the object file. A sample usage is:
    ./a5 venus.obj

Feel free to add in anything else we've used to this point. Load all your objects from a world file. Use Bézier Patches for your ground to move around on. Recreate your Hero to move around the world.
Hoping for some extra park passes for family and friends, you instantly know what the main attraction will look like and set off to work.


Part II - Website


Update the webpage that you submitted with A4 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.


Documentation


With this and all future assignments, you are expeced 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:
  • Your Name / email
  • 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
  • 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.

PercentageRequirement Description
15%Scene placed within a textured skybox. Appropriate filtering used on skybox.
15%Object file read in properly using provided header file. Object file rendered within your scene.
65%Vertex and Fragment shaders compile without error into Shader Program. Shaders applied to skybox and object.
5%Submission includes source code, Makefile, and README.txt.
Source code is well documented. Webpage named <HeroName>.html submitted and updated with screenshot from latest assignment. Submission compiles and executes in the lab machine environment.


Experience Gained & Available Achievements


Assignment Attribute
Assignments +100 XP
Web Attribute
Web +100 XP
A Lighter Shade of Pale
A Lighter Shade of Pale
FFP-Free
FFP-Free


Submission


Please update your Makefile so it produces an executable with the name a5. When you are completed with the assignment, zip together your source code, shaders, object file, textures, Makefile, README.txt, and www/ folder. Name the zip file, HeroName_A5.zip. Upload this file to Canvas under A5.


This assignment is due by Tuesday, November 5, 2019 by 11:59pm.
Last Updated: 08/28/19 10:41


Valid HTML 4.01 Strict Valid CSS! Level Triple-A conformance, W3C WAI Web Content Accessibility Guidelines 2.0