Skip to content

Instantly share code, notes, and snippets.

@zhanghai
Last active February 8, 2018 08:59
Show Gist options
  • Save zhanghai/601264f80dab7b7bbc743a56722abf1c to your computer and use it in GitHub Desktop.
Save zhanghai/601264f80dab7b7bbc743a56722abf1c to your computer and use it in GitHub Desktop.
CS 184 Mesh Editor
<style> body { padding: 100px; width: 1000px; margin: auto; text-align: left; font-weight: 300; font-family: 'Open Sans', sans-serif; color: #121212; } h1, h2, h3, h4, h5, h6 { font-family: 'Source Sans Pro', sans-serif; text-align: center; } img { display: block; max-width: 800px; margin: 0 auto; } figcaption { text-align: center; } table { margin: 0 auto; border-collapse: collapse; text-align: center; } th, thead + tbody td { border: 1px solid black; padding: 0 1em; } td > * { width: 100%; } </style> <script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML'></script>

CS 184: Computer Graphics and Imaging, Spring 2018

Project 2: Mesh Editor

YOUR NAME, CS184-???



Overview

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

Section I: Bezier Curves and Surfaces

Part 1: Bezier curves with 1D de Casteljau subdivision

  • 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 six (6) control points of your own choosing. Use this Bezier curve for your screenshots below.
  • Show screenshots of each step of the evaluation from the original control points down to the final evaluated point. Use the keyboard command E to step through. Toggle C to show the completed curve as well.
  • Move the points around and modify the value of t by scrolling and show us a slightly different Bezier curve.

Part 2: Bezier surfaces with separable 1D de Casteljau subdivision

  • Briefly explain how de Casteljau's algorithm extends to Bezier surfaces and how you implemented it in order to evaluate Bezier surfaces.
  • Show a screenshot of a rendering of bez/teapot.bez.

Section II: Sampling

Part 3: Average normals for half-edge meshes

  • Briefly explain what you did.
  • Show mesh renderings of dae/teapot.dae, comparing the default OpenGL shading with and without smoothed normals (use Q to switch between face normals and average vertex normals).

Part 4: Half-edge flip

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

Part 5: Half-edge split

  • Briefly explain how you implemented the half-edge split operation and describe any interesting implementation/debugging tricks you used.
  • Show a screenshot of a mesh before and after some edge splits.
  • Show a screenshot of a mesh before and after a combination both edge splits and edge flips.
  • Write about your epic debugging quest, if you went on one.
  • If you implemented support for boundary edges, give some screenshot examples of your implementation properly handling split operations on bounary edges.

Part 6: Loop subdivision for mesh upsampling

  • Briefly explain how you implemented the Loop subdivision and describe any interesting implementation/debugging tricks you used.
  • Take some notes as well as some screenshots to record your observations of how meshes behave after Loop subdivision. What happens to sharp corners and edges? Can you lessen this effect by pre-splitting some edges?
  • Load up dae/cube.dae. Try several iterations of Loop subdivision on the cube. Notice that the cube.dae becomes slightly asymmetric after repeated subdivision steps. Play around with this using flip and split. Can you pre-process the cube with flip and split so it subdivides symmetrically? Document these effects and explain why they occur, and how your pre-processing helps alleviate the effects.
  • If you implemented any extra credit extensions, explain what you did and document how they work with screenshots.

Section III: Mesh Competition

If you are not participating in the optional mesh competition, don't worry about this section!

Part 7: Design your own mesh!

  • Save your best dae file as competition.dae in your docs/ directory, and show us a screenshot of it in your write-up.
  • Include a series of screenshots showing your original mesh, as well as your mesh after one and two rounds of subdivision. If you used any custom shaders, also include examples your mesh with those shaders applied.
  • Describe what you did to enhance your mesh-man beyond the simple mesh-man described in the tutorial.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment