Course: MTEC 3230
Section Code: 6230
Semester: Spring 2013
Course Title: Introduction to Interactive 3D Environments Programming
Co-requisites: MTEC2120, CST1101, MAT1280 or higher
Day and Time: Tuesdays and Thursdays 10-11:40AM
Building/Room: Voorhees room 314 and 321 (most lessons will happen in 321)
Instructor: Professor Damon Loren Baker
Instructor’s Email: dbaker@citytech.cuny.edu
Instructor’s Office: Room v-205 (this might change later in the semester)
Instructor’s Office Hours: Thursdays 12:30-2:30
Course Website: https://openlab.citytech.cuny.edu/interactive3d/
Entertainment Technology Department Phone Number: 718-260-5588
Course Description
This course provides students with technical foundations and opportunity to work with state of the art virtual reality (VR) systems and interactive 3D environments. The foundations covered in this course apply to computer games, 3D film production, immersive environments, and virtual scenery for live performance. Students will be prepared to apply and extend their basic skills in modeling, scripting and programming. The course will emphasize production, teamwork, analysis of interactive 3D systems, and applications-driven user experiences with assessment of aesthetic orientation.
Course Objectives
Upon completion of this course students will be able to
Create 3d environments using state of the art tools
Program rich interactions between users and the environments
Work together in teams to solve problems
Write and speak about interactive 3d environments using the technical vocabulary of this field
Document their process and product
Disclaimer
This is an upper level, advanced course and will require significant amounts of effort. You will be expected to spend more time outside of class working on homework and learning the material than you will spend in the class room (5-8 hours a week on average to get a B. A’s require exceptional effort and ability on the part of the student.). You will NOT be able to complete all of your work for this course during class meetings. If you are unable or unwilling to put in the effort required you should drop this class immediately. You will be given an assessment of your progress at midterm. If you have fallen behind and are making “Unsatisfactory” progress you should drop the class immediately (the deadline to drop is april 18th). If you receive an assessment of “Borderline” you should think very carefully about the amount of time and energy you can put into this class and if you can not put significantly more effort towards this class than you have been then you should drop this class immediately. A key component to getting a good grade in this class is attendance. Please review the attendance policy carefully and keep it in mind. You are strongly encouraged to study and work together with your fellow classmates and to take advantage of the open lab hours we have created to allow you access to computers and facilities to do your work outside of class.
Attendance Policy
Attendance is MANDATORY for ALL classes. If you miss a class session it is your responsibility to make up all work missed. You are responsible for all material covered while you are absent. You are responsible for all assignments made while you are absent. Contact your classmates to find out what you missed out on and to keep up with your part of any group assignments. Come to my office hours if you need help catching up.
MORE THAN 3 UNEXCUSED ABSENCES WILL RESULT IN AN âFâ (FAILURE). For an absence to be excused you must have permission from the instructor PRIOR to class. Let me know as much in advance as possible if you are not going to be able to make it to class. If an en emergency occurs email me or call the entertainment technology office and leave a message with the departmental secretary Margaret Medina informing me of what is going on. Emergencies happen and I will do my best to accommodate you if you communicate with me.
TWO LATE ARRIVALS = ONE ABSENCE. By late arrival I mean: You must be in your seat, paying attention and ready to go at 10 am sharp or you will be marked late. Class starts promptly at 10am, not 5-10 minutes later after people trickle in. The subways and buses are often delayed. If you find yourself regularly arriving late the only way to work around that is to leave for class earlier. If you do arrive to class late, quietly take your seat without disturbing your fellow students. Do not expect me to waste the time of the rest of the class that arrived promptly by repeating the material you missed. When you are late you not only hurt yourself by missing out on the instruction that you have paid for, you interfere with the rest of the class who arrived promptly. At the end of class check to make certain you have been marked late, not absent. Do not disrupt the flow of the class by demanding that you be marked late whenever you happen to show up.
Academic Integrity
Students and all others who work with information, ideas, texts, images, music, inventions, and other intellectual property owe their audience and sources accuracy and honesty in using, crediting, and citing sources. As a community of intellectual and professional workers, the College recognizes its responsibility for providing instruction in information literacy and academic integrity, offering models of good practice, and responding vigilantly and appropriately to infractions of academic integrity. Accordingly, academic dishonesty is prohibited in The City University of New York and at New York City College of Technology and is punishable by penalties, including failing grades, suspension, and expulsion. The complete text of the College policy on Academic Integrity may be found in the catalog.
Course Website
For this course we will be using an OpenLab blog as the class website. You are required to create an account and sign up for the class blog. Once you have joined you will be able to post your assignments and participate in class discussions online. The site for the class is https://openlab.citytech.cuny.edu/interactive3d/
Grading
Your final grade will be determined using the following distribution:
In class quizzes: 20%
Midterm exam: 10%
Final exam: 20%
Labs and lab reports: 10%
Projects and presentations: 20%
Blog posts/journal entries and responses: 10%
Attitude and class participation: 10%
Quizzes
There will be a number of short quizzes given throughout the semester on the material being covered. These are to be done in class and will happen in the first ten minutes of class. Some class sessions will have them, some will not. Be prepared. If you are absent or late you will not be able to make up the quiz, but I will drop the three lowest grades from all of them when determining your final grade.
Midterm Exam
The midterm will be based primarily on the quizzes plus additional material covered in lectures and labs. Use your quizzes as study guides for the midterm.
Final Exam
The final will be comprehensive, covering all material covered in the course. Use your quizzes and midterms as study guides for the final.
Journal Entries
Each week (except for weeks 9 and 10Â for spring break) you will be required to make a post to the class blog. This will serve as a journal of your work in the class. Some weeks you will be given specific topics to write on. If you are not given a specific topic you are to summarize the work you have done that week. The journal entries are to be at minimum one double spaced page long (250 words) and at most two pages(500 words). They are due promptly at 9am each monday. They are due even if you missed class on thursday or are going to miss class on tuesday.
They should be titled following the this format “Journal entry X: A BRIEF DESCRIPTION OF YOUR TOPIC GOES HERE” where X is the week it is written for and then the rest is where you write a brief description in your own words of the topic you are going to write about. The title should be at least clear and descriptive (if not evocative) and not just a repetition of my words from the assignment. Try to give the reader an idea of what they are about to read and a reason to invest the time in doing so. Example: if I ask you to describe the first time you played a video game your title should not be “the first time I played a video game” but something like “how my addiction to pokemon began” or “final fantasy gave me nightmares about chocobos” or “super mario bros and me”.
You are graded on the following criteria:
Clear, correct and informative title.
Spelling, grammar, and punctuation.
At least the minimum length of 250 words and maximum of 500 words.
Addresses the topic assigned.
Clear development of thoughts.
Complete sentences organized into paragraphs.
You are strongly encouraged to include images, embedded video, links and other sorts of hypermedia to support your writing.
Lab Reports
For each lab session of class you will be required to complete a lab report that documents your activities. Lab reports are a kind of formal technical writing. You will be graded not only on what you did, but how well you documented it according to the guidelines for writing a report. Lab reports are to be done during class as you are working, not written up after the fact. For this class we will be using an electronic version of the lab report form by making posts to the class blog. They do not have to be long (250-500 words) but do have to be complete, with each of the following components.
TITLE:Â The title says what you did. It should be in the following format “LAB REPORT WEEK X: Brief Description Goes Here” where X is the number of the week the lab happened, and the brief description is a short (ten words max) description of what you are doing in your own words. Do not just copy my words back. Part of the assignment is to formulate a clear description of the work you are doing.
OBJECTIVE: This a a brief description of what it is you want to accomplish by doing whatever it is you are doing.Write this at the beginning of the lab before you start doing any work. If you are working on a group project you need to be very clear about what part you are doing. This should be primarily “I” statements, not “We” statements. Example: “My goal was to make python logic bricks that responded to UDP messages from the server.” not “We worked on the network code for the multiplayer game”
MATERIALS: This is a list of all the things you used to do your lab. These can be physical things (wii remote, head mounted display,etc) or software components (python libraries, external tools, rendering engines, etc). Be specific. The goal is that someone who wanted to duplicate your work would be able to find everything they needed to know by reading your report.
METHODS: This is where you write down what you are doing to try to reach your objective. Write down every technique as you do it, even if it doesn’t work the first time.
DATA: This is optional. If you are making measurements this is where you would write down all the numbers you are recording from whatever measurement you are doing. If you aren’t making any measurements you can ignore this part.
ANALYSIS: This is also optional. This is where you would do any calculations based on your data. If you aren’t making any measurements you can ignore this part.
RESULTS: This where you write down what happened as a result of your methods. Make certain to clearly indicate if you achieved your objective or not.
DISCUSSION: When you have completed your lab write up a brief discussion of what went wrong, what worked, and what your next steps would be if you were to continue.
ResponsesÂ
You are required to check the class blog at least twice a week, 24 hours before each class, to look for announcements from me and to participate in discussions. You are expected to read every post that happens on the blog and to participate actively. Each week you need to make a MINIMUM of two comments in response to the other students’ posts and comments. Failure to do so will impact your grad negatively. These must be substantive responses, not single words. emoticons, or “LOL”,”smh”, “+1”, and especially not “YOLO”. I expect full sentences, proper spelling, capitalization, and punctuation as well as reasoned ideas and honest, probing questions. Whenever possible use links, images, and other sorts of multimedia in your posts.
Case Study
Each student will do a detailed case study of one particular example of an interactive 3d environment. This can be a particular video game, simulation, data visualization, performance, hardware system, etc. Each student will have to complete and post to the class blog a five page/1250 word minimum essay describing their chosen topic. They need to answer :
Who made it?(Listing the key developers and their roles, including corporations and institutions that were involved)
What is it? (Clearly specify all features, affordances and limitations. Is it software? Hardware? Both? Neither?)
When it was made (with as much context as possible. Examples: was it a premier launch game for a new console? Was it the mobile spin off of a larger series? Was it a developer’s first game? Was it a data visualization that happened in response to a specific event? etc)
Where was it made?( Did they make it in their mom’s basement? A Government research lab? A classroom?)
Why was it made? (Did a market researcher determine it would be profitable? Did someone dream of making it since they were a child? Was it done on a dare? As a prank?)
How it was made? (Give details about the development process. Did it take weeks? months? years?)
Clearly analyze your subject in terms of the Sensor/Controller/Actuator model that we discuss in class. Break it down into its constituent parts. Describe their form and function.
Each student will then do an abbreviated PechaKucha style presentation on their topic ( http://http://en.wikipedia.org/wiki/PechaKucha ) this will consist of 10 slides in powerpoint format that will run 20 seconds each for a total of 3 minutes and 20 seconds. The slides will be set to advance automatically. Rehearse your presentation with the slide show in advance. There will be a brief period for questions at the end of each presentation.
Final Projects
Each student will propose a final project concept. This proposal begins as one of the journal assignments and an abbreviated PechaKucha presentation (10 slides that run for 20 seconds each while you describe your project followed by a brief question and answer session). After the presentations all the students will vote for their favorite projects. The top half of project proposals with the most votes will move forward becoming team leaders, the remaining half will not. I will cast votes in the event of a tie. Starting with the project with the most votes each team leader will select one of the students who did not move forward this round to join their team. If there is an extra student left over due to there being an odd number of students the top ranked team will get that student to have 3 members.
The pairs of students will then work together on the winning project idea (though every attempt should be made to include and accommodate ideas from all members of a team). They will work together to create a two to four page description of the revised project idea as part of their journal writing, create a working demo of the idea during a lab, and then create a slightly larger PechaKucha style presentation (15 slides this time, each team member taking turns during the presentation by talking for one slide, the team leader starts and ends it). All the students in the class will vote again and this time only the top 3-5 projects will move forward. The team leader with the most votes gets first choice at picking members from the losing teams to join their team.
For the final round there should be 3-5 teams of 3-5 students each competing. Each team will be responsible for creating an implementation of their project, further documentation, a full sized PechaKucha presentation (20 slides) along with with a brief demo video (~2 minutes long) and a proposal for further development of the project that follows the guidelines used by kickstarter.com for potential projects. All of this will be presented at the end of class and the students will vote for a winner!
Tentative Schedule (everything on this is subject to change in order to meet the needs of the class)
Week 1
Tuesday January 29th Lecture Course Overview, Introduction to topic, syllabus, etc
Thursday January 31st Lab Introduction to Blender
Week 2
Tuesday February 5th Lecture Overview of 3d Environments and the systems that create themThursday Thursday February 7th Lab Introduction to Blender Game Engine
Journal Topic Introduce yourself/Show and Tell
Week 3
Tuesday February 12th  NO CLASS -PRESIDENTS’ DAY
Thursday February 14th Lecture Sensor/Controller/Actuator Model
Journal Topic Research: a specific hardware platform
Week 4
Tuesday February 19th Lecture Sensors
Thursday February 21st Lab
Journal Topic Research: a specific input technology
Week 5
Tuesday February 26th Lecture Controllers
Thursday February 28th Lab
Journal Topic Research: a specific software platform
Week 6
Tuesday March 5th Lecture Actuators
Thursday March 7th Lab
Journal Topic Research: a specific display technology
Week 7
Tuesday March 12th Lecture Python logic brick programming
Thursday March 14th Lab
Journal Topic Research: currently under development interactive 3d environment
Week 8
Tuesday March 19th Lecture Mobile Development with OgreKit
Thursday March 21st Lab
Journal Topic Case Study Proposal
Week 9
NO CLASS- SPRING BREAK
Week 10
Tuesday April 2nd NO CLASS- SPRING BREAK
Thursday April 4th Case Study Presentations
Week 11
Tuesday April 9th Mid Term Examination
Thursday April 11th Lecture on Final Projects
Journal Topic Initial Proposal for Final Projects
Week 12
Tuesday April 16th Final Project Proposal Presentations: Round One
AKA Thunderdome round: Two Projects Enter, One Project Leaves
Thursday April 18th Lab Create working demo of project ideas
Journal Topic Revised Final Project Proposal
Week 13
Tuesday April 23rd Final Project Presentations: Round Two
AKA ăăă«ă»ăăŻă€ăąă« Batoru Rowaiaru/Battle Royale Round
Thursday April 25th Lab- Work on Final Projects
Journal Topic Two person team project proposal
Week 14
Tuesday April 30th Advanced interfaces (MoCap, Kinect, Leap Motion, Emotiv,etc)
Thursday May 2nd Lab- Work on Final Projects
Journal Topic Initial Full team project description
Week 15
Tuesday May 7th Advanced Engines and Systems (GPU, CUDA, PHYSX, Clusters, Grids, etc)
Thursday May 9th Lab- Work on Final Projects
Journal Topic Research: review of literature/similar funded projects on Kickstarter.com
Week 16
Tuesday May 14th Stereoscopic and Immersive Displays (CAVE, HMD, Shutter Glasses, Ambisonics, Haptic, etc)
Tuesday May 16th Lab- Work on Final Projects
Journal Topic Revised Kickstarter.com style final project description
Week 17
Tuesday May 21st Final Project Presentations: Round Three
AKA Highlander round: There can be only one!
Thursday May 23rd Final Exam
Journal Topic Final Project Documentation: Post Mortem
Extra Credit
Points will be added to your final grade for each of these (maximum 10 pointnes)
+1 point if you are the group leader of a final project that goes forward past the first round
+1 point if you are the group leader of a final project that goes forward past the second round
+1 point to each team member of the final project selected as the “winner” by the class
+1 point to the group leader of the final project selected as the “winner” by the class
+1 point for each CityTech theatre works event that you attend and write a one page/250 word blog post
+1 point for each external event (related to the class) that you attend and write a two page/500 word blog post
+1 point for attending culmination project presentations and writing a one page/250 word blog post
+5 points to each team member for projects that successfully go live on kickstarter.com by may 27th
Data Management
Students are responsible for storing their files and backing up their data. DO NOT STORE YOUR FILES ON THE LAB COMPUTERS. Do not change the settings or desktop wallpaper of the lab computers. Back up all your files regularly. I suggest creating an account with dropbox.com or other online storage system to back up your files to in addition to storing them on your own personal storage device
Required Equipment
All students are required to purchase a storage device large enough for their working files for this class. High capacity multi-gigabyte USB storage drives are cheaply available. Buy one immediately if you do not have one already. Make certain that important files are stored in at least two locations at any given point in time. You are responsible for your own data. If you fail to back things up properly and lose your projects you will have to rebuild them from scratch. Save yourself a lot of pain and misery and back things up regularly.
Students are expected to bring pens and paper to every class.
Recommended Reading
There are no required textbooks for this class but the following is recommended to all students:
Blender GameKit 2nd Edition by Carsten Wartmann 2009 ISBN:978-1-59327-205-0
it is available online for free at http://wiki.blender.org/index.php/Doc:2.4/Books/GameKit_2
Additional Resources
Free online resources for blender
http://wiki.blender.org/index.php/Doc:2.6/Books
Blender manual online
http://wiki.blender.org/index.php/Doc:2.6/Manual
Blender news site
The mothership
Blender python API reference
http://www.blender.org/documentation/blender_python_api_2_65_9/
Deadlines
Journal posts are due at 9am monday mornings for all weeks except weeks 9 and 10 (spring break).
Lab Reports are due at the end of lab classes. They should be posted to the class blog no later than noon
Responses to journal posts and the previous week’s lab reports are due at 9am Wednesday mornings except weeks 9 and 10 (spring break).
Case study powerpoint presentations must turned in by 9am Wednesday April 3rd (Test them first and rehearse your presentation. You can not change your slide show after it is turned in)
Case study reports must be posted to the class blog by 9am Wednesday April 3rd.
Case study presentations will happen on Thursday April 4th.
Assignments are due at the beginning of class. You can not come into class and spend the first half ignoring the lecture or your classmates’ presentations frantically trying to finish your homework. If you aren’t ready to go at the beginning of class you are late and will have one full letter grade deducted from your assignment’s grade for every 24 hours or fraction there of that you are late. So if a project was due at 10 am tuesday and you turn it into me at 12:30pm it is one letter grade lower and if you turn it in at 10:30am wednesday it is two letter grades lower.
Communication
Communicating in a professional manner is a vital skill to develop. In this class I will expect you to use email as one of the primary means of communicating with me outside of class. Please whenever possible use your citytech email account to send mail and always send it to my citytech email account. When students use outside emails they often are blocked by spam blocking software, or don’t identify who the student is. I don’t have the time to memorize every student’s online pseudonym so please always make sure to identify yourself and which class you are in. For some further suggestions on how to send a professional email to a faculty member please consult http://www.wellesley.edu/socialcomputing/Netiquette/netiquetteprofessor.htmlÂ