Virtual Reality
CP SC 6360

Note: Even though Robotics is listed as a prerequisite for this course, it is not even remotely required. Some programming ablity is useful, as the assignments are largely interfacing with VR gear. C/C++ is the normal language used. Some graphics background is helpful, but not required, and people have been very successful in the past with no graphics/OpenGL experience.

Schedule: MWF 12:55-1:45
Location: WEB - 1460 (this is near the cafe in the new Warnock building)
Instructor: David Johnson
Email: dejohnso@cs.utah.edu
Office: 2875 WEB (ph) 585-1726
Lab:  Assignments will be done in MEB 2172. Access to equipment will be limited and will need to be shared by signing up for time. You will need U card access to this room.
Hours: I am generally available and through appointment.
Text:   I will write up notes and rely on papers.

Objectives

This course will introduce students to the software, hardware, and concepts involved with the current state of the art in virtual reality (or virtual environments). Some of the topics that likely will be presented include: The course will also include readings from the various conferences and journals where Virtual Reality research is published and exposure to various VR toolkits and software systems. Students should finish the course with:

Grading

Your course grade will depend on the following factors:
 Programming Assignments 60%
 Final Project Paper and Talk 15%
 Paper Critiques and Discussion 5%
 Exam and Quizzes 20%

Policies

Late Policy: Zero credit is given for late work, please just submit what you have for partial credit if unfinished. However, you may distribute three late days among your assignments (not the final project). You must notify me of your intent to use this privilege by the original due date. Also, additional leeway can be given for officially sanctioned University activities.

Cheating and Plagiarism: Students are encouraged to discuss approaches with one another and to help one another with computer infrastructure questions, but not to share or view another person’s code. Some assignments will be done in small groups, in this case full collaboration is allowed within the group.

This is a graduate level course. As such, students are expected to behave in a professional manner.

Accommodations: The University of Utah seeks to provide equal access to its programs, services and activities for people with disabilities. If you will need accommodations in the class, reasonable prior notice needs to be given to the Center for Disability Services, 162 Union Building, 581-5020 (V/TDD). CDS will work with you and the instructor to make arrangements for accommodations.

Schedule (to be adjusted as needed)

Week 1: Jan 10, 12, 14
  Intro to VR
     1) VR intro/course intro/
     2) VR history
     3) Paper critique 1: Sutherland "The Ultimate Display" and Brooks "What's Real About Virtual Reality"

Week 2: Jan. 17 (no class), 19, 21
     1) 17th - no class, MLK Jr. Day
  Displays and Graphics
     2) Intro to VR Graphics - Human capabilities/Stereo displays      
     3) Graphics pipeline review
         You should go through some of these nice OpenGL tutorials

Week 3: Jan. 24, 26, 28
     1) More on the graphics pipeline - transformations, lighting, etc.
     2) Scene Graphs/Display Accelerations/Frustum clipping/Image impostors and billboards
          Assignment 1:
     Scene graph techniques 
     3) Paper critique 2: Does CG quality matter? and A pit paper.

Week 4: Jan. 31, Feb. 2, 4
     1) Projections and view frustums
          My view frustum notes 
	  Nate's OpenGL projection tutor (compiled for windows)
  Tracking
     2+3)Tracking technologies
	      - mechanical
	      - magnetic (review AC/DC current, induction, etc)
	      - ultrasound
	      - optical
	      My tracking notes

Week 5: Feb 7, 9, 11
     1) More tracking
	  Assignment 2: Head-tracked View Frustums
     2) Merging measurements
             - filtering
	     - gaussians
	     - estimation theory
     3) Kalman filters for tracking

Week 6: Feb. 14, 16, 18
     3) Quiz 1/ Paper critique 3: Constellation
                       We won't discuss, but it is useful - A tracking review article 
  Simulation
     1) Collision Detection for Primitives
           - box, sphere, triangle
          My collision notes
     2) GJK - a good GJK ref
     
Week 7: Feb. 21 (no class), 23, 25
     1) No class	  
     2) Hierarchical Collision Detection
     3) Collision Response
          Penalty Methods and Numerical Stability
          - some helpful readings
          - SIGGRAPH 2001 course
          - A nice comparison and code snippets for numerical integrators

Week 8: Feb. 28, Mar. 2, 4
     1) Collision Response - Impulse Methods
	  Assignment 3: 2D Physics Engine	  
     2) Constraints in Simulation 
     3) More on GJK and collision reponse
         Some resources
	  - Some step-by-step instructions for implementing GJK www.codezealot.org/archives/88
	  - The Erin Catto's GDC conference presentations on GJK and
     impulse stuff (www.box2d.org)
          - numerical integration discussion (wiki.vdrift.net/Numerical_Integration)


Week 9: Mar. 7, 9, 11
  HCI
     1) Affordances/Menus
     2) Navigation and Selection
        -VR Interface survey

     3) Paper critiques: Papers from recent 3DUI
        - http://hal.archives-ouvertes.fr/docs/00/56/74/37/PDF/joyman-cameraReady.pdf
        - http://www-users.cs.umn.edu/~interran/papers/3dui07.pdf
		       
Week 10: Mar. 14, 16, 18
 Haptics and Touch
     1) Haptics
          - background reading 
     2) Haptics in VR
     3) User studies

Week 11: Mar. 21, 23, 25
     Spring Break

Week 12: Mar. 28, 30, Apr. 1
          New due date for Assignment 3 
     1) Final project discussion 
     2) Quiz 2
     3) HMD fieldtrip

Week 13: Apr. 4, 6, 8
     1) Lab tour/equipment demo
     2) Final project proposal pitches
         Assignment 4: Selection and Haptics
         Tracker hints
     3) Artificial Life

Week 14: Apr. 11, 13, 15
  Augmented Reality       
     1) Introduction and basic concepts
     2) Camera Localization
     3) Project consult - project progress report due. 
     
Week 15: Apr. 18, 20, 22
     1) Networked Virtual Worlds/Second Life
  Applications
     2) VR Therapy
     3) VR Visualization

Week 16: Apr. 25, 27
     1) Final review
     2) Mini final
     3) project consult

Final period: Thursday, May 5 1-3 P.M. (Project reports)