OpenGL and WebGL, real-time rendering, 3D display systems, display optics & electronics, IMUs and sensors, tracking, haptics, rendering pipeline, multimodal human perception and depth perception, stereo rendering, presence. Emphasis on VR technology. Hands-on programming assignments. The 3-unit version requires a final course project with a 1-2 page report. The 4-unit version requires a final course project with a 6-8 page conference paper style report. (Course Catalog Entry)
Topics include:
Lectures are Tuesdays and Thursdays 12-1:20 pm in Gates B12.
These lectures are not recorded, because there is no AV equipment in the room. However, based on popular request, we might release video recordings of zoom lectures 2-14 from a previous offering on canvas the same day as the corresponding lecture is taught in person. Note that there may be some differences between that recording and this year's in-person lectures, so plan on attending in person if you can.
If you have questions related to the lecture material, use Ed Discussion or the live zoom office hours of the instructor and the TAs to ask them. Guest lectures towards the end of this quarter will be live-streamed via zoom and then available as video recordings.
Released as video recording together with a set of written instructions every Friday here. Use Ed Discussion or the live zoom TA office hours to ask questions.
Students are required to read additional resources as indicated for each lecture or week. These readings will help get a better intuition and deeper insights into the topics of this course. The readings may also be required to complete tasks for assignments.
Detailed course notes are available for the topics covered in weeks 5 and 6: orientation tracking with inertial measurement units (IMUs) and pose tracking with the VRduino. You can download these notes here:
Other topics of in this class are adequately covered by existing textbooks, even though these are optional for the course. The material covered in the lectures should be self-contained, but it's always a good idea to read up on more details. In particular, parts of the following two textbooks will be useful for EE 267:
Both of these textbooks are freely available online or through the Stanford library, just click on the titles above. We will only be reading a few chapters of these books, so there's no need to purchase them.
The hands-on parts of this course, i.e. labs and assignments, are based on JavaScript, WebGL, and GLSL. It's really important for students to go through tutorials on their own, such as these
You can work in teams of up to 3 students for the project, although most students will probably work by themselves. Submit only one proposal and final report for each team to gradescope. The expected amount of work is relative to the number of team members, so if two teams work on a similar project, we'd expect less work from a smaller team. Before you start to work on the proposal or the report, take a look at some of the past project proposals and reports to give you sense for what's expected.
The project proposal is a 1-2 page document that should contain the following elements: clear motivation of your idea, a discussion of related work along at least 3 scientific references (i.e., scientific papers not blog articles or websites), an overview of what exactly your project is about and what the final goals are, milestones for your team with a timeline and intermediate goals. Once you send us your proposal, we may ask you to revise it and we will assign a project mentor to your team.
The format of the final project report depends on the number of units you take. If you are enrolled in the 3-unit version, please submit a 2-page project report that proves a concise summary of your project and maybe add 1-2 screenshots. If you are taking the 4-unit or 5-unit (WIM) version, your report should look like a short (~6 pages) conference paper. We expect the following sections for this format, which are standard practice for conference papers: abstract, introduction, related work, theory (i.e., your approach), analysis and evaluation, results, discussion and conclusion, references. To make your life easier, we provide an MS Word and a LaTex template that you can use to get started on your report (see syllabus).
Since starter code of new assignments typically include answers of previous assignments, there are NO late days for assignments.
This course requires programming experience (especially JavaScript, C or C++) as well as basic knowledge of linear algebra. We will review most of the required mathematical concepts, but we assume that you have strong programming skills. Homework require JavaScript and GLSL programming. Even though we don't assume prior experience in JavaScript and GLSL, you should be able to understand object-oriented programs and modify them. Previous knowledge of computer graphics or computer vision would be helpful but is not absolutely required.
Courses that may be very helpful, but are not prerequisites:
Related courses at Stanford that you may also find interesting:
A few of the course topics overlap with different parts of related courses.This course is generously supported by AMD and Oculus VR. Thanks for making this happen!
Robert Konrad, Nitish Padmanaban, and Brooke Krajancich have contributed significantly to developing this course - thanks Robert, Nitish, and Brooke!
This webpage is designed by Chi Zhang based on the website for CS231N. We thank Andrej Karparthy, who designed the CS231N website and kindly shared the code with us. The course banner is re-designed based on this image used in a Udacity's post.