Jump to today.
Final exam solution
Final 2009 Solution
Fall 2008 Q14 answer
- _____ Compute the 4x4 homogeneous transformation matrix to translate
and uniformly scale a volume with corners (1,2,1) and (4,4,4) to be
centered in a cube with corners (0,0,0) and (1,1,1), and to be as large
as possible.
I talked about this in the last class.
x' = x/3 - 1/3
y' = y/3 - 1/2
z' = z/3 - 1/3
2 0 0 -2
0 2 0 -3
0 0 2 -2
0 0 0 6
However check my math.
Extra office hours before exam
Kalyana will be available on
- Fri 12/18 2:45-3:45pm in JEC6042
- Sun 12/20 10-11:30am in JEC5030.
After the course
Feel free to ask me questions and express opinions about anything next
semester, or even after you graduate. However, you may then be asked
to talk to the whole class.
Course survey online
The IDEA course survey is open. Please respond. If you think that
you got good value from this course, then please rate it (and me)
appropriately. This makes the department head like me and continue to
let me teach it. I like this topic, spent a lot of time of it, and
hope you liked the result. Thanks.
Course calendar
Reminder that the syllabus has a live link to the course calendar on
Google at e40dor6ojh6bfjanmfnn3tj348@group.calendar.google.com. Here
it is again:
(:GoogleCalendar calendar=e40dor6ojh6bfjanmfnn3tj348@group.calendar.google.com title="ECSE-4750 Fall 2009, RPI" width=800 :)
Homeworks
There will be about a dozen homeworks.
Lectures and labs day-by-day, Oct-Nov
No
| Date
| Summary
|
13
| Fri Oct 2
|
- Tutorial on picking
- gasket3dl.c gasket3 with a display list. On my S10 netbook, it's twice as fast.
- pickdepth.c picking and name list.
|
14
| Tues Oct 6
| review for midterm exam
|
15
| Wed Oct 7
| Midterm exam. Midterm Solution.
|
| Fri Oct 9
| no class
|
16
| Wed Oct 14
| Lab to discuss midterm.
|
17
| Fri Oct 16
|
- AngelCG10.ppt Geometry. Most interesting points:
- Points vs vectors (in this context):
- A point is a position.
- A vector is a delta, a displacement or change from one point to another.
- Parametric representation of line
- given 2 endpoints: {$ P(t)=t A + (1-t) B $}
- given one point and the direction (tangent) {$ P(t) = A + tD $}
- Parametric representation of plane, given 3 points:
{$ P(u,v)= A + u(B-A) + v(C-A) $}
- Parametric representations of curves and surfaces are important later.
- Normal to plane: {$ N = (B-A)\times (C-A) $}. The length of N is
probably not 1, so you'll then need to normalize it.
- AngelCG11.ppt Representation. Interesting points:
- Points in space don't need coordinates. E.g., you might name them.
However, you need coordinates to work with them mathematically.
- You can imagine a fixed universal coordinate system.
- However, you can work with different coordinate systems for the same points.
E.g., for an airplane:
- you might measure in meters from the nose with z pointing back, or
- in feet from the center of the wings with z pointing up, or
- ...
- You define a coordinate system by specifying (in terms of the
universal coordinate system)
- its origin, and
- the directions of its 3 axes.
- If you know the coordinates of a point in one system, you can
compute its coordinates in another.
- Homogeneous coordinates - big and important topic.
- My note on homogeneous coordinates and projections demoed by Albrecht Durer.
|
18
| Tues Oct 20
|
- Note that term project proposal is due Fri.
- AngelCG12.ppt Transformations
- Each type of transformation is a matrix.
- If applying several transformations, faster to first multiply the matrices,
then just multiply all the points by that one matrix.
- AngelCG13.ppt Transformations 2
|
19
| Wed Oct 21
| regular lecture
- My note on 3D rotation
- all rigid transformations in 3D that don't move the origin have a line of fixed points, i.e., an axis, that they rotate around.
- deriving the vector formula for a rotation given the axis and angle
- computing the matrix from a rotation axis and angle
- testing whether a matrix is a rotation
- if it is, then finding the axis and angle
- Bill Jacobs' OpenGL video tutorial - excellent
|
20
| Fri Oct 23
|
- The big unsolved problems in (or using) CG (and related tech) (my view):
- Using CG to control complicated systems
- Augmented reality, haptics
- Using CG to understand large and complicated systems and data sets
- Using CG and videogame techniques to
improve learning.
- Games force interaction, and provide small immediate rewards.
- It's like tossing fish to seals at Sea World.
- How to use those ideas for more effective teaching?
- (Nothing to do with CG, but very interesting):
Designs, Lessons and Advice from Building Large Distributed Systems at Google
- AngelCG13.ppt OpenGL transformations
- Note that the last transformation catenated onto the current matrix is
the first transformation applied to the object.
- (Unless I hear objections) I'll defer quaternions until later (if there's
time).
- More info is in chapter 4.
- AngelCG14.ppt Model Building
- This topic becomes ever more important as your models get bigger.
- The goal is to store large models in a more organized way, and then render them
with fewer function calls.
- We start to see the separation of geometry from topology.
- A goal is to represent one piece of info, such as a vertex location, only once.
- Another goal is to store things that change more often (geometry), separately
from things that don't (topology).
- AngelCG15.ppt Classical viewing
This IMHO is largely obsolete. However you should recognize the terms. ''Vanishing
points'' is useful for drawing perspective objects by hand.
- AngelCG16.ppt Computer viewing
- There are utility routines to help specify the camera and projection.
- The big idea is view normalization or projection normalization. We
want to view the object with our desired perspective projection. To do this, we
transform the object into another object that looks like an amusement park fun
house (all the angles and lengths are distorted). However, the default parallel
projection of this normalized object gives exactly the same result as our desired
perspective projection of the original object. Therefore, we can always clip
against a 2x2x2 cube, and project thus: (x,y,z)->(x,y,0) etc.
More info is in Angel, page 270 and the next slide set.
- Reading: Chapter 5.
|
|
21
| Tues Oct 27
|
- AngelCG17.ppt Projection matrices
- AngelCG18.ppt Shading I
- The big idea is the Phong shading model.
- AngelCG19.ppt Shading II
- We start to get into OpenGL specifics.
|
22
| Wed Oct 28
| special lecture
This is not CG, but is interesting enough to go to. There will be no exam
questions on this.
Dynamic Instrumentation for Application Security and Analysis
Modern applications, with dynamically-loaded modules and
dynamically-generated code, are assembled at runtime. Consequently, the
power and reach of static analysis tools are diminishing. In this talk, I
will present DynamoRIO, a general framework for efficient, fine-grained,
and comprehensive code observation and modification entirely at runtime.
DynamoRIO is a flexible platform for creating dynamic tools in areas
including program analysis, introspection, profiling, auditing, trace
gathering, taint tracking, optimization, translation, and more. Tools
built with DynamoRIO operate on unmodified application binaries on
commodity hardware. I will discuss in detail several particular tools,
including a system for providing strong security guarantees during program
execution. Dubbed Program Shepherding, it turned into a successful,
award-winning commercial security product.
Bio: Derek Bruening leads the Advanced Development Tools team at VMware. Prior
to VMware, he co-founded the security company Determina, which
commercialized the Program Shepherding security system based on DynamoRIO.
Determina was acquired by VMware in August 2007. Derek holds a PhD, MEng,
and BS from MIT, where he was the primary author of DynamoRIO.
The DynamoRIO tool platform was first released to the public in June 2002
and has since been used by many researchers to develop systems ranging from
taint tracking to prefetch optimization. DynamoRIO is now publicly
available in open source form at dynamorio.org.
Host: Ana Milanova (x6887)
Wednesday, October 28, 2009 CII (LOW) 3051 - 4:00 p.m. to 5:00 p.m.
|
23
| Fri Oct 30
|
- AngelCG20.ppt Shading in OpenGL
- cubeview.c. Shows smooth shading the faces of
a cube, and rotating it. See Angel 5.10.
- sphere.c. Shows 3 modes of shading a sphere
with different levels of accuracy.
- shadow.c. Shows how to create a shadow onto a
flat surface by projecting the object onto that surface.
See Angel 5.10.
- tutors_src.zip.
Nate Robbins's light tutorial.
Reading:
Angel 5.10, 6.
|
| Tues Nov 3
| no class
|
| Fri Nov 6
| no class
|
24
| Tues Nov 10
|
- Computer graphics in the real world (enrichment only)
- Forma Urbis Romae -
reconstruction of a street map of 211AD Rome from 1186 pieces
like this one:
- Another OpenGL tutorial
The Practical Physicist's OpenGL tutorial
Edward S. Boyden
- Steve Baker's notes on some graphics topics:
- GL_MODELVIEW vs GL_PROJECTION
- basic OpenGL lighting
- Euler angles are evil
- Smooth Shading 'Gotcha's in OpenGL
- AngelCG21.ppt Implementation I - Rasterization, Clipping
We now change from learning the API to studying how things are
implemented under the API.
- Advantage of using Cohen-Sutherland line clipping.
- You still have to include the code for the detailed
clipping since sometimes
the CS algorithm reports that it doesn't know.
- However often it can classify the line segment (or the box with
everything inside) as either completely in or else completely
out.
- In that case, the rest of the pipeline is faster.
- However you have to write more lines of code.
- You don't have to know how this works, only what its purpose is.
- AngelCG22.ppt Implementation II - Clipping, Visibility
- clipping as a pipeline
- clipping concave polygons can break them into pieces
- tesselating concave polygons - breaking them into triangles - is common
- some visibility (aka hidden surface) algorithms iterate through the objects, others iterate through the pixels.
|
25
| Wed Nov 11
| regular lecture
- Properties of the various visibility methods:
- Painters:
- Sorting the faces is hard and maybe impossible.
Then you must split some faces.
- However sometimes some objects are always in front of
some other objects. Then you can render the
background before the foreground.
- Z-buffer:
- Subpixel objects randomly appear and disappear
(aliasing).
- Artifacts occur when objects are closer than their
Z-extent across one pixel.
- This happens on the edge where two faces meet.
- BSP tree:
- In 3D, many faces must be split to build the tree.
- Bresenham presents the fast line and circle drawing
algorithms better than the text.
- For more info on testing whether a point is in a polygon, see
my
note.
Also see the comp.graphics.algorithms FAQ, question 2.03.
- The flood fill will fail if the interior is not connected.
That happens when two close edges cause adjacent pixels to be
set. It will also fail if there is a gap in the perimeter -
the color will leak out.
- The scan line fill must handle special cases like a vertex
being on a scan line. My solution is to pretend that any
vertex on a scan line is really slightly above. This is a
simple case of a serious technique called ''Simulation of
Simplicity'' invented by Herbert Edelsbrunner.
- One problem with interpolating color inside a polygon is
that you may be creating successive frames of a video.
Then, the color must be consistent from frame to frame
even as the object is moving.
E.g. if a quadrilateral rotates, it may be triangulated
differently depending on its orientation. The two
different triangulations may get shaded differently.
- Anti-aliasing is a big and important topic.
- Bresenham circle algorithm.
- AngelCG23.ppt Implementation III, ctd
Reading:
chapter 7.
|
26
| Fri Nov 13
|
- AngelCG24.ppt Buffers
- OpenGL and images:
- Following the less is more design philosophy, OpenGL
has no facilities for reading and writing image data to
disk. It does let you bitblt data between its buffers
and your arrays. Otherwise, use your choice of tools.
- Netpbm is a large set
of standalone command line programs for processing and
converting image files.
These programs follow the Unix pipe metaphor, and can be
chained together.
- Imagemagick is another
large set of standalone command-line programs for
mogrifying images.
- You can run any standalone program from inside your C
program with the system call. The only way to get
info back and forth between that program and your
program is via a file. It is dangerous to run
system with an argument partly supplied by the user
unless you thoroughly check for metachars. That, in a
slightly different context, is the flaw exploited by the
SQL injection attack on RFID tags.
- xv is a nice interactive
shareware program, which I used in class today. I
actually bought 2 licenses years ago.
- PPM (portable pixmap) is a file format that is so simple
you can easily write programs to read or write it. Its
files are big, but you can use one of the other above
systems to convert. I showed this in class, and Angel's
slides also do.
- AngelCG25.ppt Texture mapping
The hard problems with texture mapping are:
- Determining what texel in the texture map corresponds to
each pixel in the frame buffer. The involves inverting
some complicated mappings.
- That the pixel in the frame buffer is rarely the same
size as the corresponding texel, but may be much larger
or smaller. That varies with the distance of the object
from the camera. Solutions include various smoothing
techniques, and using a hierarchy of texture maps of
different resolutions.
- AngelCG26.ppt OpenGL Texture mapping
Reading:
chapter 8.
|
27
| Tues Nov 17
|
- tutors_src.zip.
Nate Robbins's tutorials (ctd).
- fog
- texture
- http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=06
another nice and very detailed texture programming
tutorial, from Neon Helium productions
- http://gpwiki.org/index.php/OpenGL_Tutorial_Framework:Texture_Mapping
- AngelCG27.ppt Compositing and blending
- AngelCG28.ppt Programmable pipelines
- AngelCG29.ppt GLSL I
|
28
| Wed Nov 18
| regular lecture
- AngelCG30.ppt GLSL II
- Vertex and fragment shaders from chapter 17 of the OpenGL
SuperBible.
- AngelCG39.ppt Curves and surfaces in OpenGL
|
29
| Fri Nov 20
|
- Now we have a few days on HW (vertex and fragment)
shaders. I'll teach
with examples from the excellent
Open GL SuperBible. See also
http://www.pdf-search-engine.com/the-opengl-superbible-pdf.html.
The example programs are
here.
# GPUs:
- Wikipedia:Graphics_processing_unit
- Wikipedia:Radeon_R700
- http://ati.amd.com/products/radeonhd4800/overview-4890.html
- http://www.anandtech.com/printarticle.aspx?i=3354
- http://hardware.slashdot.org/article.pl?sid=09/04/02/193256
- http://www.extremetech.com/article2/0,2845,2344294,00.asp
- http://www.phoronix.com/scan.php?page=article&item=amd_radeon_hd4890&num=1
- http://www.gpureview.com/
- GPGPU:
- http://www.gpgpu.org/
- http://graphics.stanford.edu/%7Ekayvonf/papers/fatahalianCACM.pdf
- A closer look at GPUs
- http://gates381.blogspot.com/
- http://graphics.stanford.edu/~kayvonf/official/index.html
- http://s08.idav.ucdavis.edu/
- http://s08.idav.ucdavis.edu/luebke-nvidia-gpu-architecture.pdf
- http://s08.idav.ucdavis.edu/luebke-cuda-fundamentals.pdf
- Wikipedia on shaders:
- Wikipedia:Shader
- Wikipedia:Vertex_shader
- Wikipedia:Geometry_shader
- Wikipedia:Pixel_shader
- Wikipedia:Unified_shader_model
- Wikipedia:Shading_language
- Wikipedia:OpenGL_Shading_Language
- Wikipedia:Comparison_of_OpenGL_and_Direct3D
- GPU Programming For The Rest Of Us
Note the matrix multiplication example.
|
30
| Tues Nov 24
|
- Please email Kalyana with your preferred date (Dec 8 or 9) for your
fast forward talk on your term project. We will put as many people
as possible on their preferred date. Your team needs to talk only
once, not once per person.
- SIGGRAPH 91 and 92 preliminary programs. This is a bowdlerized version, from whence I
have removed items that might give offense.
- Raytracing jello brand gelatin
- Shader examples from chapters 16 etc of the OpenGL SuperBible.
Local Linux version including
executables. Other versions linked above on Nov 20.
|
31
| Tues Dec 1
|
Bill Hoffman from Kitware
talking in class on Tues Dec 1 about CMake/VTK/ITK/ParaView/Kitware,
e.g. VTK.
|
32
| Wed Dec 2
|
Go to the IP panel at 4:15 in DCC (aka Darrin) 324.
|
33
| Thu Dec 3
|
This is only enrichment since it's not in the official class time. If
you can, go to the Image Space Photon Mapping talk (see the google calendar) at
4pm in JEC3117
"The computer-generated 3D graphics in films like Terminator 4 are visually indistinguishable from real objects. They are hard to compute, however; the Photon Mapping algorithm used in most film productions requires about one day to compute every second of film. Our new Image Space Photon Mapping transforms that algorithm to a space where it can be evaluated in a fraction of a second. This enables nearly cinema- quality lighting for interactive applications like video games. We recently..."
|
34
| Fri Dec 4
|
- AngelCG31.ppt Hierarchical Modeling I
- AngelCG32.ppt Hierarchical Modeling II
- AngelCG33.ppt Graphical Objects and Scene Graphs
- AngelCG34.ppt Particle Systems
|
35
| Tues Dec 8
| Student fast forward presentations of term projects - 1.
|
36
| Wed Dec 9
| Student fast forward presentations of term projects - 2.
|
37
| Fri Dec 11
|
- Remember the IDEA survey.
- OpenGL Design tradeoffs and notes
- Review, including old finals.
|
37
| Mon Dec 21
|
Final exam. 11:30-2:30.
|
Syllabus
Interested in taking ECSE-4750 Computer Graphics?
ECSE-4750 Computer Graphics Fall 2009 will be 80% the same
as in Computer Graphics Fall 2008. I may add some
lectures on data visualization, since that topic is useful
to many people. I am glad to talk to anyone thinking about
taking this course.
Don't worry about the COCO prereq. That is merely a proxy
for sufficient computer background. Get an ADD form, fill it
out, pin it by my door, I'll sign it, pick it up, turn it
in.
Obsolescence in engineering
Engineering has many beautiful solutions that very smart
people worked hard to perfect, which are now obsolete.
That's Creative_destruction. Some are still
in the text, such as CRTs. We'll mention them only a
little, for historical context.
GLUT
GLUT -
The OpenGL Utility Toolkit interfaces between OpenGL and
your windowing system. It adds things, such as menus, mouse
and keyboard interface, that were considered too
platform-dependent and too far outside OpenGL's core mission
to include in OpenGL. GLUT is platform independent, but
quite basic. There are several alternatives, some of which
are platform dependent but more powerful. You can't always
have everything at once. However GLUT is the safe solution.
No Oct 9 class
There will be no class on Fri Oct 9. There will be an
extra lecture in one of the lab slots, TBA.
HW 1 Tips for everyone in the class
William Maio writes,
Hello Professor Franklin,
I was doing my computer graphics hw, and I found some
youtube videos that teaches people how to solve the homework
problems. I thought it was really useful and I thought if
people can see those videos then it would save them some
time. I have not really learned plane equations and line
intersecting planes, so these youtube videos were very
helpful.
- Finding the Scalar Equation of a Plane
http://www.youtube.com/watch?v=ISsO9Q4UCZw
- Finding the Point Where a Line Intersects a Plane
http://www.youtube.com/watch?v=qVvvy5hsQwk&feature=related
Thanks! /WRF
Linux Compiz - OpenGL occasional problem
Compiz is an option in linux systems that adds eye candy to
the display. On some systems (but not others), it causes
problems with OpenGL programs. The solution is to disable
compiz, such as in Preferences → Appearance → Visual
effects, setting None.
https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/96991
Possible terrain visibility senior project
Anthony Klinkert (Klinkert@SMU.edu) writes,
"I would like to provide you with an announcement for your advanced computer
animation class seeking a student doing a senior project that might be
interested in the following real-world problem. The task would be to create a
computer utility that downloads Shuttle Radar Topography Mission (SRTM) terrain,
adjusts the terrain for earth curvature, places and shows/visualizes candidate
sites on real terrain, checks line-of-site (LOS) from one site to all other
sites via great circle paths, then has an ability to accept under outside
iterative program control adjustments to tower heights, and rechecking of LOS,
until LOS is achieved, or a non-LOS condition exists even up to an upper limit
on tower height. Basically, it accepts coordinates, and outputs a table of
LOS/NLOS between one coordinate and every other coordinate. That would be the
extent of the project. The student would learn a great deal about a real,
growing and exciting industry problem."
Contact him with a copy to me if you're interested.
His website is http://www.klinkert.net/
Science Quadrangle North
There was a question about the work. Here's Physical Plant's blog:
http://blogger.rpi.edu/plog/
Graphics programming position available
Prof Brett R. Fajen, Department of Cognitive Science, is
looking for one undergraduate student with C/C++ and OpenGL
experience to work as a programmer in my virtual reality
lab. The primary responsibility will be to write code to
develop virtual environments that will be used for research
on human visual perception and motor control.
The ideal candidate will have expertise in C/C++ and
graphics programming, and be willing to work at least 10
hours per week throughout the semester. The position pays
$12 per hour.
This is an excellent opportunity for students to develop their
programming skills, gain experience working with virtual reality
equipment, and learn a little about research in cognitive science.
For more information, please contact Brett Fajen (fajenb@rpi.edu).
Simulating 3-button mouse with 2 buttons
Sometimes you can set an option for the mouse and then press
both buttons simultaneously.
Lectures and labs day-by-day, Aug-Sept
No
| Date
| Summary
|
1
| Tues Sep 1
| Topics:
- Syllabus and Intro.
- AngelCG01.ppt: What is Computer Graphics?
Reading:
- Angel, chapter 1.
Announcements:
- Homework 1 available.
|
2
| Wed Sep 2
|
In lab: work on homework, or go to the Carter financial talk.
|
3
| Fri Sep 4
|
- Chapter 1. The progress of Computer Graphics is largely the
progress of hardware. We'll see more of this later.
However, here's an intro.
- What physical principles are each type of HW based on?
- CRT: certain rare earth materials emit photons when hit
by electrons. Explaining this is what got Einstein his
Nobel (not relativity).
- LCD: electric field causes big asymmetric molecules to
untwist so that they no longer rotate polarized light
passing through them.
- What engineering challenges required solving?
- Shadow-mask CRT: electron beams travel varying distances
at different angles, but don't hit the wrong phosphor even
as the system gets hotter. The precision is 0.1%.
- Hi-performance graphics requires hi bandwidth memory.
- Virtual reality headsets require knowing where your head
is and its angle (harder).
- What tech advances enabled the solutions?
- Raster graphics requires cheap memory.
- LCD panels require large arrays of transistors.
- AngelCG02.ppt: Image Formation
- AngelCG03.ppt: Models and Architectures
|
4
| Tues Sep 8
| Topics:
Simple2
Simple3
Simple4
Simple5
- Engineering Grounded In Reality
- A little on API philosophy, e.g,
Portability And Standards, and submarine patents.
- AngelCG04.ppt: Programming in OpenGL I
- simple2.c - simplest OpenGL program. Features:
- including required include file
- initializing OpenGL
- creating a top level window of default size and position
- setting window title
- defining and registering a display callback
- entering the main event loop
- clearing the frame (aka color) buffer to a default color
(black)
- drawing a polygon with the default color (white)
- forcing pipeline to flush
- compiling and linking
- simple3.c - slightly bigger OpenGL program
- setting vertex colors and observing polygon color
- overlapping polygons
- my Makefile - YMMV
Reading:
- Angel, chapter 2.
Announcements:
- To compile the OpenGL examples in Visual C: If you get a
redefinition error for exit, then do not include
stdlib.h in your program. It is already included by
another include file, and it lacks an inclusion guard.
- Homework 1 is due Wed Sep 9.
- Homework 2 now available, due Sep 16.
- simple4.c - modification created in class to
add another polygon that obscures the polygons below it
(this also happened with simple3).
- simple5.c - modification created in class to
put glVertex in a for loop.
|
5
| Wed Sep 9
| chance to talk about homework, and about OpenGL and C and C++ in Windows.
|
6
| Fri Sep 11
|
Shape_test
Topics:
- AngelCG05.ppt: Programming in OpenGL II
- Demo, discuss, and modify
shape_test.c. New features:
- OpenGL datatypes like GLfloat
- Allocate and enable depth (aka Z) buffer
- Perspective view
- Several utility polyhedra
- sphere, cone, cube, torus, dodecahedron, teapot,
octahedron, icosahedron
- wire or solid
- Light source and color
- Enabling and disabling lighting
- Reshape callback
- Push and pop transformation matrix
- Rotate, scale, translate transformations
- Using viewport to draw into a small region of the
window. Anything outside the viewport is clipped.
Reading: Announcements:
|
7
| Tues Sep 15
|
Gasket2Gasket3
Topics:
- AngelCG06.ppt: Programming in OpenGL III
- Demo, discuss, and modify
gasket2.c . Features:
- Array of vertices passed to glVertex2fv
- Array of triangles
- Recursively creating the graphic object
- glBegin and glVertex2fv are in different routines. It's
the order in which they are executed that matters, not their
order in the source file.
- Parallel (ortho) projection.
- Demo, discuss, and modify
gasket3.c . Features:
- 3D.
- Spec colors in an array.
- Reshape callback. It handles rectangular windows,
keeping the tetrahedra undistorted, with the same aspect
ratio, centered in the window.. Portrait and landscape
mode are separate cases.
- glPostRedisplay
Announcements:
- Homework 3 available, due Sep 23.
|
8
| Wed Sep 16
| Chance to talk about homework etc.
|
9
| Fri Sep 18
|
|
Topics:
- AngelCG07.ppt: Input and interaction
- Demo, discuss, and modify
alpha.c . Features:
- color a triangle with a partially-transparent color, which, when drawn
into the color buffer, will mix (blend) with the existing color.
- enable blending in OpenGL.
- Demo, discuss, and modify
paint.c . Features:
- keyboard callback
- write the key at a position stored in a global and
update that
- mouse callback
- accumulating info, such as triangle vertices, from
successive callbacks
- converting coords from what is passed to mouse callback
(origin is top left corner) to what is used by openGL
window (origin is bottom left corner)
- picking a region of window by analyzing coords of mouse
click.
- immediate mode: on redisplay, if it's not explicitly
redrawn, it's not there any more.
- colors as unsigned bytes.
- using globals to pass data to/from callback routines.
- menus
- create
- add entry
- add submenu
- attach to mouse button
- menu callback
- arg is the int key associated with that menu entry
- pushing and popping attributes
- writing text
- setting position
- writing char
- updating position by width of char
|
alpha
paint
|
Reading:
Angel, chapter 2, excluding 2.11
10
| Fri Sep 25
|
- passivemotion.c. Changes the image depending
on where the mouse is, using a mouse passive motion
callback.
- passivemotion2.c. Extends passivemotion to
redraw only when something changes. This prevents the
image tearing caused by redrawing during the refresh.
It's also more efficient.
- single_double.c. Shows:
- The difference between single and double buffering.
- Creating two graphics windows in one program. Note the order:
- Set the display mode.
- Create the window.
- Register the callbacks.
- Repeat for each window.
- Call MainLoop.
- Mouse input.
- Changing the idle callback. The new one replaces the
previous one.
- getinfo.c. Shows how to read information about
the OpenGL version and how to get internal state variables.
This also shows how to access command line arguments.
This shows just a sample; there are more.
- showinput.c. Shows how to get input. This also
shows the coordinate system used to report mouse events. Units
are pixels.
(0,0) ...... (xmax,0)
....
....
....
(0,ymax).....(xmax,ymax)
- Beyond double buffering:
How to avoid tearing caused by swapping the foreground and
background buffers in the middle of refreshing the image and
the two buffers have different images?
- One solution is to wait until the vertical retrace to swap
the buffers. However, if each buffer takes about 1/60 second
to recompute, sometimes more and other times less, then the
refresh rate will fluctuate between 1/60 and 2/60 second.
- Another solution is to use 3 buffers. You display from the
1st, have the 2nd ready to swap with the 1st in the next
vertical retrace, and meanwhile compute into the 3rd. This
uses 50% more memory.
- How to fight tearing
- OpenGL Extension WGL_I3D_swap_frame_lock
- Smooth Gaming with Triple Buffering
- AngelCG08.ppt more on callbacks
Reading:
Angel, chapter 3.
Announcements:
- Homework 4 available, due Oct 2.
|
11
| Tues Sep 29
| Special presentation Innovation Engineering and the Software Technology Program
Steve Linthicum, Manager Innovation Engineering GE Health Care IT
Rex Roeges, Technology Account Manager Software Technology Progream GE Health Care IT
Innovation Electric develops new products and tools for the
health care environment using cutting edge technologies.
The STP recruits top graduates in Computer Science and
Computer Engineering for a 3-year program to develop top
engineering talent in medical infomatics.
GE Health Care IT is a major application of Computer
Graphics and interactive techniques, and is a major employer.
|
12
| Wed Sep 30
| regular lecture (not optional lab) Topics:
- OpenGL platform dependencies:
- On some systems, such as my (expensive) Lenovo w700 laptop at home, both
windows of single_double look the same. Presumably those systems have
better graphics. They look different on the cheap Lenovo s10 laptop
that I use in class.
- On some systems again like my w700, paint's screen does not clear when
you hide and the expose the window. That is because the windowing
system is storing the window's contents, so that the program does not
have to redraw the window. However, I think that popping up a program
menu still clears the window. Please report any counterexamples.
- Debugging OpenGL: The
OpenGL FAQ and Troubleshooting Guide can be useful.
- more OpenGL reference material:
- I've been using the OpenGL Programming Guide, 6th edition. ($42 from
Amazon.
The 5th edition is
online free. The
differences are small. My mirror of the demo programs is Gfiles:OpenGL-1.4-ProgGuide.tgz .
- The
OpenGL(R) SuperBible: Comprehensive Tutorial and Reference (4th Edition) ($51
from Amazon) is also excellent.
- So is Angel's OpenGL Tutorial, which is smaller.
- square2.c. Demonstrates glutMotionFunc callback.
Change glutMotionFunc to glutPassiveMotionFunc to see what
happens.
- manywindows.c. Shows that many top level windows
(a new one with each left mouse click) can be dynamically
created.
- paintxor.c modified by paint.c to write triangles
into the color buffer in XOR mode. Everything else is still
written in COPY mode. XOR mode is useful for cursors and
rubberbanding because XORing the same object twice restores the
original buffer.
- feedback.c. Captures drawn objects, after
transforming them, into an array instead of drawing them.
- AngelCG09.ppt Better interactive programs. The problem is finding what in your hierarchical 3D object that's been transformed corresponds to the mouse position. This is harder because you may have a tree of objects of subobjects. Think of a fleet of cars, each with 4 wheels, each with 5 lug nuts. It's not sufficient to know that you clicked on a nut. You need to know that you clicked on nut #2 of wheel #3 of car #17. That's where the name stack comes in.
|
Dreamworks at RPI Nov 5 and 6
DREAMWORKS ANIMATION SKG is BACK!
DREAMWORKS ANIMATION SKG COMPANY OVERVIEW with Jim Conrads, Global Outreach Supervisor at PDI/DreamWorks Animation SKG and RPI alumnus Eli Bocek-Rivele, Lighting Technical Director for Madagascar 2
- Open Presentation on Thursday, 11/5 at 4:00 PM in Sage 3510: Jim Conrads will give an overview of how movies are made at DreamWorks Animation SKG, and the skills and experiences necessary to work in the CG Animation field. He will show clips from some upcoming films, explain the DreamWorks Animation SKG production workflow and talk about how to present yourself in your resumes and demo reels to grab the attention of employers. He will also be showing examples of successful demo reels so you can see what will land you a job in the CG Animation, Visual Effects and Gaming industry.
The presentation is open to all students. DreamWorks Animation is particularly interested in meeting EMAC, EART, CSCI, ARCH & PDI/DIS students. Please come by for this exciting event!
For more information about DreamWorks Animation SKG, please visit http://www.dreamworksanimation.com
- Friday, 11/6 at 1:00 PM in Sage 2202 : EMAC, EART and CSCI students are invited to hear Eli Bocek-Rivele (B.S. EMAC/CSCI and M.S. CSCI) give a special presentation entitled "What Does a Department Technical Director at DreamWorks Do?". The presentation is geared towards students in these majors who are interested in this exciting field.
Next week:
- Tues: no lecture
- Wed: Kalyana talk on current GPUs in lab time
- Thurs: optional talk by Dreamworks
- Fri: optional talk by Dreamworks
- Fri: no 2pm lecture.
Pmwiki available for student use
Anyone who'd like to use a wiki group for the term project, as I use
for the class, email me. Your material will be readable only by
Kalyana and me (unless you wish to open it up).
Next year I may have everyone turn in material by putting it up on
separate wiki pages. Opinions?
Studies in Sketch-Based Modeling (optional extra) CANCELLED
Julie Dorsey
Yale University
Thursday, November 12, 2009
Sage 3303 - 4:00 p.m. to 5:00 p.m.
Refreshments at 3:30 p.m.
Prof Dorsey has the flu, so her talk will be rescheduled to another date.
Extra office hours 11/19
Kalyana will be in JEC6042 on Thurs 11/19 from 2 to 3 pm.
CMake/VTK/ITK/ParaView/Kitware - An open source visualization company and its tools
We are fortunate to have Bill Hoffman from Kitware
talking in class on Tues Dec 1 about VTK etc.
IP panel discussion on Dec 2
A Panel Discussion on Managing Your New Ideas & Intellectual
Property
George Jakobsche,
Patent Attorney,
Sunstein Kann Murphy &
Timbers LLP, Boston
Charles Carletta,
General Counsel, RPI
Ron Kudla,
Executive Director, Intellectual Property &
Technology Transfer, RPI
DCC 324, 4:15pm.
Talk: Image Space Photon Mapping
This is not an official part of the course, but may be of interest.
Morgan McGuire
Computer Science Department
Williams College
The computer-generated 3D graphics in films like Terminator 4 are
visually indistinguishable from real objects. They are hard to compute,
however; the Photon Mapping algorithm used in most film productions
requires about one day to compute every second of film. Our new Image
Space Photon Mapping transforms that algorithm to a space where it can
be evaluated in a fraction of a second. This enables nearly cinema-
quality lighting for interactive applications like video games. We
recently demonstrated experimental results of the image space algorithm
on complex scenes with dynamic lights and objects, using assets from
real games.
Formally, photorealistic rendering as a sampling and reconstruction and
Photon Mapping is one of many non-deterministic approximation algorithms
for that problem. A better reconstruction strategy enables our Image
Space method to converge with fewer samples than previous methods, and
our sampling strategy is better-suited to parallel evaluation on graphics
hardware. I will conclude with speculation on how our sampling and
reconstruction observations might be applied to other problems in high.
This talk describes joint work with David Luebke at NVIDIA Corporation.
Bio:
Morgan McGuire is an assistant professor of Computer Science at Williams
College. He received his PhD from Brown University in 2006. He served
as general and papers co-chair of the ACM Symposium on Interactive 3D
Graphics and Games in 2008 and 2009, is an editor of the Journal of the
Graphics, Game, and GPU Tools, and is the lead author of the new textbook,
Creating Games: Mechanics, Content, and Technology.
He has contributed to many commercial products including the E-Ink display
for the Amazon Kindle, the PeakStream high-performance computing infra-
structure acquired by Google, the Titan Quest role playing game, and the
Marvel Ultimate Alliance 2 video game for Xbox 360.
Host: Barbara Cutler (3274)
Thursday, December 3, 2009
CII (Low) 3039 - 4:00 p.m. to 5:00 p.m. (note the changed room)
Refreshments at 3:30 p.m.
Studies in Sketch-Based Modeling CANCELLED FOR THE 3RD TIME
Julie Dorsey
Yale University
Thursday, Dec 10, 2009
Sage 3101 - 4:00 p.m. to 5:00 p.m.
Refreshments at 3:30 p.m.
Corrected fast forward presentation dates
Everyone got their first choice!
Dec 8
Team | Name | Title |
2 | Chao, Jeffrey | Earch clock |
4 | Gordon, Lewis | Interactive model of the solar system |
5 | Hall, Ryan | Visual clock and time management system |
5 | Dirdo, Alex | " |
9 | Hunt, Rebecca | Anaglyphs |
10 | Tamoney, Andrew | 3D tetris with OpenGL |
10 | Whitney, Sloan | " |
Dec 9
Team | Name | Title |
17 | Todd, Michael |
1 | Oparowski, William |
3 | Bishop, Bennett |
3 | Vaughn, Craig |
6 | Jesuraj, Jonathan |
6 | Tahara, Lincoln |
7 | Barton, Benjamin |
7 | Burt, Gregory |
8 | Saylo, Robert |
11 | Kelly, Kathryn |
12 | Kogge, Daniel |
12 | Maio, William |
12 | Sweeny, George |
13 | Tam, Sze Yin |
14 | Krolick, Matthew |
14 | Chamberlin, Jay |
15 | Misstear, Alexander |
16 | Vecchio, Paul |
16 | Woodworth, Christopher |
16 | Sieber, Caitlin |
18 | Wagner, Andrew |
18 | Thompson, Keith |
On each date, teams will present in the order listed above. The combined powerpoint file will run continuously in timed mode. Your 5 minutes starts when your first slide appears and includes the time it takes you to get to the front of the room.
Reminder: Timed Powerpoint presention required
This is a reminder that a 5 minute timed Powerpoint presentation is
required from each group the day before your presentation. We will
assign dates on Wed 12/2 from requests received by then. Thanks. For
an example of a 2 minute presentation, see my fast forward
presentation
at the ACM SIGSPATIAL GIS conference in Nov, which won the best fast
forward presentation award.
Your presentation may have sound or it may be silent while you talk as
it is playing.