Project Overview

The purpose of the project is to give you the opportunity to explore some topic in 3D user interface software in more depth than in lecture. You are asked to propose a well grounded and motivated (and hopefully creative!) project, implement your idea, and give a final presentation of your project. The project counts for 40% of the final grade, so it should represent a substantial effort, both in terms of creativity and implementation.

You have a lot of freedom to come up with a project idea.  Additionally, you can optionally choose to use development platforms other than Unity, such as Unreal or Babylon.js. 

Whatever you choose to do, your project should represent a substantial implementation effort that is motivated by, and grounded in, the principles we discuss in the class. Your idea should address a clear need, you should create an experience to demonstrate it, and your implementation of both should be polished. In other words, just doing a different an interaction technique that doesn’t meet some need, or that has sloppy mechanics or feedback, is not sufficient.

As a starting point to finding a topic, note that the class divides 3D interaction into three major categories: selection and manipulation, navigation and locomotion, and system control. Starting with one of those categories, you should search the literature, perhaps starting with recent conferences on VR and 3D interaction. See Project Ideas for more information about how to come up with a proposal. Feel free to run ideas by the instructor if you want early feedback.

What not to do: don’t come up with an idea that’s just about building some application, like an 3D game or a immersive experience, unless you’re using that application to demonstrate an interesting, creative, and substantial, contribution to 3D interface software, such as new interaction techniques, interfaces, toolkit capabilities, and so forth. Remember, this class is about creating compelling user interactions, not just app building or gluing together existing software components.

The course project is intended to be done by a team of two people.  However, teams of three or individual projects may be approved with instructor permission.  Note that the expectations for the project's complexity will scale according to the number of people on the team. 

If you’re looking for a partner, using the #project channel on Slack may be a good way to match people and project ideas into teams.  Start right now!  You should begin immediately looking for a project partner and discussing possible project ideas. I suggest reading carefully through this entire document so that you understand the requirements and grading criteria for all parts of the assignment before deciding on a project topic.

Please note that I expect all teams to behave professionally with each other, and to share in the obligations of the project equally. See the section on Teamwork Expectations at the end of this document for more details. In situations where work is not shared equitably, overall project grades for individual team members may be adjusted to reflect this.

It should go without saying, but academic honesty and proper citations are essential with this assignment. Bulk copying from a published research paper (even if it is your own work), website, etc., is unacceptable, whether cited or not. Properly citing others’ work and acknowledging external references is required in all cases.

The breakdown of deliverables and grading for the project is given below.

 

Milestone 1: Proposal

Your team should begin brainstorming on possible project ideas as soon as possible. Please look at the project ideas page and look ahead in the class topics and readings, as well as browse relevant conference proceedings. Other classes you’re currently taking, or have taken, might also provide inspiration. You’re welcome to send initial project ideas to the instructor for feedback.

By this milestone, you must deliver a brief writeup that describes the project you’re planning to do. This is a preliminary proposal, because the instructor and TA may give comments or feedback about how to modify your project. For example, we may suggest changes in direction to ensure that your project aligns better with the learning goals of the class, or may suggest increasing or decreasing the complexity of the project. Proposals that are out-of-scope for the class, or that represent an insufficient amount of work, will be disallowed.

The deliverable for this phase of the project is a brief one-page description in PDF format that outlines the motivation for the project (why it is a good idea, ideally grounded in what you’ve learned from the lectures, readings, or outside materials), and details on what exactly your project will do (a description of the system, or interaction technique, or whatever, as well as some details of how you think you’ll implement it).  You can feel free to include a few citations if they help you motivate or describe your project, but these aren’t required. Images or figures may be useful in helping you communicate what exactly your proposed system will do.

This deliverable should be submitted by only one of the team members. Be sure to give your project a title and list the names of all partners on the team in your submission. Completing this milestone will account for 5% of your project grade.

 

Milestone 2: Fast forward presentation

After submitting your proposal, your team should prepare a brief presentation to pitch your project idea to the class.  Each presentation should be submitted as a video that is no longer than 60 seconds in length.  We will be viewing these project pitches during class, so everyone can get a sense of what others in the class are working on.  Completing this milestone will account for 5% of your project grade.

 

Milestone 3: Implementation

Milestone 3 is the completion of the implementation of your project. As noted above, you have complete freedom in choosing the development environment (language, platform, tools) if your project requires it. The only requirement is that you be able to fully describe that development environment and make sure you have some way to demonstrate your project at the end of the semester (see Milestone 4).

For this milestone you’ll submit the following deliverables:

  • All source code and required libraries for your project.
  • Detailed documentation in a readme markdown file, similar to the documentation provided with the assignments.  This should include a description of the work you performed (what specifically you built), a clear description of your development environment, and links to any 3rd party libraries or code that you used. You may also include screenshots or pictures of your implementation working, where appropriate. If you use code written by others, be especially clear to indicate which code you actually wrote.
  • An executable version that we can run to grade your project (e.g., APK file).  If you are using a more complex VR setup that makes it difficult to submit an executable file, then you can schedule a time to give a live demo to the instructor.

Only one person should submit, but be sure to include all team members’ names.

The implementation portion of the project will count for 80% of the overall project grade. This is the milestone in which we evaluate what your project actually does:

  • UI Contribution (25). How significant is the UI contribution of the project? Is the project simply an application, or does it have a substantial focus on new UI technology? How novel and creative is the system?
  • Technical Complexity (25). Projects should represent a substantial implementation effort.
  • Usability (25). Does the project work as intended?  Are there any serious usability problems or bugs? 
  • Documentation (5).  Are all the functions sufficiently described in the documentation?

In some cases, we may award bonus points for extreme novelty or extra “polish” (such as great graphical design, or implementation of extra features that, while not contributing to the UI portion of the work, make it more useful or finished).

 

Milestone 4: Project presentation

During the final exam period, students will be responsible for a presentation on their project. This will include an overview of your project’s motivation, design, and implementation.

To complete this milestone, you should create a short presentation video (3-4 minutes).  The presentation should concisely describe what you did and should include video clips of your application. You can capture these video clips using SideQuest, Oculus screen casting, or another method.  I recommend you embed these video clips in your slides and then record your entire presentation using Zoom, OBS, or similar software. The presentation videos will be assembled and shown to the class during the final exam period.

The presentation will count for 10% of the overall project grade. In this milestone we are only grading for the quality of the presentation itself, not the overall quality of your system. Presentations will be graded on the following basis:

  • Clarity. Are the concepts and ideas presented clearly and cogently? Are important details skipped? Are appropriate visual aids used?
  • Organization. Is the presentation well structured? Does it jump all over the place? Is it repetitive?
  • Pacing. Does the presentation fit well into the allotted time? Is it too rushed? Are the presenters "stretching" the material to fill time?
  • Motivation. Presentations should be understandable by everyone in the class, not just your team members. Do you set up and motivate your work well? Do you explain why it’s a good idea?

You may want to do a practice talk or two before recording, to make sure your timing is right and that your presentation does a good job of conveying your project. You do not need to worry about everything being “perfect” (in terms of speaking, “umms” and pauses, etc …) but you should appear prepared and the pacing should be good. You also should not feel like you need to create the videos in “one shot."  You can feel free to capture content, pause, do some more, and then piece the parts together.

 

Teamwork Expectations

It should go without saying that in a team project, I expect everyone to contribute equally. This doesn’t mean that everyone has to do the same job: some may take on more responsibility for the writing, others for the coding, and so forth. But it does mean that I expect each teammate to exhibit an appropriate level of professionalism, responsiveness to their teammates, and overall sharing of the obligations of the project.

The first step toward a successful project is setting expectations appropriately. Talk to your partner early about workload and division of responsibilities. If you will be out attending a conference, let your partner know beforehand so that he or she can plan appropriately.

If you feel that a member of your project team isn’t carrying his or her weight, then the first step is to speak to that person directly. I strongly prefer to rely on teammates working through these problems themselves. However, if you feel that you’ve exhausted these options, please make an appointment for your team to speak to me directly.

 

IEEE VR 3D User Interfaces Contest (Optional)

Every year, the IEEE Conference on Virtual Reality and 3D User Interfaces (IEEE VR) holds a contest for novel 3D user interfaces.  In the past, some student teams have submitted their projects and had them accepted to the conference!  This is the largest and most prestigious academic conference in the VR field.  The contest submission also counts as a publication, which could be a great opportunity to add to a resume or CV.

You can found out more about the contest on the IEEE VR website Links to an external site..  The registration deadline is mid-December, and the actual submission is not due until January.  You can see examples of previous projects from this class here:

Note that participating in the contest in purely optional and will not affect your class grade.