MeshEdit is the first of three components of Scotty3D. The primary repository is located at https://github.com/cmu462/Scotty3D. The wiki on that page will be the primary source of information about this assignment, this document only contains administrative details about grading and submission.
Checkpoint: February 27th, 11:59pm
Due date: March 18th, 11:59pm
Grading
For this assignment, you will implement methods in meshEdit.cpp
.
The User Guide on the wiki describes a large number of features that are in principle available in MeshEdit mode. You do not have to implement all of these features to receive full credit on the assignment! However, you do have to successfully implement a subset of the features. Implementing additional features beyond the required subset will earn you extra credit points.
The particular requirements, and the percentage of the grade they correspond to, are:
- Five of the local operations (listed below), including
FaceBevel
and one ofEdgeCollapse
orFaceCollapse
(10 pts each) Triangulation
,LinearSubdivision
, andCatmullClarkSubdivision
(10 pts each)- One of:
LoopSubdivision
,IsotropicRemeshing
, orSimplification
(30 pts each) - Create one beautiful 3D model using Scotty3D (20 pts)
- Writeup and commments for code (10 pts)
- (Total score percentage is number of points out of 140)
And the total score will be the scores from the checkpoint(30 pts) and the second part(100 pts). See Checkpoint Evaluation below for details.
In other words, everyone has to implement FaceBevel, triangulation, linear subdivision, and Catmull-Clark. These features are the bare minimum needed to model interesting subdivision surfaces; triangulation is necessary in order to do the global remeshing task(s). And you need to choose at least one from EdgeCollapse and FaceCollapse(or both). Note that some of the global tasks will require that you implement specific local operations! For instance, if you plan on implementing Simplification, you should also choose to implement EdgeCollapse. The local operations are as follows (these operations are described in the User Guide):
VertexBevel
EdgeBevel
FaceBevel
- everyone must implementEraseVertex
EraseEdge
EdgeCollapse
- everyone must implement this or FaceCollapseFaceCollapse
- everyone must implement this or EdgeCollapseEdgeFlip
EdgeSplit
The global operations, and their dependency on local operations, are as follows:
Triangulation
- everyone must implementLinearSubdivision
- everyone must implementCatmullClarkSubdivision
- everyone must implementLoopSubdivision
- depends onEdgeSplit
andEdgeFlip
IsotropicRemeshing
- depends onEdgeSplit
,EdgeFlip
, andEdgeCollapse
Simplification
- depends onEdgeCollapse
You are free to change the subset of features you choose to implement at any point during the assignment, but you should clearly indicate which features you chose (including those implemented for extra credit) by putting this information in your writeup (described below).
Extra credit: each additional local operation beyond the requirements will be worth 2% of the assignment grade; each additional global operation will be worth 4% of the assignment grade. The maximum possible grade on the assignment is 110%.
Checkpoint Evaluation
The 30 points for this checkpoint will be graded based on your submission on or before February 27th, 11:59pm. What you need to do are:
- Implement local operation
Facebevel
(10 pts) - Implement local operation
FaceCollapse
orEdgeCollapse
(10 pts) - Implement one of remaining local operations (10 pts)
To get full score for the first checkpoint, you should meet all the requirements above. Remember that if you start late, for example, after February 27th, the maximum score you can possibly get will only be 100. The score we give here(30 pts) is not proportional to the time we give for the checkpoint. Ideally, you should have finished more than just these three local operations. So remember to start early!
There is no extra credit for the checkpoint.
America's Next Top 3D Model
Every student is required to submit a 3D model created from cube.dae
using their implementation of Scotty3D, which will be automatically entered into a class-wide 3D modeling competition. Models will be critiqued and evaluated based on both technical sophistication and aesthetic beauty. Note: Use of any other 3D package (e.g., free or commercial 3D modelers like Maya or Blender) is strictly prohibited! This model must be created by opening cube.dae
, applying the operations implemented as part of the assignment, and saving the result.
NOTE: We are expecting some high-quality output here---or at least some creativity! Don't just brush this one off. :-)
Include this model in the root directory of your submission as model.dae
.
Writeup and Comments
Additionally, you will submit a short document explaining what you have implemented, and any particular details of your submission. If your submission includes any implementations which are not entirely functional, please detail what works and what doesn't, along with where you got stuck. This document does not need to be long; correctly implemented features may simply be listed, and incomplete features should be described in a few sentences at most.
The writeup must be a pdf, markdown, or plaintext file. Include it in the root directory of your submission as writeup.pdf
, writeup.md
, or writeup.txt
.
You also need to write comments for your code so that when you code doesn't work, we can go through your code to give you partial credits.
If you fail to submit a writeup or there is no documentation for your code, you will lose points.
Code Environment
This codebase should compile on Linux, macOS, and Windows on a typical environment. The build instructions given on the project page will walk you through installing dependencies and building the code. If you have difficulties running the code on your local machine, the GHC 5xxx cluster machines have all the packages required to build the project.
Handin Instructions
As with the previous assignments, we will be submitting on Autolab. You should create a tar archive of your entire src
subdirectory along with the writeup (e.g. writeup.txt
) and 3D modeling submission (model.dae
).
$ pwd
> (...)/Scotty3D
$ tar cvzf handin.tgz src/ writeup.txt model.dae
> a src
> a src/application.cpp
(...)
> a writeup.txt
> a model.dae
The Autolab system will run a simple script that checks for the extra files. If the output indicates that something is missing, fix it or risk losing points!