Welcome to CIS 4350: Virtual Reality and Computer Games


Lecture: Mo / Fr  12:30 - 1:50pm. Tuttleman 302
Lab: We  12:00 - 1:50. Wachman Hall cc 200

Instructor: Rolf Lakaemper (lakamper@temple.edu)
Office Hours: after class, Mo/Fr 2pm - 3pm, or by appointment, or just come in, room 1036 Wachman Hall.
Phone: 215 204 7996

TA: Feipeng Zhao
E-Mail for homeworks: tue86437@temple.edu
Contact Hours :    [will be added]
TA-website: [will be added]

Textbook: no tetxtbook! I recommend to buy a Microsoft Kinect instead. I will point you to online resources during the semester.


> Course Material

 

Week

Class-Topics

Lab-Topics

Assignments

JAVA Sources

Slides

1

Intro to 3D Sensors, Kinect, Examples

(no lab)

(no assignment)

 

 

2

OOP basics: Abstract Classes, Interfaces, Polymorphism

Multi-Threading, Concurrency, Locks

Working with Kinect TCP

(no assignment)

Project ThreadExample: contains 2 example files:

ThreadExample (basic multi threading)

LockExample (how to use locks)

Intro to Threads

3

State Machines, 2D Geometric Transformations, 3D Transformations, Vector Algebra Basics

Working with threads/state machines using the robot simulator

Your own Robot Vacuum Cleaner

Happy Wall Robot

2D Transform Demo

3D Transform Demo

Central Projection Demo

Intro to State Machines

2D Transformations

3D Transformations

Quaternions

4

JMonkey: intro, scene graphs, Spatials, Animation, Sound.

Textures and Lighting

Working with JMonkey

Kinect Controlled Monkey Cannon

JMonkey Example01: Basic Coord System

JMonkey Example02: Shapes and Sunlight

 

 

5

Transformations

Textures and Lighting

Physics Engine: basic physics

The math behind terrain generation: fractal heightfield generation

Motion Capturing System: Combining 3D transformations with Kinect Skeleton

JMonkey: Physics Engine

A World Controlled by Skeleton Physics

JMonkey Example03: Coord Transform

JMonkey Example04: Lighting1-Ambient and Directed Light

JMonkey Example05: Lighting2-Point Light

JMonkey Example06: Materials

JMonkey Example07: Physics Engine Basics

Poor Man's Motion Caption System

 

Fractals

6

Fractals in JMonkey

Heightfields, Creating Meshes

Working with Point Clouds

RANSAC to find planes

 

Shape Your World

JMonkey Example 08: HeightField, Dynamic TerrainPatch

JMonkey Example 09: PointCloud (new Kinect Version!)

JMonkey Example 10: Fractal Height Field

Supporting Code: Image to Array Converter

7

3D transformations: Quaternions.

 

JMonkey & Kinect: Blockworld

JMonkey: Quaternion Example

JMonkey: RANSAC

RANSAC - probabilities

Quaternions

8

Project Proposal Presentation

 

SLERP

 

 

9

Collision Detection

k-DOPs

 

 

Collision Detection

10

Working with Sound: Fourier Analysis

 

 

Fourier Analysis

11

Blender

 

 

 

12

Bezier Splines

ICP

 

JMonkey: Spline Demo

ICP

13

ICP cont’d,

kD-Trees

Intermediate Project presentations

 

JAVA kD-Tree source (web resource)

kD-Tree slides (copied from UWashington website)

14

Project Presentations cont’d

Particle Filters in Robot Localization

 

 

 

15

Final Project Presentations

 

 

 

 

 

 


> Quizzes

·         Quiz 1

·         Quiz 2

·         Quiz 3

·         Quiz 4

·         Quiz 5

·         Quiz 6

·         Quiz 7

·         Quiz 8

·         Quiz 9

·         Quiz 10


>Additional Material

 

·         Link to TCPKinect Website

·         Link to Kinect Hacks (example Kinect projects)

 

 


>Grades

Your grade will be based on a combination of quizzes, lab grades, and project work:

·         There will be quizzes. I expect about 6-8 quizzes. In total, these will count 25% of your grade.

·         There will be extra points during class (bonus points), counting as quiz points

·         Lab assignment grades will count 25%

·         The Projects will count 50% of your grade

CLASS ATTENDANCE is a prerequisite to pass this class, independently of the Quiz/Lab/Project. If your class attendance is insufficient (missing > 3 classes is critical), this will result in an F.

 

>Syllabus and remarks

 

The course will focus on creation, modeling, analysis  and implementation of 3D applications in arts, entertainment, and scientific simulations. These fields demand for robust knowledge in programming and typically are applications for optimized sophisticated data structures and algorithms. These fields offer exciting, serious programming projects. The applications will handle 3D data. This will increase the experience with advanced data structures (Octrees, bounding box trees, r-trees), linear algebra (3D Vector algebra, rotations, quaternions, projections) and the problems that occur with higher dimensionality and higher volume of data.

The course will build on data gathered from the Kinect using the" kinectTCP" module, which makes the data available on a TCP port, freeing the students from any low level kinect programming. The course can therefore immediately concentrate on higher level tasks. Although kinectTCP allows for language independence, the proposed language for this course is JAVA in connection with a higher JAVA module, JMonkey. JMonkey is a 3D visualization kit, which also implements basic physics simulations. It is written in JAVA, and therefore integrates perfectly. The students will learn the advantages of object oriented thinking, being able to create complex 3D environments by extending JMonkey structures. 

The proposed course will enhance the abilities of the students in many fields important to computer science:

·         Creativity

·         Modeling

·         Software engineering, Program Analysis

·         Data Structures & Algorithms

·         Geometry / Linear Algebra

·         Programming

Topics:

·         Microsoft Kinect: Introduction to 3D vision and 3D point clouds

·         What's out there? An overview over the current state in computer gaming and virtual reality in Arts and Sciences

·         Describing 3D worlds, 3D mathematics: linear algebra. Vectors, matrices and spaces to describe 3D Geometric transformations (Euler angles, Quaternions,...)

·         Representing 3D worlds, Computer Graphics: basic algorithms and representations (Meshes, geometric primitives). Advanced data structures: different types of trees to store and handle 3D data.

·         Creating 3D worlds: Blender

·         Displaying 3D worlds: JMonkey

·         Manipulating 3D worlds: JMonkey's physics engine

·         Interacting with 3D worlds: Kinect & JMonkey

 

>What is expected of the students:

·         You must attend class and the scheduled laboratory section for this course and do assigned readings.

·         You must complete all of the assigned laboratory projects in a timely fashion. All lab assignments should be emailed to your lab instructor before lab on the day they are due.

·         You must plan to spend time outside of the scheduled laboratory working on your programs. Often, students find they need 10 or more additional hours outside of lab to complete the assignments. You should check the web site for this course at least once a week to see any hints, instructions or updates to assignments. I will update assignments or add hints due to feedback from you.

·         This is a seminar style class. There will be projects, which you should come up with yourself. After the introductory sections, you will have to present your project idea, progress, and final project. Projects are GROUP projects.

 

>Group work

there are two different settings: individual assignments/homeworks MUST be solved individually. Projects and group assignments are, obviously, to be solved in a group. Copying of individual assignments leads to an immediate F grade.

 

>Disability Disclosure

Any student who has a need for accommodation based on the impact of a disability should contact me privately to discuss the specific situation as soon as possible. Contact Disability Resources and Services at 215-204-1280 in Room 100, Ritter Annex to coordinate reasonable accommodations for students with documented disabilities.