3D user interfaces are already essential to fields as diverse as visualization and video games, and are becoming even more important as personal computer and smartphone user interfaces incorporate increasingly powerful 3D technology. COMS W4172 provides an introduction to this exciting way of interacting with computers, with an emphasis on methods for designing and developing effective 3D user interfaces. The course's name acknowledges the major role played in our projects by augmented reality—dynamically integrating spatially registered 3D virtual media with our experience of the real world. We will explore:
Your grade will be based on:
There will be no final exam, but we hope you'll be having too much fun doing the final project to miss it.
Prerequisites are at least one of the following:
Please don't hesitate to talk with me to find out if this is the right course for you! Prior familiarity with the 3D math used in COMS W4160 will be helpful, but is not required: the course will include a review of the 3D math needed to understand the material and do the assignments.
Carmine Elvezio (ce2236 [AT] columbia [DOT] edu) is a CS PhD student in the Computer Graphics and User Interfaces Lab at Columbia University, studying AR/VR/MR, 3D graphics, and interaction and visualization techniques. He develops 3D systems across several domains including medicine, remote maintenance, space, music, and rehabilitation, working with many technologies including Microsoft HoloLens, Oculus Rift, Unity, Unreal, and OpenGL. He has contributed to a number of open-source frameworks, including MercuryMessaging and GoblinXNA. He will hold office hours online Thursday 10:00am–11:00am.
Janane Sekaran (jgs2175 [AT] columbia [DOT] edu) is a CS MS student focusing on AR and VR development. She is currently a part of the Computer Graphics and User Interfaces Lab, working on multiplayer AR games using Unity. She will hold office hours online Friday 1:00pm–2:00pm.
Lea Broudo (lrb2167 [AT] columbia [DOT] edu) is a CS undergrad senior in SEAS focusing on computer graphics and VR development. She believes programming is one of the best artistic mediums out there, and is especially interested in coding for animation using Maya, as well as developing VR and AR projects in Unity. She will hold office hours online Tuesday noon–1:00pm.
J. LaViola Jr., E. Kruijff, R. McMahan, D. Bowman, and I. Poupyrev. 3D User Interfaces: Theory and Practice, 2nd Edition. Addison-Wesley, Boston, 2017, ISBN-13 978-0-13-403432-4 [required].
D. Schmalstieg and T. Höllerer. Augmented Reality: Principles and Practice. Addison-Wesley, Boston, 2016, ISBN-13 978-0-32-188357-5 [required].
Additional reading material will be announced in the
syllabus and in class.
For those assignments that involve programming, we will use Unity (initially Unity 2019.4.18f1, possibly progressing to later versions as the semester unfolds), which supports the development of 3D applications for desktop, hand-held, and head-worn displays. To enable augmented reality, in which the user's perception of the surrounding real world is integrated with geometrically aligned 3D media, we will rely on either (a) PTC Vuforia Engine (initially Vuforia 9.6), a computer-vision–based software tracking library that works with Unity, (b) Unity AR Foundation, or (c) direct use of Google ARCore or Apple ARKit. All of these can track the position and orientation of known static images (though Vuforia does this the best), can detect planar surfaces in the environment, and can determine their position and orientation relative to the environment, when run on appropriate Android and/or iOS devices.
You will be deploying your apps to your own handheld Android and iOS devices with cameras (smartphones and tablets). You will also have the option of deploying some of your work to Oculus Quest 1 and 2 headsets and Windows Mixed Reality headsets that we will provide.
For additional information, please see the following documentation that we've prepared for the course: CS W4172 IA Resource Page, Installing Unity, and Developing with Unity.
You are responsible for all material covered in class and all the assigned reading listed in the syllabus, including any changes or additions announced in class. If you miss a class, please talk to someone who didn't. (Copies of each class's slides will be linked to the syllabus.)
Course material will be found on the web through CourseWorks, and the syllabus and assignments will be linked through http://graphics.cs.columbia.edu/courses/csw4172/.
Each assignment should be submitted electronically through CourseWorks, before the beginning of the class (1:10pm) on the day the assignment is due. If you don't submit an assignment on time, the following lateness policy applies.
All assignments are due at 1:10pm on the scheduled due date before, not during or after, class. To make the deadlines more manageable, each student will be allowed four “late days” during the semester for which lateness will not be penalized. However, no late days may be applied to the final project, and only one late day may be applied to the first assignment. Otherwise, your four late days may be used as you see fit.
Anything turned in past the start of class until midnight the next day is one day late. Every (partial) day thereafter that an assignment is late, including weekends and holidays, counts as an additional late day.
Absolutely no late work will be accepted beyond that accounted for by your late days. If you're not done on time, please be sure to turn in whatever you have completed on time to receive partial credit. Now, please go back and read this section over again!
Please make sure that you have read the Department of Computer Science Policies and Procedures Regarding Academic Honesty. Collaboration on any assignment (except as an approved part of team projects) is, as in all Columbia courses, strictly prohibited. Infractions will be reported to the Department of Computer Science Academic Committee and referred to the Deans.
For example, this means that if you use GitHub
(or any similar facility) to maintain material for an individual or
team assignment, you must use a private repository
whose access is appropriately restricted. (Note that the GitHub
Student Developer Pack is free for registered students and
allows the creation of an unlimited number of private repositories.)
Similarly, videos should also be protected.