Lecture 1

Into to the Course


Information about the Course - Syllabus, presentations, projects etc.


How this class relates to to other similar / related CS courses

Computer Graphics I - The Basics

Computer Graphics II - Focus on Modern Computer Graphics Techniques

Virtual Reality -Focus on Immersion

Human Computer Interaction - Focus on Interaction

Computer Animation - Focus on Motion.


While CS 488 (EECS 488) focused on the mathematics and the basics of generating computer graphics, this course focuses on more modern techniques and uses.

There are a lot of different topics that can be covered in Computer Graphics II. This term we are going to talk about video games looking at how the technology and software have evolved from their beginnings in the late 50s to modern systems. Then using that as a basis we will look at current techniques for increasing realism, improving interaction, and managing large environments and large numbers of autonomous characters. Aside from generatng computer graphics for films, the most visible usage of computer graphics is in creating video games. One very nice thing about ever-increasing computer power is that almost all of the previous arcade, console and computer game software can be emulated on modern computers, allowing us to experience history as well as talk about it.


While 488 used OpenGL for implementation, this course will use OpenInventor, a scene-graph based library which sits on top of OpenGL, for implementation. There are many current scene graph libraries out there which have many features in common. We will be using Open Inventor because it is available for all current major platforms through either Open Inventor itself or Coin3D (http://www.coin3d.org/). We will be using GLUT to handle the window interface so you will be able to do the programming at home if you wish.


Scene Graphs

Open Inventor (the sucessor to IRIS Inventor) is built on top of OpenGL. Open Inventor uses OpenGL to do the rendering of the graphics.

OpenGL is procedural. You give the commands in the order that you want them executed. This gives you great control but makes it harder to work at a higher level. OpenGL is also well suited for scientific visualization applications where you need to render large numbers of rapidly changing simple polygons quickly. OpenGL has limited ability to encapsulate commands as display lists that can be recalled later.

In a scene graph library you can think of the computer generated world to be rendered as a scene made up of objects. The objects in the scene exist as nodes in a tree (well, probably a directed acyclic graph) and rendering the scene invovles traversing this tree structure. Other nodes deal with transformations, setting the various parameters for rendering, and interaction.

Java 3D and IRIS Performer are two of the most common scene graph libraries, and there are several groups producing 'open' scene graph libraries. I picked Open Inventor for this class because it has been around long enough to become a solid library, it is supported, and it has versions that run on virtually every current platform. The lessons that you learn with Open Inventor should easily transfer to other scene graph langauges and future scene graph languages.

Below is a doorway created in OpenInventor - the object on the left, the scene graph on the right, and the textfile below. OpenInventor could either read in this file, or you could create the scene graph using C/C++ code - as we will see in future lectures.

#Inventor V2.1 ascii

# this model is part of the NICE project
# Interactive Computing Environments Laboratory
# and Electronic Visualization Laboratory
# at the University of Illinois at Chicago
#
# nice@ice.eecs.uic.edu

Separator {
ShapeHints {
vertexOrdering COUNTERCLOCKWISE
shapeType SOLID
faceType CONVEX
}

Texture2 {
filename "TEXTURES/stoneSmall1.rgb"
}

Separator {
Material {
ambientColor 0.3 0.3 0.3
diffuseColor 0.3 0.3 0.3
}

Translation {
translation 3 0 0
}

DEF +0 Cube {
width 1
height 9
depth 3.4
}

Translation {
translation -6 0 0
}

USE +0

Translation {
translation 3 4.7 0
}

Cube {
width 7
height 2.4
depth 3.41
}
}
}


Open Inventor

I think its probably worth it to buy the book but there is a summary of the Inventor Mentor available on the web here

And there is a nice web page of all the Open Inventor classes here

So between them you should have all the information you need.


The 3 (of 5) Presentations

There will be 3 main presentations in the class, in addition to the 2 presentations to show your project work.

Unlike of ther 500 level classes which rely on presenting current papers from SIGGRAPH etc., this class will take a different approach. Instead of presenting the work from a single paper, you are expected to do research on the topic and put together information from multiple sources into a coherant (and educational) presentation.

The first set of presentations will center around the history of videogames. We will spend three weeks on these presentations with the first week focusing on the 60's and 70's, the second week focusing on the 80's, and the third week focusing on the 90's and 00's. A group will be chosen for each week and that group should decide how to divide up their decade. All of the presentations will be done individuallly and graded individually. This set of presentations will give us the broad historical background in terms of hardware, software, user interfaces etc.

Each of the second presentations will focus on some particular aspect of videogames. Each person may choose their own topic, but it must be cleared by Andy. Here are some possible topics.

The third set of presentations will focus on more current technical concerns in creating modern videogames.



Coming Next Time

The basic Building Blocks of OpenInventor


last revision 1/7/02