Grades and feedback assignment 01
The marks for assignment 1 are online. Overall you did well with most people achieving a score of 80% or higher (median 85%). Fastest code ran in less than 1 second, slowest in 43 seconds. Interestingly, both these submissions were among the best and got marked 90% or higher (indeed execution speed is not marked).
Email Ravi Peters if you would like to have more personal feedback.
General feedback
- Most people used the Möller–Trumbore ray intersection method. Quite a few, however, hardcoded the origin of the ray (eg to 1000,1000,1000). This means your orientation will fail if the mesh happens to be around this hardcoded ray origin!
- A few choose to implement an alternative method to determine the correct mesh orientation. Unfortunately all of these had a potential fault. A very fast and simple method to find correct mesh orientation is the following (as implemented in the CGAL library):
- Select vertex
v
that has the highest z coordinate in the mesh - Select the edge
e
that is incident tov
and has the smallest slope - Select the triangle
t
that is incident toe
and has the highest third vertex (eg the vertex opposite toe
). - Check if the normal of
t
points upwards (in the direction of the positive z-axis).
- Select vertex
- Some people noted in their reports that not all triangles in the
bk_soup.obj
input had 3 adjacent triangles. Indeed, this was the case. If you explained in detail why this was the case (eg dangling triangles). You got a bonus point. -
The trick to get 1 second running time was to use dictionaries for finding the adjacent triangle edges. Indeed, without a dictionary this step was often more expensive than the ray casting. The key for the dictionary should be the vertex indices of the edge with the lowest one first.
- Some reports could be structured better by adding clear sections.
- Figures can help a lot to simplifiy your text.
Marking:
Report
- 1.0pt - significant unclear parts, method not reproducable from report, too short
- 2.0pt - not 100% percent reproducable from the report text, otherwise fairly good
- 2.5pt - clear and reproducable. Good report with one minor criticism.
-
3.0pt - all clear and reproducable, good structure
- 1.0pt bonus - investigated in detail the triangles with less than 3 adjacent triangles.
Followed all the rules/runs without modifications
- 1.0pt - everything OK
- 0.5pt - wrong filename for the code (1 person)
Mesh grouping
- 0.0pt - meshes in output not grouped at all (no one)
- 1.0pt - mesh grouping visible in OBJ but not showing up correctly in viewer
- 2.0pt - working as expected
Mesh orientation
- 0.0pt - not working at all
- 1.0pt - all meshes have a consistent orientation, but some meshes have an incorrect orientation for the
bk_soup.obj
input - 2.0pt - consistent and correct orientation for
bk_soup.obj
input. However, for some (special) cases it will fail. - 3.0pt - works perfectly
Output valid
- 0.0pt - val3dity reports one or more errors
- 1.0pt - val3dity reports no errors