======Virtual Environments, Spring 2011====== ===== Basic Info ===== * **Instructor: ** [[http://www.ru.is/kennarar/hannes|Hannes Högni Vilhjálmsson]] * **Contact: ** Email hannes[ ]ru.is * **Theory Lectures: ** Mondays and Wednesdays at 15:00 - 17:00 (AB3) * **Technical Lectures/Demos: ** Tuesdays and Thursdays at 11:00 - 13:00 (AB3) * **Labs: ** Tuesdays and Thursdays 14-17 (LA2) ===== Description ===== This is a comprehensive course in both the theory and practice of Virtual Environments (VEs). Virtual Environments are simulations that engage the senses of users through real-time 3D graphics, audio and interaction to create an experience of presence within an artificial world. VEs are used in a variety of settings, including training, education, health, online collaboration, scientific visualization and entertainment. Their use is becoming more and more pervasive as hardware gets more capable of simulating reality in real-time (including graphics, physics and intelligent behavior). As part of the theoretical overview, the course will introduce the history of VEs, what kind of problems VEs have proven to be best at addressing, what are their shown limitations, what models of human-computer interaction apply to VEs and how these models are evolving and pushing the state-of-the-art in interactivity. The technical portion of the course will lead students through the construction and population of VEs in a very hands-on manner, covering topics such as world representation, real-time graphics and simulation issues, networked environments, avatars and interactive characters, event scripting and AI control, special real-time visual and aural effects and intuitive user interfaces. ===== Learning Outcome ===== On completion of the course students should: * Know what constitutes a virtual environment, why they have been created throughout history and how they are used today. * Be able to think critically about virtual environments as a user interface and design effective environments. * Understand how humans construct a mental image of their environment using visual cues and how this can be exploited. * Know the difference between presence and immersion, and understand how these may be measured. * Understand the principles of effective action in virtual environments, including concepts such as flow, implicit constraints, explicit constraints and contextual action. * Be familiar with the roles of characters in virtual environments and the common ways to make them autonomous and to animate them. * Know what an avatar is and understand the issues that relate to level of control. * Be familiar with the several techniques for constructing visual realism in virtual environments. * Be able to create an interactive virtual environment in a scripting language and use scene graphs, models, terrain, lights, texturing, collision detection, animation, heads-up-display, shaders and physics. ===== Discussion Preparation ===== For some of the theoretical sessions, students need to come particularily well prepared. They will need to study certain materials and be ready to participate in exercises or small group discussions during the class. Student contribution to these classes will count towards the participation grade. ^Material^Description^Be prepared by^ |[[PREP1]]|Exploration of several different 3D environments | Mon May 2 | |[[PREP2]]|What is "presence", where do you experience it? | Wed May 4 | |[[PREP3]]|Characters and archetypes that you know | Wed May 11 | ===== Assignments ===== During the semester, students should complete one programming assignments and a final programming project. These are all group projects, but M.Sc. level students can at most be in 2 person groups. Students discuss final project ideas with instructor, submit a proposal, submit a working demonstration of the project in the next to last week and turn in a report on the project in the last week. Everything that has to be turned in, should arrive no later than at 23:59 on the due date, or else incur 10% penalty for each additional day, including weekends and holidays. ^Assignment^Description^Material^Assigned^Due^Weight^Results^ |[[PROG1]]|Programming Assignment| Weeks 1-3|Thu May 12| Mon May 23|20%| | |[[FP-PROP]]|Submission of Final Project Proposal| All | - |Tue May 17|5%| | |[[FP]]|Final Programming Project | All | - | Thu Jun 2|30%| | |[[FP-REP]]|Written Final Project Report| FP | - | Fri Jun 10 |5%| | ^ Total 60% ^^^^^^^ ===== Online Forum ===== The course has a dedicated online forum where students can post questions, comments and useful information. Note that everyone should register, in their own name, on this forum before posting (simply go to the address below to register). ^Host^Forum Name^Our Board^ |ProBoards|[[http://ruclasses.proboards.com]]/|[[http://ruclasses.proboards.com/index.cgi?board=ve2011|Virtual Environments 2011]]| ^ ^^^^ ===== Schedule ===== ^Week^MON^TUE^WED^THU^FRI^ | 01 | | | | - [ {{:public:t-vien-11-1:ve-01-introduction.pdf|Introduction to Class}} ]\\ - [ {{:public:t-vien-11-1:ve-02-illusion.pdf|The Illusion of Reality}} ] | | | 02 | - [ {{:public:t-vien-11-1:ve-03-history.pdf|The history of VEs}} ]\\ - [ {{:public:t-vien-11-1:ve-discussion1.pdf|DISCUSSION1}} ] \\ - [ [[ lab_1_materials|LAB1 ]] ] (for tomorrow) | - [ {{:public:t-vien-11-1:ve-python.pdf|Introduction to Python}} ]\\ - [ {{:public:t-vien-10-3:ve-panda3d.pdf|Introduction to Panda 3D}} ]\\ - [ [[http://www.panda3d.org/manual/index.php/The_Scene_Graph|The Scene Graph]] ]\\ - [ [[http://www.panda3d.org/manual/index.php/Lighting|Lighting]] ]\\ - [ {{:public:t-vien-11-1:demo1.zip|DEMO1}} ]\\ - [ [[ LAB2 ]] ] | - [ {{:public:t-vien-11-1:ve-05-presence.pdf|Presence and Immersion}} ] | - [[:public:t-vien-10-3:blendertexturing|Blender Export and UV Texturing]]\\ - [[http://www.panda3d.org/manual/index.php/Texturing|Texturing]]\\ - [[http://www.panda3d.org/manual/index.php/Intervals|Intervals for Animation]]\\ - [[http://www.panda3d.org/manual/index.php/Terrain|Terrain]]\\ - {{:public:t-vien-10-3:demo2.zip|DEMO2}}\\ - [[ LAB3 ]] | | | 03 | - {{:public:t-vien-11-1:ve-06-action.pdf|Action}}\\ - {{:public:t-vien-11-1:ve-07-cinematography.pdf|Cinematography}} | - NO CLASS | - Actors and interaction\\ - [[http://www.panda3d.org/wiki/index.php/Tasks_and_Event_Handling|Task and Event Handling]]\\ - [[http://www.panda3d.org/wiki/index.php/Collision_Detection|Collision Detection]]\\ - {{:public:t-vien-10-3:demo3.zip|DEMO3}}\\ - [[LAB4]] | - {{:public:t-vien-11-1:ve-09-avatars.pdf|Avatars and levels of control}}\\ - [[http://www.panda3d.org/wiki/index.php/Actors_and_Characters|Actors]]\\ - [[http://www.panda3d.org/wiki/index.php/Finite_State_Machines|Finite State Machines]] \\ - {{:public:t-vien-10-3:demo4.zip|DEMO4}}\\ - [[LAB5]] | Catching up on LABs | | 04 | - {{:public:t-vien-11-1:ve-10-realism.pdf|Visual realism and shaders}}\\ - {{:public:t-vien-11-1:ve-11-abstract.pdf|Abstract Environments}} | - [[http://www.panda3d.org/wiki/index.php/Text_and_Image_Rendering|Text and HUD]]\\ - [[http://www.panda3d.org/wiki/index.php/DirectGUI|User Interface]]\\ - {{:public:t-vien-10-3:demo5.zip|DEMO5}}\\ - [[LAB6]] | | | | =====Grading===== ^Part of Course^Total Weight^ |Programming Assignment | 20%| |Final Project Proposal| 5%| |Final Programming Project| 30%| |Final Project Report| 5%| |Discussion Prep and Lab Work| 10%| |Final Written Exam| 30%| ^ Total 100% ^^ =====Books===== There is no single textbook for the course. Reading and support materials will be handed out in class or distributed through this website. These will mostly be in the form of research papers, software and online resources. The course is also to some extent inspired by the following books: * Bergeron, B. "Developing Serious Games", Charles River Media, Inc., 2006. * Pimentel, K., Teixeira, K., "Virtual Reality: Through the new looking glass", Windcrest Books, 1993. * Slater, M., Steed, A., Chrysanthou, Y. "Computer Graphics and Virtual Environments", Addison-Weseley, 2002. * Stuart, R., "The Design of Virtual Environments"Barricade Books Inc., 2001. * Laurel, B., "Computers as Theatre", Addison-Wesley,1993 * Cooper, A., Reimann, R., "About Face 2.0: The Essentials of Interaction Design", Wiley ===== Useful Resources ===== * Panda 3D (Includes Python 2.6 in "Panda3D-1.7.0\python") * [[http://www.panda3d.org]] * Panda 3D Models * [[http://www.alice.org/pandagallery/|Alice Project Models]] * [[http://www.ru.is/faculty/hannes/classes/ve2010/WOWCreatures.zip|World of Warcraft Creatures]] ([[http://www.ru.is/faculty/hannes/classes/ve2010/LICENSE_Blizzard.png|Blizzard License]]) * Panda 3D Demos * [[http://www.panda3d.org/forums/viewtopic.php?t=5915|DemoMaster Application]] * Python Language * [[http://rgruet.free.fr/PQR26/PQR2.6.html|Python 2.6 Quick Reference]] * [[http://diveintopython.org/toc/index.html|Dive Into Python: Free Python Book]] * [[http://www.python.org|Python Central: www.python.org]] * Python Editing * [[http://pydev.org/|PyDev Python Editing in Eclipse]] * [[http://notepad-plus-plus.org/|Notepad++ (syntax highligthing)]] * [[http://www.jetbrains.com/pycharm/|JetBrains PyCharm IDE (30 day trial)]] * [[http://wiki.python.org/moin/PythonEditors|Other Python editors]] * Blender Modeling * [[http://www.blender.org/download/get-blender/|Open Source Blender 3D Modeling and Animation Program Download]] * [[http://www.ru.is/kennarar/hannes/share/chicken_export1.0.zip|Chicken 1.0 EGG Exporter for Blender]] * Shader Programming * {{public:t-vien-07-1:cgusersmanual.pdf|NVIDIA's Cg User Manual }} * [[http://www.cs.umbc.edu/~rheingan/435/pages/index.html|Basic Concepts of Illumination in Computer Graphics]] * Other useful tools * [[http://www.planetside.co.uk/terragen/|Terragen]] for creating terrain and sky textures * [[http://www.earthsculptor.com/|EarthSculptor]] for interactive terrain sculpting (you can export maps) * [[http://www.ode.org/|The Open Dynamics Engine]] for adding physics and rigit body dynamics to any environment * [[http://pyode.sourceforge.net/|The Open Dynamics Engine Python Module (PyODE)]] is perfect for adding ODE to Panda 3D