To the Bottom of the
Page
Instructor: Dr. Shieu-Hong Lin ![]()
Class time: MWF
Office Hours:
Tuesday & Thursday
Weekly progress report:
1. See the template report here as a word document or a web page.
2. By
Wednesday each week starting from the
second week, you should spend around 5 minutes to email me your
progress report.
For
programming assignments:
·
Fill
out this self-evaluation report and
email it together with all your source code as attachments to me.
·
To set up OpenGL programs on your own Windows
platform once for all, download this zip file,
unzip it, and read the readme file in the folder to set it up.
Online
books and tutorials
Week 1: Intro to Computer Graphics. Progress report due Wednesday,
Feb 6.
Experiments:
Reading #1:
Browse through (i) Chapter1 of OpenGL
programming guide (the red book), (ii) sections 2, 3, and 7.1 of GLUT 3.0
specification, and (iii)
try to understand the sample programs: simple.cpp and earth.cpp.
Lab#1: A Simple Static Scene Viewed from a Static Camera with Orthographic Projection due Wednesday, Feb 6.
Week 2: More
on event handlers and the related glut functions
Reading #2: Read the following parts of GLUT 3.0 specification: Sections 2~3 on initialization and the event loop, Sections 7.1~7.6 on registration of basic callback functions, Sections 4.5~4.6 on posting a redisplay event and the swapping of double buffer. Report Due: Wednesday, Feb 13.
Lab#2: A Dynamic Scene Viewed
from a Static Camera with Orthographic Projection (see a sample final executable) Due:
Wednesday, Feb 13.
Week 3: More
on 3D scene modeling
Lab#3A: A Simple Static Scene
Viewed from a Moving Camera with Perspective Projection (See this sample Windows
executable solution zip file for Lab #3A.) Due: Wednesday, Feb 20.
Week 4: Intro
to 3D Model Transformations. Progress report due Wednesday, Feb 27.
Lab#3B A Dynamic Scene Viewed
from a Moving Camera with Perspective Projection (See this sample Windows
executable solution zip file for #3B.) Due: Wednesday, Feb 27.
Week 5: More
on 3D Model Transformations. Progress report due Wednesday, March 5.
Reading #5: (i) Play
with this sample program about Sierpinski
gasket fractal (see this link)
and watch the console application to see the difference between the windows
coordinates you get from the mouse events and the world coordinates of objects
in the world. (ii) Review Chapter 3 of the
OpenGL programming guide on state management and geometric objects. (iii) Read the blue book
regarding the use of GLUquadricObj,
gluNewQuadric, gluQuadricDrawStyle, gluCylinder, gluSphere, gluDisk, gluPartialDisk
and review the sample code here to see the use
of several of those types of geometric objects available in GLU and GLUT. due Wednesday, March 5.
Lab#4A:
Composing Static
Scenes Using Basic Geometric Objects and Affine Transformations. Due: Wednesday, March 5.
Lab#4B: Due: Wednesday, March 12.
Weeks 6~7:
More on the implementation of advanced GUI features using GLUT; Test #1. Progress report due Wednesday, March 12.
Reading #6: (i)
Download and play with compact example
(sample code and an executable included) demonstrating the implementation of an
advanced glut mouse motion function to translate dragging events into actions
along X, Y, Z axes. Examine the code to understand the underlying
implementation. (ii) Download and
play with this
example program on the setup of a menu system using GLUT. (iii) Read
the following parts of GLUT 3.0
specification: section 6 on glutCreateMenu,
glutAddMenuEntry, glutAttachMenu, section 7.5 on glutMouseFunc, and 9.1
on glutGet. Read the related
sections of Online
OpenGL 1.1 reference guide on glGetDoublev,
glGetIntegerv, and gluProject. Read the usage
of acos and fabs in
<cmath>
of C++. (iv) Download and play with the code and the executable of the sample 3D
scene modeler in this zip file. Create a simple scene using the modeler and
save the scene as a SNAPS?_Scene?.cpp file. Examine and compile this resulting
.cpp file to see how it can render the snapshot.
Lab#4C: Due: Wednesday, March 19.
Enhance your Biola bell tower graphics program in Lab4B to
Test #1 (in-class open-book):
· See this zipped Windows executable and a screenshot (Jennifer Russell) for problem #5 on a bus moving around a circle.
Weeks 8~9:
Introduction to Lighting and material;
Spring break. Progress report due Wednesday,
April 9.
Lab#5: Based on the graphics program you have for Lab#4C or 4B, enhance the program with the following additional features: (i) Properly specify the material properties of your objects, (ii) specify at least one light source and enable lighting in OpenGL, (ii) enable depth buffer testing and properly use the related OpenGL commands to have hidden surface removal. Due: Wednesday, April 9.
Weeks 10-11:
Intro to texture mapping; Mission Conference
·
Chapter 9 on texture
mapping from the Online OpenGL 1.1 programming guide and
understand these key OpenGL texture mapping
commands.
·
Play with texture.exe from
Nate Robin’s tutor
repository to get a sense of the issue of
texture mapping.
·
Download this zipCube.zip and
crefully examine how texture mapping of a family picture onto a cube is done through the CreateTexture function in tga.h and
tag.cpp to load a tga picture and map it onto surfaces.
·
Also see texture
mapping for (i):
mapping multiple images to surfaces in a static scene, (ii): mapping a
checkerboard image onto a glutTeapot object, and
(iii): mapping
two checkerboard images onto two rectangles.
Lab#6: Due: Wednesday, Wednesday, April 16.
Week 12: Review and
test
Test #2 (in-class open-book):
Weeks 13~14:
Intro to interpolation and surface modeling
In-class demo of your 3D virtual-reality prototype: Wednesday,
May 14.
Final 3D virtual-reality project:
Demo programs:
Useful
online references to C++ and C libraries
To the Top of the Page