======T-626-VIEN and T-723-VIEN, Virtual Environments, Spring 2009====== ===== Basic Info ===== * **Instructor: ** [[http://www.ru.is/kennarar/hannes|Hannes Högni Vilhjálmsson]] * **Contact: ** Office at Kringlan 1, 559-6323, hannes[ ]ru.is * **Theory Lectures: ** Mondays 10:05-11:40 (K-21) * **Practical Lectures/Demos: ** Wednesdays 14:40-16:15 (K-21) (For HMV: Thursdays 18:05-19:40) * **Labs: ** Thursdays 12:55-14:35 (K-21) ===== 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. ===== Goals ===== On completion of the course students should: * On the theoretical side, acquire understanding of the benefits and limitations of VEs in a historical context, and be able to develop new VE based solutions that incorporate well structured interaction models. * On the technical side, learn to construct interactive VEs using a range of state-of-the-art technologies and tools. ===== Coursework Overview ===== During the semester, students should complete two programming assignments and a final programming project. These are all group projects. Students discuss final project ideas with instructor in week 5, present a proposal to the class in week 8, demonstrate final project in weeks 11 and 12, and turn in a final project report at the end. In addition, student participation in classes, online discussion and lab exercises counts towards the final grade. 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. ===== Assignments ===== ^Assignment^Code^Description^Material^Assigned^Due^Weight^ |[[Program 1]]|PROG1|First Programming Assignment| Weeks 1-3|Wed Jan 21|Fri Feb 6|10%| |[[Program 2]]|PROG2|Second Programming Assignment| Weeks 1-5|Wed Feb 11|Sun Mar 1|10%| |[[Final Project Proposal|Proposal]]|FP-PROP|Presentation of Final Project Proposal| All | - |Wed Mar 4|5%| |[[Final Project]]|FP|Final Programming Project with Demo| All | - |Mar 26,30/Apr 1,2|30%| |[[Final Report]]|FP-REP|Written Final Project Report| FP | - |Fri April 3|5%| ^ Total 60% ^^^^^^^ ===== Discussion Questions ===== After every theory lecture, the instructor will post a discussion question on an online forum and the students will be required to contribute to the discussion of that topic until the following lecture. The discussion takes place on an external forum page at the following address. Note that the students have to register on this forum to post their replies (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=vien2009|Virtual Environments 2009]]| ^ ^^^^ ===== Schedule ===== ^Week^Theoretical Topic (Mondays)^Practical Topic (Wednesdays)*^Lab Work (Thursdays)*^Due^ | **Context** ||||| | 1 (12.01) |- {{:public:t-vien-09-1:ve-introduction.pdf|Introduction to the class}}\\ - {{:public:t-vien-09-1:ve-illusion.pdf|The illusion of reality}} |- {{:public:t-vien-09-1:ve-python.pdf|Introduction to Python}}\\ - {{:public:t-vien-09-1:ve-panda3dintro.pdf|Introduction to Panda3D}}\\ | - [[ Lab 1 Materials ]] | | | 2 (19.01) |- {{:public:t-vien-09-1:ve-history.pdf|The history of VEs}}\\ - {{:public:t-vien-09-1:ve-applications.pdf|Current applications of VEs}} |- [[http://www.panda3d.org/wiki/index.php/The_Scene_Graph|The Scene Graph]]\\ - [[http://www.panda3d.org/wiki/index.php/Lighting|Lighting]]\\ - [[http://www.ru.is/kennarar/hannes/classes/ve2009/Demo1.zip|Basic Panda 3D Demo File (ZIP)]] | - [[ Lab 2 Materials ]]| | | **Immersion** ||||| | 3 (26.01) |- {{:public:t-vien-09-1:ve-presence.pdf|Presence and Immersion}}\\ - [[http://www.lsi.upc.edu/~melslater/|Mel Slater]]\\ - ({{public:t-vien-08-1:ijsselsteijn_riva_2003.pdf|Ijsselsteijn and Riva, 2003}}) |- [[Blender Model Export and UV Texturing]]\\ - {{:public:t-vien-09-1:demo2.zip|Texture and Terrain Demo File (ZIP)}} \\ | - [[ Lab 3 Materials ]]| | | 4 (02.02) |- {{:public:t-vien-09-1:ve-action.pdf|Action}}\\ - {{:public:t-vien-09-1:ve-cinematography.pdf|Cinematography}}\\ - ({{public:t-vien-08-1:tomlinson_etal_2000.pdf|Tomlinson et al., 2000}}) |- [[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-09-1:demo3.zip|Event and Collision Demo}} \\ | - [[Lab 4 Materials]] |PROG1 (10%)| | **Interaction** ||||| | 5 (09.02) |- {{:public:t-vien-09-1:ve-actors.pdf|Actors and interaction}} | - [[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-09-1:demo4.zip|Actor and FSM Demo}} | - [[Lab 5 Materials]] | | | 6 (16.02) |- {{:public:t-vien-09-1:ve-avatars.pdf|Avatars and levels of control}}\\ - ({{public:t-vien-08-1:icec2004.pdf|Vilhjalmsson, 2004}})\\ - [[http://www.ru.is/faculty/hannes/movies/spark_running.avi|Spark Video]] |- [[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-09-1:demo5.zip|Text and GUI Demo}} | - [[Lab 6 Materials]]| FP-IDEA | | **Special Topics and Projects** ||||| | 7 (23.02) |- {{:public:t-vien-09-1:ve-realism.pdf|Visual realism and shaders}}| - [[http://panda3d.org/wiki/index.php/Pixel_and_Vertex_Shaders|Pixel and Vertex Shaders]]\\ - [[http://www.ru.is/faculty/hannes/classes/ve2009/demo6.zip|Shader Programming Demo (ZIP)]] | - [[Lab 7 Materials]] |PROG2 (10%) | | 8 (02.03) |- {{:public:t-vien-09-1:ve-abstract.pdf|Abstract Environments}}\\ - Final Project Discussion | - [[http://www.ru.is/faculty/hannes/classes/ve2009/demo7.zip|Visual effects]] | - Students present FP-PROP |FP-PROP (5%)| | 9 (09.03) |- {{:public:t-vien-09-1:ve-animation.pdf|Character Animation}} | - Animating using Blender [ [[http://wiki.blender.org/index.php/BSoD/Introduction_to_Character_Animation/Upper_body_armature|BWiki]] ] | - [[Lab 8 Materials]] | | | 10 (16.03) |- {{:public:t-vien-09-1:ve-virtualworlds.pdf|Online Virtual Worlds}}\\ ([[http://www.fudco.com/chip/lessons.html|Morningstar and Farmer, 1990]]) | - Review of Assignment 2 | - Work on Previous Labs | | | 11 (23.03) |- {{:public:t-vien-09-1:ve-interfaces.pdf|Alternative input/output devices}} | - Work on Final Project | - Work on Final Project | | | 12 (30.03) |- {{:public:t-vien-09-1:ve-exammaterials.pdf|Review for Exam}} |- Students Present FP| - Students Present FP |FP(30%) | ^ ^^^^^ * For HMV students, the "Practical Topic" will be covered in class on Thursday and "Lab Work" will be done at home. =====Grading===== ^Part of Course^Total Weight^ |Programming Assignments (x2)| 20%| |Final Project Proposal| 5%| |Final Programming Project| 30%| |Final Project Report| 5%| |Attendance, Discussion Questions 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 posted on MySchool. These will mostly be in the form of research papers. 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 ===== NOTE: Arnar has posted information about his last year's Mac OS-X installation of Panda on the [[http://ve2008.proboards101.com/index.cgi?board=general|course discussion board]] * Panda 3D (Includes Python 2.5 in "Panda3D-1.5.4\python") * [[http://www.panda3d.org]] * Python * [[http://rgruet.free.fr/PQR25/PQR2.5.html|Python 2.5 Quick Reference]] * [[http://diveintopython.org/toc/index.html|Dive Into Python: Free Python Book]] * [[http://www.python.org|Python Central: www.python.org]] * [[http://pydev.sourceforge.net/|PyDev Python Editing in Eclipse]] * [[http://prdownload.berlios.de/python/spe-0.8.4.h-wx2.6.1.0.tar.gz|Stani's Python IDE (tar.gz)]] for all platforms (it's written in Python), requires prior installation of the [[http://www.wxpython.org/|wxPython GUI]] module * Unzip into a temp folder and execute "python setup.py install" to complete the installation. You can then run the IDE by executing "python SPE.PY" from your "\Lib\site-packages\_spe" folder in your Python installation. * [[http://wiki.python.org/moin/PythonEditors|Other Python editors]] * Blender * [[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