CS 4621 Final Project
Proposal Due: Friday Nov 2, 2018 at 11:59PM
Milestone Presentations: Monday Nov 26, 2018 during lecture
Final Presentation: Sunday Dec 9, 2018 at 2PM, Hollister 206
Project Report Due: TBD
NOTE: These deadlines do not have slip days.
Work in groups of 3 to 5.
Overview
Now that you have some experience using WebGL and JavaScript to create interactive graphics applications, you will spend the rest of the semester working on an application of your own design. What your program does is left up to you, but it must satisfy the following requirements:
- Your application must render 2D or 3D images using WebGL.
- You may not use graphics libraries such as three.js or d3.js. Convenience libraries such as jQuery and glMatrix are acceptable.
- Your application must incorporate at least 2 of the following areas of computer graphics: imaging, interaction, modeling, rendering, and animation.
- Your application must be moderately complex. This means it should have more features than the other programming assignments in this course.
Example projects
Listed below are some examples of acceptable final projects. This is by no means a complete list, and you should feel free to come up with your own project, but these examples demonstrate the complexity we are expecting. If you would like some resources describing how to approach one of the examples below, please talk to course staff.
-
A modeling system that allows simple editing of triangle meshes and spline or subdivision surfaces (modeling) with care given to a user interface that allows all manipulations to be done intuitively (interaction).
-
A Minecraft-like world that allows the user to roam a procedurally-generated world (modeling) and is able to efficiently render large scenes (rendering).
-
A game that allows the user to roam a manually specified world and has fancy shading effects (rendering) and has an interactive level editor (interaction). You may build on PPA3 for this project, but if you do, we expect more features to be added.
-
A procedural plant modeling system based on L-systems (modeling) with interactive control over parameters and constraints (interaction) or some fancy realistic rendering techniques (rendering).
-
An artistic rendering system that simulates some traditional medium (pen-and-ink, watercolor, charcoal, ...) under interactive control (rendering, interaction).
-
Some kind of physics simulation, such as a particle system, a system of rigid bodies, a deformable object such as cloth, or fluid simulation (animation), with either associated interactive authoring tools (to allow setting up initial conditions, interacting with the running simulation -- interaction) or some shading techniques for realistic results (rendering).
-
A volume renderer for medical data that supports direct volume rendering (imaging) and also either extraction of isosurfaces from the volumes (modeling) or an interactive system for adjusting the rendering parameters, extracting slices, etc. (interaction).
-
A blobby modeling system based on implicit surfaces (modeling) that are either triangulated for display or ray traced directly (rendering), with simple tools to position the basis functions.
-
A simple image editing program that can apply filters or modifications to existing images (imaging) or allows the user to draw on top of them (interaction).
-
A tool for creating 2D or 3D animations from imported assets (3D meshes, images, etc.) that allows the user to set transformation keyframes and interpolates between them (interaction, animation).
Project Proposals and Forming Groups
Once you have an idea for your project, you will submit a 1-2 page project proposal that describes your idea and explains how it relates to 2 of the areas listed above. You may include figures in the proposal as well. The course staff will read your proposals and provide feedback to make sure that the project has the right scope. They will also point you towards resources that may help you as you design your application. As a result, your proposal does not have to be highly detailed, but it should explain the major features of your program and how you plan to implement them.
If you would like to choose your team members, you are welcome to do so. In this case, your group will submit a single project proposal. Otherwise, you may submit a project proposal individually, and the course staff will then add you to a team based on the similarity of the submitted project proposals.
Meetings with the Course Staffs
You will meet the course staffs for at least two times to talk about your final project. After you submit your proposals and form the groups, we will schedule a meeting for each group in the week of November 5th. In this initial project meeting, we will validate your project ideas and give advice on how to achieve your goals. Afterwards, we will set up another meeting in the week of November 19th, before the milestone presentation. In this meeting, we will evaluate your progress and help you with the problems you have encountered. You are welcome to schedule extra meetings with the course staffs if you are in need of help.
Milestone Presentations
After you have had some time to develop your project, your team will give a presentation during the usual 4621 lecture period. Each group will have about 15 minutes to present their progress. All group members are expected to contribute to the presentation in some way. Presentations should include the following:
- An introduction to your application. What are your goals for the project? What are the different components of your program? How do they relate to at least 2 of the 5 areas of computer graphics listed above?
- An explanation of your progress so far. What has your group implemented? What are some of the challenges you have faced? You may wish to explain some of the technical details of your program here.
- A live demo of your project in its current state. It is okay if it lacks polish, but some visual demonstration of your progress is expected.
- Your plans for project completion. What is still left to accomplish? How will you complete these tasks?
Final Presentation and Report
The final piece of the project is the final presentation and the project report, which consists of a live demo, a writeup and individual project evaluations.
The final presentation is on Sunday Dec 9th at 2:00PM, at Hollister Hall 206. It is scheduled as a final exam slot, so every team member is expected to participate and show off your project. Your final presentation should include the following:
- A restatement of the goals of your project.
- A description of what you accomplished, which features you implemented, and how they relate to at least 2 of the 5 areas of computer graphics listed above.
- Any particular technical details that your team implemented (e.g., rendering to a cube map texture, mapping mouse clicks to 3D, relevant mathematical equations, etc.).
- A live demo showing off all the critical features you have implemented.
You will submit your code and project report on CMS. The project report is a 2-4 page document which includes the following:
- A restatement of the goals of your project.
- A description of what you accomplished, which features you implemented, and how they relate to at least 2 of the 5 areas of computer graphics listed above.
- Any particular technical details that your team implemented (e.g., rendering to a cube map texture, mapping mouse clicks to 3D, relevant mathematical equations, etc.).
- Any special instructions needed to run your code (e.g., running a local server, setting up a TypeScript compiler, etc.).
- References of any resources used to create your project (JavaScript libraries, images, models, technical papers, blogs, etc.).
Finally, each team member will submit an individual project evaluation. This is a survey in which you are asked to rank each team members' contributions to the final product.