Math 155A - Introduction to Computer Graphics – Fall 2020
Instructor: Sam Buss,  University of California, San Diego

Final Project (Project #7), Create an individual project using OpenGL
Due date: Saturday, December 12, 9:00pm
       Projects may be completed as late as Monday, December 14 without point deduction.
       If it is later than that, please request an extension.
       Final projects may be graded beginning Monday, December 12.
 

Goals: Design and create a significant OpenGL program. Create a PDF file documenting your project.  Evaluation will be based on technical and artistic and creative merits.  One-on-one zoom grading with a TA and/or Sam Buss; in addition, files must be uploaded to the shared google drive and the PDF report should be handed in to both gradescope and the shared google drive.

What to hand in:  

·       Upload to your shared google drive folder:

o   All C++ source files. Especially any source file you created or modified.

o   All of your texture map bitmap files.

o   All GLSL shader program files.

o   Also, upload your PDF report with

§  Report on consultations/feedback given and received.

§  Discussion of your final project. What was the inspiration? What did you (successfully) implement? What did not get implemented? What keyboard controls are supported? Where did you find our texture maps, if any? List the features of the program, being especially sure to discuss anything new that was not present in earlier projects. Include two or three images, showing attractive views of your project.

·       Upload to gradescope: Your PDF report. The PDF report is an important component of this project, so please spend a little bit of effort on.

Get an individual zoom grading session with Professor Buss or a TA, please by Wednesday, December 15.

Hint:
Make sure your texture .bmp files are not too large. This can done be in Paint on Windows (Use the “resize” button, and shrink the size, maintaining the aspect ratio.) If your texture map files are huge, you may be able to reduce their size substantially without losing much image quality. This will help make your program load textures faster, and also make it easier upload to the shared google drive.

INSTRUCTIONS:

1.     Pick a project of your choosing.  Guidelines for this include:

a.      Your program must use OpenGL in the spirit of this course. 

b.     You should spend approximately 6-10 total hours of work on the final project.  If you find yourself spending over 10 hours, please cut the project short. In any event, you should not spend more than 15 hours on the project.

c.      Design a project that can be implemented in stages, so if you get stuck on one part and cannot complete everything as planned, you will still have a project to demo.

d.     You should incorporate some technical aspect of OpenGL or computer graphics that is new (that is, technical tools not used in any of your earlier projects).

e.      Simpler examples of new technical content could be include: navigating a scene with the keyboard controls (e.g,. moving the viewpoint left/right and up/down); polygon offset to avoid z-fighting; mouse controls; the use of more extensive animation; animated texture maps. More advanced uses of new technical content could include more advanced uses of texture maps such as cube maps; shadows; mirror effects; the use of Bezier curves; etc.

f.      Your project should not be an adaptation of code from outside Math 155A (e.g., downloaded code).  

g.     Some suggested projects are listed next.

2.     Some suggested project topics include:

a.      Design a museum room.  Include artwork as texture maps.  Include lights, benches, wood floors, rugs, doors, etc. if you wish.  The user should be able to navigate the scene and change view direction with keyboard or mouse controls.  (This and the next suggestion are fairly common as projects and have been done a lot in prior courses, but please embellish it in some way, say by choosing an interesting theme.)   Try adding textures to items in the room. Suggestions include three dimensional wood picture frames, or stylish ceiling lights, or spotlights on the pictures, or a curved sculpture, etc.  You can use glPolygonOffset to place flat images (e.g., paintings, windows, rugs) onto walls or floors without z-fighting.

b.     Design a dining room or living room, etc. with furniture. Be creative with use of GlGeom shapes, or model shapes of your own.  Use textures.

c.      Model a scene with a shiny object that uses an environment map (a cube map).

d.     Design a scene with water and reflections. (Warning: this one is really hard to do well.)

e.      Design an outdoor scene.  Maybe a cottage or mountain.  Again, use textures.

f.      Model a city scene, with some streets and buildings. Use textures.

g.     Model a simple robot.  Animate it.  Make it walk or dance or respond to keyboard controls.  (This kind of animation can be hard.)

h.     Model a space ship, a death star, a toaster, or some other technological device.  Possibly give it some animated behavior.

i.      Build a simple car and a region (or a track) where it can be driven under user control. 

j.      Build a simple game, where the user controls the game play with the keyboard (or even the mouse).

k.     Build a virtual roller coaster.  Let the user's viewpoint follow along (in or behind) the roller coaster car.  Include some interesting scenery.

l.      Or: Be creative!  Make your own suggestion.

3.     In class, we will see examples of last year’s student projects.

4.     The suggestion is to use the Project 6 files as a basis for your final project. These contain most of what you will need to work with surfaces, materials and lights. If you want materials that do not use Phong lighting, you can achieve this by using purely emissive Phong materials. If you want to use cube maps, please let me know.

5.     It will be an excellent idea to talk about your project in the preliminary design stage with me or with one of the TA's.  We may be able to give you some pointers on how best to approach your project.  This is strongly suggested!

6.     Grading will based on technical merit, artistic merit, and creativity.

7.     Upload to the shared google drive turn-in folder:  All needed source files (C++ and GLSL) and all terture (.bmp) files.

8.     How to write the PDF report. Call it “Project7report.pdf” (This name exactly, same capitalization!) It must have:

a.     Your name and student ID on the first page, near the upper left corner.

b.     Feedback/consultation. Next have a paragraph describing:

                                               i.     Everyone you received feedback from, and the type of feedback they provided. If the feedback was helpful, describe this.

                                             ii.     Everyone you gave feedback to, and the type of feedback you provided.

                                            iii.     Feedback can happen either while you are writing your program (say, if you run into problems), or after your program is finished (say, if you just want someone to check that it looks OK).

                                            iv.     If you get feedback from someone not in the course, please explain.

                                              v.     Your help from feedback should follow the guidelines for academic integrity on the course web: “However, you should definitely NOT: hand in someone else's code as your own, directly copy code from others, or work too closely with one person for the entire quarter. These will be viewed as serious violations of academic integrity. It is OK however to see someone else's code, and then take a short break (say, three minutes) and then write your own version of the code on your own. If you are not sure what is permitted, please talk with a TA or Professor Buss. (Any help you get from a TA or Professor Buss is permitted of course!)

c.      Half a page to two pages: Discussion of your final project. What was the inspiration? What did you (successfully) implement? What did not get implemented? What keyboard controls are supported? Where did you find your texture maps, if any? List the features of the program, being especially sure to discuss anything new that was not present in earlier projects. The project PDF report should be complete enough so that it fully describes the project.

d.     Two or three pictures showing attractive or informative images of your projects.

Grading is on a scale of 0-10.