Homework4W14

From Immersive Visualization Lab Wiki
Revision as of 21:43, 25 February 2014 by Jschulze (Talk | contribs)

Jump to: navigation, search

Contents

Homework Assignment 4: Final Project

For this assignment you can obtain 100 points, plus up to 10 points for extra credit.

This homework assignment is due on March 20th, 2014 at 3pm in lab 260. Matteo and Thinh are going to have a Q&A session on Wednesday, February 26th at 4pm in lab 260.

The goal of this project is to create a 3D user interface for any one or a combination of the three input devices used in this course (Kinect, Hydra, Leap). The user interface needs to implement at least one instance of each of the following universal 3D interaction tasks discussed in class: selection, manipulation, navigation, way finding, travel, system control. Your application is not allowed to use input devices other than those above mentioned. Specifically, you are not allowed to use keyboard or mouse.

If you decide to use the Razer Hydra, your application needs to use no more than one button on each controller. This is to encourage you to make the application easier to use, and to think about system control issues.

You are welcome to come up with any 3D interaction task that you get approved by the course staff.

Your application needs to use a physics engine (we recommend Bullet), unless it absolutely doesn't make sense.

Again, unless it absolutely doesn't make sense, your application needs to support shadows. OSG has its own shadow rendering feature. Shadows help tremendously with the placement of 3D shapes in a 3D world, if no actual 3D display is used.

If you do not come up with your own task, the following default task applies.

Default User Interaction Task: 3D Modeling Tool

Implement a simple software tool for 3D modeling. The task is to model in 3D the scene of an image of your choice. A good approach to find suitable images is to do a Google image search. If you search for "still life" you will find thousands of images. Pick one of a 3D scene with multiple 3D objects.

Write a 3D modeling tool to allow the user to model the objects in the picture with. It is sufficient to offer a few of the standard OSG shapes, as long as their sizes can be changed.

You will need to implement a grouping function, which will group multiple objects together, so that they can be moved around as a unit.

You are encouraged to use textures as images on the 3D geometry you create, but only if the texture was either selected from a list of stored textures, or if the user draws it within the application.

Have a movable point (or spot) light source in the scene that the user can move around; this light source needs to be visually represented somehow, for instance by drawing a sphere in its location.

You need to have camera (or other navigation) controls, so that the user can place and orient the objects to match their appearance in the picture.

Besides geometry creation and material property functions, another useful function is a replication function to duplicate an object or group of objects. Implement it.

A good example for what this could look like is in this MakeVR video at time point 3:32, where a fire hydrant is created from multiple objects using the Hydra-successor Stem.

Alternative Ideas

  • 3D Angry Birds game: with your physics engine, you can easily have the user launch birds or simpler shapes within a 3D world, with the goal of destroying structures consisting of basic geometric elements. Hydra or Leap should work well for this game.
  • 3D Pinball: This could be very interesting: instead of two paddles, the player might have an array of square blocks to shoot up to hit the ball into a 3D obstacle course. This might work particularly well with the Leap.
  • 3D Minigolf: Using the Kinect, evaluate a golf swing and hit a golf ball into a small obstacle course.

Grading

Besides the implementation of the demo program, this project requires weekly blog updates with at least one paragraph with a progress report, and at least one picture of the state of the program. The deadlines for the blog updates are on Wednesday evenings at 11:59pm. Updates are expected on the following dates: 2/26, 3/5, 3/12, 3/19. The first blog update on 2/26 needs to contain a link to the picture you are going to model in 3D. The last blog update on 3/19 needs to contain a picture showing the 3D-modeled scene representing the image picked in the first week.

The maximum number of points for the various components of this project are as follows:

  • Blog: 10 Points
  • Technical quality: 60 Points
  • Creativity: 20 Points
  • Independent, subjective UI evaluation: 10 Points
  • Extra credit: 10 Points

The blog gets graded by how complete it is. Technical and creativity score will be determined by the course staff's objective and subjective opinion of the interface. The UI evaluation aims at usability, which includes how easy it is to learn the controls. This will be decided by an independent jury member who is familiar with 3D user interfaces in general, but not with your interface specifically.

You can use any cloud-based Blog tool you'd like (such as Blogger or WordPress), as long as you can share the blog's URL with instructor, TA and tutor by email. The UCSD Ted tool supports blogs as well, feel free to use it.

Extra Credit (Max. 10 Points)

You can achieve extra credit for the following things:

  • Camera path editor: define of a series of camera positions/orientations, and allow playback of a smooth camera motion along the path by interpolating between the camera positions. (5 points)
  • Save function (particularly for the default task): allow saving your 3D model to a file on disk, and demonstrate that it can be loaded back in later, with the same ability to edit as before. (5 points)
  • Video: shoot a ~2 minute video of your application, demonstrating all of its features. It must have a title slide and either subtitles or a voice-over. Upload it to the internet (eg, Youtube), and send the URL to instructor, TA and tutor. (5 points)