CSCI 441 - Computer Graphics

Fall 2023 - Assignment 4 - Off to Never Never Land

This assignment is due by Thursday, November 16, 2023 11:59pm.

After successfully casting the Protector of Maui spell, the cloaked figure informs you that you were too late. The taniwha had already begun the eruption spell and cast an enchantment on the land. Looking around, you see that your fellow guild members have already succumbed to the enchantment and have drifted to sleep. Unable to resist any longer, you collapse to the ground.


Part I - Escape the Aura


You find yourself in a strange world, not home but not near the volcano either. After walking around, a bright glowing orb approaches you. Frightened, you begin running away. While running, you hear

Please don't go. I am here to help. You will need extra strength for your final task. Your realm god has sent me to protect you.

Once you stop, the orb encircles you. You then hear a voice directly in your head:

For this assignment, you will start from a prior assignment submission (A3 or MP are appropriate, or you can cobble together pieces from the Labs) as the starting point and add to it. Following the same format as Lab08, you will read in control points from a file formatted the same as the lab. With your submission, you must include a novel control point file that specifies the Bézier curves for your submission (do not just reuse one of the files from the lab, it must be non-trivially different from the provided lab files). 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?

Mobius Strip: unless the end of your curve is the beginning of your curve, what happens then?

As before, your program must feature a ground 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.

Extra Credit Option I: Add elevation to your world. Don't have the hero just move on a flat ground plane. Allow the hero to move up and down hills or up/down steps.

Extra Credit Option II: Allow the surface to move along a Bézier Surface. Remember, the hero must be oriented along the surface normal of the curve.

Additionally, we do not want our world floating out in boring old space. Place your world inside of a giant skybox. There are some links for skybox textures 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).

In addition to the hero moving around the world, 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. As your hero rotates, the curve should rotate with the hero.

A hierarchically drawn object with a clear forward orientation, will continuously move along the curve (even if the hero is standing still). When the object reaches the end of the curve, have it jump to the beginning of the curve and repeat indefinitely.

You will need an option to have the object move either by equal parameter t steps or by equal arc length steps.

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. "Enable/Disable Arc Length Parameterization" which toggles if the object moves in equal parameter steps or equal arc length steps.

Be sure to put in your README.txt which keys perform each operation.

Your assignment will need to include multiple shader programs at this point to apply the various illumination/texturing/rendering techniques.

You immediately wake up and feel as if the orb has become part of you.


Part II - Website


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

PercentageRequirement Description
20%Scene placed within a textured skybox. Appropriate filtering used on skybox.
5%Control points are read in from file correctly. (Your program will be tested against two new control point files that we provide)
5%Bézier curve is evaluated & drawn correctly.
10%Control points of the Bézier curve are drawn correctly. Control cage is drawn correctly. Control Cage and Control Points can be toggled to show or hide.
25%Object moves correctly along curve, jumps back to start at the end of the curve, and repeats this process indefinitely. Movement is smoothly controlled either by parameter steps or arc length steps.
25%Bézier curve is centered around hero and oriented with hero. As the hero moves & rotates 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%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 in the lab machine environment.

Experience Gained & Available Achievements


Assignment Attribute
Assignments +100 XP
Web Attribute
Web +100 XP
Mobius Strip
Mobius Strip
Mercator
Mercator
Surface Deep
Surface Deep
???
???

Submission


When you are completed with the assignment, zip together your source code, 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, November 16, 2023 11:59pm.