Deliverables

You will submit your code as well as some deliverables (see below) in a webpage write-up. We recommend utilizing our HW Webpages GitHub Classroom, as we’ve created the necessary directory structure there for each homework. You can review our write-up guide for instructions on how to deploy your site.

Checkpoint Quiz

The Checkpoint Quiz for Homework 2 is due on Friday, February 21, 2025.

Deliverable: Please complete the [Homework 2] Checkpoint assignment.

Unfortunately, you cannot use slip days on the checkpoint.

If you use slip days for this homework, the number of slip days counted will be based on the later submission between your code and write-up. For example, if you submit your code on time but turn in the write-up half a day late, you will use one slip day for the entire assignment.

Code

The code for Homework 2 is due on Tuesday, March 4, 2025.

Deliverable: Please submit your code to the [Homework 2] Code: MeshEdit assignment. We recommend submitting by linking your GitHub account to Gradescope and selecting the relevant repository. Please reference our Student Handbook for more information.

Write-Up

The write-up for Homework 2 is due on Tuesday, March 4, 2025.

Deliverable: Please submit a PDF version of your webpage write-up to the [Homework 2] Write-Up: MeshEdit assignment. Please remember to select your pages. We have guidance on submission ediquette in our Student Handbook.

As a reminder, you are primarily graded on your write-up submission. Having a public website is a requirement, and can serve as a portfolio for you to show off your amazing graphics work in future years, but will not be utilized while grading, so please make sure to check that your PDF catches all images and updates that you’ve made to your website.

We have provided a simple HTML skeleton in index.html found within the docs folder to help you get started and structure your write-up.

You are also welcome to create your own webpage report from scratch using your own preferred frameworks or tools. However, please follow the same overall structure as described in the deliverables section below.

The goals of your write-up are for you to (1) think about and articulate what you have built and learned in your own words and (2) have a write-up of the homework to take away from the class. Your write-up should include the following:

  • An overview of the homework, including your approach to and implementation for each of the parts, as well as what problems you have encountered and how you solved them. Strive for clarity and succinctness.
  • For each part, make sure to include the results described in the corresponding section of the rubric, detailed below, in addition to your explanation. If you failed to generate any results correctly, provide a brief explanation on why.
  • The final, optional part seven, you have the opportunity to be creative and individual! Be sure to provide a good description on what you were going for, what you did, and how you did it, :).
  • Clearly indicate any extra credit items you have completed; and provide a thorough explanation and illustration for each of them.

The write-up is one of our main methods to evaluate your work, so it is important to spend the time to do it correctly and thoroughly. Plan ahead to allocate time for the write-up well before the deadline.

For Homework 2, you can use your native screenshotting systems (there is no hotkey for screenshotting).

Write-Up Rubric

This rubric lists the basic, minimum requirements for your write-up. The content and quality of your write-up are extremely important. You should make sure to at least address all the points listed below. The extra credits are intended for students who want to challenge themselves and explore methods beyond the fundamentals. They are not worth a lot of points, so do not necessarily expect to use extra credit points to make up for lost points elsewhere.

Overview (3 pts)

Give a high-level overview of what you have implemented in this assignment. Think about what you have built as a whole. Share your thoughts on what interesting things you have learned from completing this assignment.

Part 1 (13 pts)

  • Briefly explain de Casteljau’s algorithm and how you implemented it in order to evaluate Bezier curves.
  • Take a look at the provided .bzc files and create your own Bezier curve with 6 control points of your choosing. Use this Bezier curve for your screenshots below.
  • Show screenshots of each step / level of the evaluation from the original control points down to the final evaluated point. Press E to step through. Toggle C to show the completed Bezier curve as well.
  • Show a screenshot of a slightly different Bezier curve by moving the original control points around and modifying the parameter tt via mouse scrolling.

Part 2 (15 pts)

  • Briefly explain how de Casteljau algorithm extends to Bezier surfaces and how you implemented it in order to evaluate Bezier surfaces.
  • Show a screenshot of bez/teapot.bez (not .dae) evaluated by your implementation.

Part 3 (12 pts)

  • Briefly explain how you implemented the area-weighted vertex normals.
  • Show screenshots of dae/teapot.dae (not .bez) comparing teapot shading with and without vertex normals. Use Q to toggle default flat shading and Phong shading.

Part 4 (12 pts)

  • Briefly explain how you implemented the edge flip operation and describe any interesting implementation / debugging tricks you have used.
  • Show screenshots of the teapot before and after some edge flips.
  • Write about your eventful debugging journey, if you have experienced one.

Part 5 (20 pts)

  • Briefly explain how you implemented the edge split operation and describe any interesting implementation / debugging tricks you have used.
  • Show screenshots of a mesh before and after some edge splits.
  • Show screenshots of a mesh before and after a combination of both edge splits and edge flips.
  • Write about your eventful debugging journey, if you have experienced one.
  • If you have implemented support for boundary edges, show screenshots of your implementation properly handling split operations on boundary edges.

Part 6 (25 pts)

  • Briefly explain how you implemented the loop subdivision and describe any interesting implementation / debugging tricks you have used.
  • Take some notes, as well as some screenshots, of your observations on how meshes behave after loop subdivision. What happens to sharp corners and edges? Can you reduce this effect by pre-splitting some edges?
  • Load dae/cube.dae. Perform several iterations of loop subdivision on the cube. Notice that the cube becomes slightly asymmetric after repeated subdivisions. Can you pre-process the cube with edge flips and splits so that the cube subdivides symmetrically? Document these effects and explain why they occur. Also explain how your pre-processing helps alleviate the effects.
  • If you have implemented any extra credit extensions, explain what you did and document how they work with screenshots.

Potential Extra Credit - Art Competition: Model something Creative!

  • You do not need to have your art ready at the time of submission. The Art Competition will open the following day after the Assignment 2 deadline.
  • If submitting at the time of the homework submission, save your best polygon mesh as artcompetition.dae in your docs folder
  • Include a series of screenshots showing your original mesh and your mesh after one and two rounds of subdivision. If you have used custom shaders, include screenshots of your mesh with those shaders applied as well.
  • Describe what you have done to enhance your mesh beyond the simple humanoid mesh described in the tutorial.

Website Tips and Advice

You will submit your code as well as some deliverables (see below) in a webpage write-up. We recommend utilizing our HW Webpages GitHub Classroom, as we’ve created the necessary directory structure there for each homework. You can review our write-up guide for instructions on how to deploy your site.

  • Please include a link to your webpage at the top of your write-up
  • Note that only one webpage is needed for both partners
  • Your main report page should be called index.html.
  • Be sure that your images all appear in the PDF of your report. If you have videos or gifs, we will check them out on your public webpage.
  • Use only relative paths to files, such as "./images/image.jpg"
  • Do NOT use absolute paths, such as "/Users/student/Desktop/image.jpg"
  • Pay close attention to your filename extensions. Remember that on UNIX systems (such as the instructional machines), capitalization matters. .png != .jpeg != .jpg != .JPG
  • Be sure to adjust the permissions on your files so that they are world readable. For more information on this please see this tutorial.
  • Start assembling your webpage early to make sure you have a handle on how to edit the HTML code to insert images and format sections. (Or you can use Markdown)

Feedback (optional, but highly encouraged!)

Please share any feedback you have! This form should only take a minute or two to fill out, is entirely anonymous, and will directly impact how we run and develop homeworks for the rest of this semester, and all future semesters!