CS 410/510: Virtual Reality

Instructor: Ehsan Aryafar
Picture Course Description and Objectives:

This is an introductory course to virtual reality. Upon successful completion of the course, students will be able to understand the funadamentals of development of virtual reality worlds, including mathematical basis of motion and physics in VR worlds, human visual perception, design practices to enable immersive experiences for users, and development on heterogeneous device hardware. The course also contains a final project where students develop their own VR worlds based on the design practices discussed during the course.


Prerequisites and Computer Access Requirements:
We will use the Unity software framework to create VR worlds and games. Unity engine offers a primary scripting in C#. Students are expected to either be familiar with C# or be able to quickly pick up scirpting in C# (we cover the basics). Also, the course contains a few lab based classes. Students are expected to have access to a laptop or desktop that can run basic unity. For computer specifications, please consult the laptop policy adopted by the department. Note that a desktop with these configurations is also fine. We will provide instructions on how to freely download unity and develop software with that later in the course.

Textbook:
Required and Reference Textbooks: We closely follow the following textbook:
"Virtual Reality" by Steven M. Lavalle; Here is the free online link.

Syllabus:
Course syllabus can be downloaded at the following link.

Presentation Slides:
I have made all my course material publicly available online.
Lecture 1: Course Overview: Lec1.pdf.
Lecture 2: Overview of VR Hardware and Software (Lavalle, Ch.1-2): Lec2.pdf.
Lecture 3: Math Background + Unity Installation: Lec3.pdf.
Lecture 4: Geometry of Virtual Worlds (Lavalle, Ch.3): Lec4.pdf.
Lecture 5: Light and Optics (Lavalle, Ch.4): Lec5.pdf.
Lecture 6: The Psychology of Human Vision (Lavalle, Ch.5): Lec6.pdf.
Lecture 7: Visual Perception (Lavalle, Ch.6): Lec7.pdf.
Lecture 8: Visual Rendering (Lavalle, Ch.7): Lec8.pdf.
Lecture 9: Motion in Real and Virtual Worlds (Lavalle, Ch.8): Lec9.pdf.
Lecture 10: Tracking (Lavalle, Ch.9): Lec10.pdf.
Lecture 11: Interaction (Lavalle, Ch.10): Lec11.pdf.
Lab 1: Intro to Unity: Lab1.pdf.
Lab 2: Create a VR App on Unity: Lab2.pdf.
Lab 3: WebXR: Lab3.pdf.
Lab 4: Augmented Reality and AR Backend: Lab4.pdf.
Lab 5: Create an AR App on Unity: Lab5.pdf.

Labs 2 and 5 will be held in a flipped classroom format. Students are expected to watch the recordings for these labs from YouTube (Lab 2 YouTube link, Lab 5 YouTube link) and come prepared to class for debugging.

Course Structure and Grading:
Class Participation: 10%
Homework: 40%
Project Presentation: 30%
Exam: 20%

Summer Term Note: If you are taking this course in a summer term, then the weight of Homework and Exam are 60% and 30%, respectively. The summer term is two weeks shorter than normal terms, and hence the course would not have the project presentation (or final project) component.

Participation: Students who will take the class asynchronously need to let the instructor know. Students who attend regularly but miss more than three sessions need to let the instructor know of why they have missed the class. Students should treat each other with respect at all times.
Lab Assignments: There will be four homework assignments, two of these assignments will rely on Unity. Assignment are due one or two weeks after they are assigned.
Project Presentation: The course contains a project, in which students are expected to work on a project and present it during the last course sessions. There are many different project modes ranging from paper presentation to building VR/AR applications. I created short videos of students who chose to do VR/AR app development as part of their course project in fall 2020 (YouTube link) and winter 2021 (YouTube link).
Exam: There will be a single in-class exam. The exam will be based on the topics (lectures) that are covered in the class. The exam will be open-book and open-notes.

Some Useful Links to Online Tutorials for Making VR/AR Applications with Unity:
Make VR Games in Unity (2022 Tutorial).
Oculus Documentation for Unity.
Unity Tutorial for VR.
How to Create Water Effects in Unity - Water Blending Tutorial.
Smooth Portals in Unity.
How to Make Terrain in Unity.
How to Make a VR Game in 2021 - New Input System and OpenXR Support.
VR Hands Part 1.
VR Hands Part 2.
Quick Intro to Blender.

Sexual harassment, sexual assault, dating/domestic violence and stalking:
Portland State is committed to providing an environment free of all forms of prohibited discrimination and sexual harassment (sexual assault, domestic and dating violence, and gender or sex-based harassment and stalking). If you have experienced any form of gender or sex-based discrimination or sexual harassment, know that help and support are available. PSU has staff members trained to support survivors in navigating campus life, accessing health and counseling services, providing academic and on-housing accommodations, helping with legal protective orders, and more. Information about PSU’s support services on campus, including confidential services and reporting options, can be found on PSU’s Sexual Misconduct Prevention and Response website at: http://www.pdx.edu/sexual-assault/get-help or you may call a confidential IPV Advocate at 503-725-5672. You may report any incident of discrimination or discriminatory harassment, including sexual harassment, to either the Office of Equity and Compliance or the Office of the Dean of Student Life.

Please be aware that all PSU faculty members and instructors are required to report information of an incident that may constitute prohibited discrimination, including sexual harassment and sexual violence. This means that if you tell me about a situation of sexual harassment or sexual violence that may have violated university policy or student code of conduct, I have to share the information with my supervisor, the University’s Title IX Coordinator or the Office of the Dean of Student Life. For more information about Title IX please complete the required student module Creating a Safe Campus in your D2L.

Disability accommodations:
PSU values diversity and inclusion; we are committed to fostering mutual respect and full participation for all students. My goal is to create a learning environment that is equitable, useable, inclusive, and welcoming. If any aspects of instruction or course design result in barriers to your inclusion or learning, please notify me. The Disability Resource Center (DRC) provides reasonable accommodations for students who encounter barriers in the learning environment.

If you have, or think you may have, a disability that may affect your work in this class and feel you need accommodations, contact the Disability Resource Center to schedule an appointment and initiate a conversation about reasonable accommodations. The DRC is located in 116 Smith Memorial Student Union, 503-725-4150, drc@pdx.edu, https://www.pdx.edu/drc.
-->