CSCI 441 - Computer Graphics

Fall 2018 - Assignment 4 - Outrun the Faeries



Canvas | CS @ Mines | Mines | Piazza

picture
|   Home |  Syllabus |  Assignments |  Leaderboard |  Schedule |  Resources   |
Blue Teapot2015: Asgard Green Teapot2016: Mount Olympus Red Teapot2017: Aaru Park Grey Teapot2018: Findias Speedway
This assignment is due by Thursday, September 27, 2018 by 11:59pm.

As you are crossing the land, you come to a Druid camp. The cloaked leader stops you and holds a staff up blocking your progress. It sounds like the Druid is chanting a spell at you. When the spell stops, you notice a glowing faery continuing circling you. As you walk away, the faery continues to follow you but lags behind. Perhaps you need to move quicker?


Part I - Get a Move On


The Druid motions for you to stand still. As you stop, you hear words spoken directly in to your brain.
I will teach you go faster than before only if you can escape my chase. Wherever you are, I shall be. There is no leaving me behind.
Determined to rid yourself of this curse, you ask the Druid what has happened. Without speaking, the Druid hands you a small leather bound book. You open the book and begin reading:
For this assignment, you will use your Assignment 3 submission as the starting point and add to it. Following the same format as Lab03, you will read in control points from a file formatted the same as the lab. With your submission, you must include a control point file that specifies the Bézier curves for your submission. We will later test with an additional control point file for completeness and accuracy. All curves you submit will be C0 continuous by definition, but can it be C1 continuous as well?

As before, your program must feature a grid and scenery of some sort to provide the user with a sense of scale and perspective. Your hero will still be moving around the world as before. Now, there will be a Bézier curve(s) centered around your hero. You must plot the "control cage," the edges between control points, with a light yellow line, and plot the Bézier curve itself with a blue line. You must also draw small, solid green spheres at the control points. As your hero moves around the world, the curve should move with the hero so the hero is always at the center of where the curve is drawn around.

Finally, animate the faery. that continuously moves along the curve. When the faery reaches the end of the curve, have it jump to the beginning of the curve and repeat indefinitely (unless the end of your curve is the beginning of your curve, what happens then?). Your faery should be drawn hierarchically. If your hero is standing still, the faery should still be in constant motion along the curve.

The camera can follow any camera model (freecam or arcball cam) you like.

Lastly, have keys that perform the following operations:
  1. "Display/Hide Control Cage" which toggles if the control points and cage are visible or not.
  2. "Display/Hide Bézier Curve" which toggles if the actual curve is visible or not.
  3. A "Quit" option which closes the program.
Be sure to put in your README.txt which keys perform each operation.

You will be using Bézier curves as part of your midterm project, so it's a good idea to write your functions as generally as possible (e.g., have a function that takes 4 controls points and an interpolant as input and returns the corresponding point on the curve, and a similar function for the entire curve).
Ready to go, you start heading towards Findias again. This time, trying to shake the faery from following you.


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.


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
5%Control points are read in from file correctly. (Your program will be tested against two new control point files that we provide)
10%Bézier curve is evaluated correctly.
10%Bézier curve is drawn correctly.
5%Control points of the Bézier curve are drawn correctly.
5%Control cage is drawn correctly.
15%Faery is drawn hierarchically and is animated while moving.
15%Animated faery moves correctly along curve, jumps back to start at the end of the curve, and repeats this process indefinitely.
5%Faery moves along the curve smoothly.
15%Bézier curve is centered around hero. As the hero moves throughout the world, the curve moves with the hero and continues to revolve around the hero.
5%Camera follows arcball cam or freecam model.
5%Control Cage and Control Points can be toggled to show or hide.
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
Mobius Strip
Mobius Strip

*NOTE: Since this assignment builds off exactly where Assignment 3 left off, the hidden achievements from Assignment 3 will also apply to this assignment. The Extra Credit Achievement from A3 cannot be earned from this assignment (A4). If you already earned the hidden achievements from A3, you cannot earn them a second time from A4.


Submission


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


This assignment is due by Thursday, September 27, 2018 by 11:59pm.
Last Updated: 09/17/18 16:51


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