"Imagination will often carry us to worlds that never were. But without it, we go nowhere." -- Carl Sagan
![]() | ![]() | ![]() |
Handouts | Classes | Projects |
This page was last updated: December 2, 2023
Welcome to CS 450/550! I am so glad to have you here. I really enjoy getting to work wth this class. This will be an excellent chance for you to exercise your creativity. You will surprised by what you will be able to do!
For the latest on OSU's Covid policies, click here. Masks are welcome, but not required.
A special welcome to all you Ecampusers! It is good to have a cohort here that comes from all over the world. That makes you very special!
You will experience the same course that the on-campus students experience. Same material, same notes, same projects, same quizzes, same tests, and same Zoom Office Hours. There are recorded videos that go along with the notes (they are called "LV" for "Lecture Videos" and you will see them in the same table that has links to the notes).
This course is asynchronous and somewhat flexible, but not self-paced. Our schedule for course content and the due dates provide guardrails for how you need to interact with the material.
Like I do whenever I have Ecampus students, I have setup a time every week to do a Live Lecture so that you can hear a discussion of the topics with the chance to ask live questions. On-campus Graphicsers are welcome to come as well. Based on the surveys, the Live Lectures for Fall 2023 will be Wednesdays at 2:00 Pacific Time. They will last until ~3:30. From then until 3:55 will be Office Hours.
The Zoom-room is: https://oregonstate.zoom.us/j/8340727662?pwd=b01tZ0hJUzdHNUtrdTRqSkdwbG4zdz09
These Live Lectures will be recorded so that if you miss them, you can catch them later.
During the LL, you can also ask questions in the Zoom Chat, and I will answer them during the LL and in a document that I will post in the same place on this Class Resources Page that I post the recorded LL videos.
Thanks, Ecampusers, for being here!
The goal of this class, at least the first part of it, is to develop your "graphics thinking", that is, how to go from an idea in your head to actually getting the pixels on the screen. To get you to that state as smoothly as possible, we will start by using a part of OpenGL that has been deprecated, but is easier to learn and apply. (In OpenGL, "deprecated" doesn't mean "gone away", it means "not recommended for efficiency reasons".) Later on, you will learn the recommended (i.e., efficient) ways of using OpenGL.
To see an academic year calendar, click here.
All students are subject to the registration and refund deadlines as stated in the Academic Calendar.
Course material will consist of my notes and web pages.
LV = Lecture Video
NOTE: I am still recording new versions of some of the videos.
Any topic without an LV is one being recorded still.
Stay tuned.
Class Notes Handouts and Recorded Videos in Place of a Textbook
All required course materials for this class will cost you $0.00 (i.e., free).
Week # | Noteset | |||||||
---|---|---|---|---|---|---|---|---|
0 | Class Resources Page | LV | ||||||
0 | Introduction to CS 450/550 | 1pp | 2pp | 4pp | 6pp | LV | ||
0 | A Brief History of Computer Graphics | 1pp | 2pp | 4pp | 6pp | LV | ||
0 | Project Notes | 1pp | 2pp | 4pp | 6pp | LV | ||
0 | The Computer Graphics Process | 1pp | 2pp | 4pp | 6pp | LV | ||
0 | The Science of Pixar | 1pp | 2pp | 4pp | 6pp | LV | ||
0 | Getting Started with OpenGL Programming | 1pp | 2pp | 4pp | 6pp | LV-A | LV-B | LV-C |
1 | Khronos Group's OpenGL 4.6 Reference Card | |||||||
1 | The C/C++ Sample Program | sample.cpp | LV | |||||
1 | Display Lists | 1pp | 2pp | 4pp | 6pp | LV | ||
1 | GL Utility Toolkit (GLUT) | 1pp | 2pp | 4pp | 6pp | LV | ||
1 | Color in Computer Graphics | 1pp | 2pp | 4pp | 6pp | LV-A | LV-B | |
1 | Sines and Cosines for Animation | 1pp | 2pp | 4pp | 6pp | LV | ||
1 | OBJ Files | 1pp | 2pp | 4pp | 6pp | LV | ||
2 | Lighting | 1pp | 2pp | 4pp | 6pp | LV-A | LV-B | LV-C |
2 | Lighting Steps | |||||||
2 | Framebuffer | 1pp | 2pp | 4pp | 6pp | LV | ||
3 | Keytime Animation | 1pp | 2pp | 4pp | 6pp | LV | ||
3 | OpenGL Transparency | 1pp | 2pp | 4pp | 6pp | LV | ||
4 | Texture Mapping | 1pp | 2pp | 4pp | 6pp | LV-A | LV-B | |
4 | Test #1 review. | HTML | ||||||
5 | Geometric Modeling | 1pp | 2pp | 4pp | 6pp | LV | ||
5 | Vertex Buffer Objects | 1pp | 2pp | 4pp | 6pp | LV | ||
5 | GLM | 1pp | 2pp | 4pp | 6pp | LV | ||
5 | A short GLM Primer | HTML | ||||||
6 | Freezing Your Animation | 1pp | 2pp | 4pp | 6pp | |||
6 | Shaders | 1pp | 2pp | 4pp | 6pp | LV-A | LV-B | |
6 | Casting Shadows with OpenGL | 1pp | 2pp | 4pp | 6pp | LV | ||
6 | Forward Kinematics | 1pp | 2pp | 4pp | 6pp | LV | ||
7 | Instancing | 1pp | 2pp | 4pp | 6pp | LV | ||
7 | Rendering | 1pp | 2pp | 4pp | 6pp | LV-A | LV-B | |
8 | Stencil Buffer | 1pp | 2pp | 4pp | 6pp | LV | ||
8 | Animation | 1pp | 2pp | 4pp | 6pp | LV-A | LV-B | |
8 | 3D Printing | 1pp | 2pp | 4pp | 6pp | LV | ||
9 | Setting the Eye Position on an Orbiting Body | 1pp | 2pp | 4pp | 6pp | LV | ||
9 | Stereographics | 1pp | 2pp | 4pp | 6pp | LV | ||
9 | Looking Glass Stereo Quilts | 1pp | 2pp | 4pp | 6pp | LV | ||
10 | Virtual and Augmented Reality | 1pp | 2pp | 4pp | 6pp | LV | ||
10 | Vulkan | 1pp | 2pp | 4pp | 6pp | LV | ||
10 | More Information | |||||||
10 | Test #2 Review | HTML |
Andrew Glassner, Weta Digital: "Exploring the World with Computer Graphics"
Talk Video
Articles
Andrew's short Chicken Crossing
Rob Russ, Pixar: "Behind the Scenes at Toy Story 4
Natasha Anisimova, Blizzard: "Research and Development for Cinematics at Blizzard"
Vinh Le, Pixar (and formerly ILM): "Intro to Visual FX"
Video
To see an academic year calendar,
click here.
For on-campus students, face-to-face class time is:
Monday and Wednesday, 12:00 - 1:40.
Unless otherwise specified,
all classes will be held in the Learning Innovation Center (LiNC) -- Room 228.
Cancelled dates: Nov 22
Note: this schedule is my best guess on where we'll be -- it is only approximate.
Class Schedule
Week # | Start Date | Topics |
---|---|---|
0 | Sept 27 |
Introductions
Discussion of class objectives and how we will go about it A brief history of computer graphics Project Notes The Computer Graphics Process The Computer Graphics Vertex-to-Pixel Pipeline Getting started with OpenGL |
1 | Oct 2 |
Getting started with OpenGL
Project #1 Sample program Color in CG GL Utility Toolkit Display Lists OBJ files |
2 | Oct 9 |
Project #2
Lighting: Ambient, Diffuse, Specular, per-vertex versus per-fragment Framebuffers: the rasterizer, Double-buffering, Z-buffer, Z-fighting |
3 | Oct 16 |
Project #3
Keytime Animation Transparency (blending) |
4 | Oct 23 |
Project #4
Test #1 review. Texture mapping Natasha Anisimova, Blizzard Games, speaking on "Research and Development for Cinematics at Blizzard", on Wednesday October 25, 12:00 noon. This will be shown on Zoom and in LiNC 228 for on-campusers. Here is the Zoom-room. Confirmed. |
5 | Oct 30 |
Geometric modeling: meshes, curves, surfaces, constructive solid geometry (CSG), L-systems
Vertex Buffer Objects (VBOs): their role in non-deprecated OpenGL, how to create them, VBO efficiency versus glBegin-glEnd Test #1 will be taken on Canvas in a 60-minute interval of your own choosing during November 1-5. It will open at 12:00 noon on Wednesday, November 1 and will close at 23:59 on Sunday, November 5. The test will be unproctored and open notes. Andrew Glassner, Weta Digital, who spoke (via video) on: "Exploring the World with Computer Graphics" will appear November 1, 12:00 noon, for a live Q&A session. Here is the Zoom-room. Confirmed. |
6 | Nov 6 |
Shaders: the GLSL shader programming language, vertex shaders, fragment shaders, uniform variables, out/in variables, the role of the rasterizer
Casting shadows: rendering the depth into a texture, two-pass algorithms GLM: its role in non-deprecated OpenGL, its role in vertex shaders |
7 | Nov 13 |
Rob Russ, Pixar, speaking on:
"Behind the Scenes with the Making of Toy Story 4".
This will be a live presentation.
Monday, November 13, starting at 12:00 noon.
Here is the Zoom-room.
Confirmed.
Project #6 Forward kinematics: general hierarchical transformations Rendering: rasterization, ray-tracing, path-tracing, radiosity |
8 | Nov 20 |
Animation: keyframe, forward kinematics (FK), inverse kinematics (IK), physics, chains, cloth, functional animation, motion capture (mocap)
3D printing No class on Wednesday, November 22! Enjoy an extra day of Thanksgiving. |
9 | Nov 27 |
Vinh Le, Pixar (and formerly ILM), who spoke (via video) on:
"Intro to Visual FX"
will appear Nov 29, 12:00 noon, for a live Q&A session.
Here is the Zoom-room.
Confirmed.
Stereographics: non-symmetric viewing volume Producing "quilts" |
10 | Dec 4 |
Virtual and augmented reality: viewing headsets, distortion shaders, foveated rendering, spherical stereo rendering
OpenXR Vulkan: differences from OpenGL More Information document |
T2 | Dec 13-17 | Test #2 will be taken on Canvas in a 60-minute interval of your own choosing during December 13-17. It will open at 12:01 PM on Wednesday, December 13 and will close at 11:59 PM on Sunday, December 17. The test will be unproctored and open notes. |
I will do a Zoom-based Live Lecture every week on Wednesdays starting at 2:00 Pacific Time. We will go over some current materials, some upcoming materials, and maybe some extra materials (such as CG videos). It will be a time for you to also ask live questions or chat questions. Attendance at the live session is optional. These sessions will be recorded in case you missed them. Here is my Zoom-room.
Week # | Chat | Video |
---|---|---|
0 | Video | |
1 | Video | |
2 | Video | |
3 | Video | |
4 | Video | |
Natasha | No recording was allowed. | |
Blender, I | Video | |
5 | Video | |
6 | Video | |
7 | Video | |
Blender, II | Video | |
8 | Video | |
9 | Video |
Professor
The class is being taught by
Professor Mike Bailey.
Office: | Kelley 2117 (2nd floor, south side, overlooking the Milam dumpsters) |
E-mail: | mjb@cs.oregonstate.edu |
Phone: | 541-737-2542 (probably will need to leave a message) |
Zoom-room: | Zoom |
Above all, know that I am here to help you.
See below |
or, anytime my office door is open |
or, by appointment -- send email |
Unless otherwise indicated, all OHs are on Zoom. All times are Pacific time. LL signifies "Live Lecture".
Su Jung Hwang (SJH) | Naren Digambar Khake (NDK) | Nirmit Patel (NP) | Hojun Shin (HS) | Uddyan Sinha (US) | Jian Tang (JT) | Grace Todd (GT) | Prof. Bailey (PB) | |
hwangsuj | khaken | patenirm | shinhoj | sinhau | tangjian | toddgr | mjb | |
Zoom-room | Zoom | Zoom | Zoom | Zoom | Zoom | Zoom | Zoom | Zoom |
Mondays | 8:00-9:00 | 9:30-11:30 | 2:00-6:00 | 8:30-9:30 , 4:00-5:00 | 10:00-11:00 | |||
Tuesdays | 8:00-11:00 , 1:00-2:00 | 9:30-11:30 | 2:00-4:00 | 5:00-6:00 | 8:30-9:30 , 4:00-5:00 | 12:00-4:00 | 11:00-1:00 | |
Wednesdays | 9:30-11:30 | 2:00-6:00 | 10:00-2:00 , 5:00-6:00 | 8:30-9:30 , 4:00-5:00 | LL: 2:00-4:00 | |||
Thursdays | 8:00-12:00 | 9:30-11:30 | 1:00-6:00 | 11:30-12:30 , 5:00-6:00 | 8:30-9:30 , 4:00-5:00 | 12:00-4:00 | ||
Fridays | 8:00-9:00 | 9:30-11:30 | 9:00-2:00 | 5:00-6:00 | 8:00-9:00 , 4:00-5:00 | 12:00-1:00 , 3:00-4:00 | 4:00-6:00 |
Day | 7:00 | 8:00 | 9:00 | 10:00 | 11:00 | 12:00 | 1:00 | 2:00 | 3:00 | 4:00 | 5:00 |
Monday | SJH | NDK , PB | NP | NP | NP , JT | NP | |||||
Tuesday | SJH | SJH | SJH , NDK | PB | GT , PB | SJH , GT | NP , GT | NP , GT | JT | US | |
Wednesday | NDK , US | US | US | US | LL , NP | LL , NP | NP , JT | NP , US | |||
Thursday | SJH | SJH | SJH , NDK | SJH | GT | HS , GT | HS , GT | HS , GT | HS , JT | HS , US | |
Friday | SJH , JT | HS | NDK , HS | HS | HS , GT | HS | GT | JT , PB | US , PB |
Project # | Points | Title | Due Date | LV |
---|---|---|---|---|
1 | 50 | Draw Something Cool in 3D! | Oct 9 -- Bonus Days now Allowed! | LV |
2 | 100 | Transformations | Oct 17 | LV |
3 | 100 | Lighting | Oct 25 | LV |
4 | 100 | Keytime Animation | Nov 6 | LV |
Final Project Proposal | 10 | Final Project Proposal | Nov 15 -- No Bonus Days | LV |
5 | 100 | Texture Mapping | Nov 16 | LV |
6 | 100 | Shaders | Nov 29 | LV |
FP | 90 | Final Project | Tuesday, Dec 12, 23:59:59 -- No Bonus Days | LV |
550-only paper | 100 | Paper analysis | Tuesday, Dec 12, 23:59:59 -- No Bonus Days | LV |
Your electronic turnin will be done at
http://teach.engr.oregonstate.edu
and will consist of:
Do not zip, tar, rar, etc. any of the files.
Just upload them all to teach.
Electronic submissions are due at 23:59:59 on the listed due date.
You can create the videos any way you want.
Kaltura is quick, easy, and OSU has a site license for it.
Here
is how to use Kaltura.
Zoom recording also works well.
Project Turn-In Procedures
File | Function |
---|---|
bmptotexture.cpp | unsigned char * BmpToTexture( char *filename, int *width, int *height ) |
glslprogram.cpp | GLSLProgram class (see the Shaders notes) |
keytime.cpp | Keytimes class (see the Project #4 notes) |
loadobjfile.cpp | int LoadObjFile( char *name ) |
osucone.cpp | void OsuCone( float radtop, float radbot, float height, int slice, int stacks ) |
osusphere.cpp | void OsuSphere( float radius, int slice, int stacks ) |
osutorus.cpp | void OsuTorus( float innerRadius, float outerRadius, int nsides, int nrings ) |
setlight.cpp | void SetPointLight( int ilight, float x, float y, float z, float r, float g, float b ) |
setlight.cpp | void SetSpotLight( int ilight, float x, float y, float z, float xdir, float ydir, float zdir, float r, float g, float b ) |
setmaterial.cpp | void SetMaterial( float r, float g, float b, float shininess ) |
Windows Visual Studio 2022 Sample Program | SampleWindows.zip | Un-zip and double-click on the .sln file, then select Build→Clean Solution, then select Build→Build Sample, then select Debug→Start Without Debugging |
Linux Sample Program | SampleLinux.tar | Un-tar (tar -xvf SampleLinux.tar), then cd SampleLinux, then make sample, then ./sample |
Mac Sample Program * | SampleMac.tar * | Un-tar (tar -xvf SampleMac.tar), then cd SampleMac, then make sample, then ./sample |
A color-picker program | ColorPicker.exe | |
Vertex Buffer Object C++ class | vertexbufferobject.h, vertexbufferobject.cpp | Notes on using this C++ class |
* Previous Mac users in this class have recommended that, rather than use the trackpad, you go get a Bluetooth 3-button mouse. If you need to use the Mac trackpad, I've been told that a two finger click/tap works as a right click and option+click works as a middle click.
If you want to load a .obj file as part of one of your projects,
incorporate the file loadobjfile.cpp into your own code.
Use this by placing the .obj object into a display list:
// a global variable:
int DL;
. . .
// do this in InitLists( ):
DL = glGenLists( 1 );
glNewList( DL, GL_COMPILE );
LoadObjFile( (char *)"spaceship.obj" );
glEndList( );
. . .
// do this in Display( ):
glCallList( DL );
Points | Grade |
1020 | A |
1000 | A- |
980 | B+ |
960 | B |
940 | B- |
920 | C+ |
900 | C |
880 | C- |
860 | D+ |
840 | D |
820 | D- |
You will notice that these cut-offs are not 90-80-70-... This is because I am going to do a "soft-grade" on your programming projects, i.e., if it works, you get full credit. A "hard-grade" would look at your programming style, etc., which would allow more of a traditional grading scale.
All turnins will be done on Teach. Teach has been told about each project's due date.
Each of you has been granted 5 Bonus Days, which are no-questions-asked one-day project due date extensions, subject to the following rules:
To use one or more Bonus Days on a given project:
Over the last couple of years, various faculty have been putting together mini-tutorials on topics that we (apparently) expect you to magically know, without us ever actually showing you. Here they are. We hope they help.
A fascinating and extremely detailed dissection of a game's graphics:
(https://news.ycombinator.com/item?id=10492876)
It references a lot of the concepts covered in the class.
Good References
Other Useful Online Graphics Information
Other Notes You Might Find Useful!
University Classes | |
Computer Graphics Shaders | |
Scientific Visualization | |
Parallel Programming | |
CS Skills for Simulation and Game Programming | |
Vulkan |
Software | |
ParaView | |
WebGL |
Grades K-12 Outreach | |
TinkerCad | |
Blender | |
Scratch | |
Processing | |
SketchUp |
All students are subject to the registration and refund deadlines as stated in the Academic Calendar: https://registrar.oregonstate.edu/osu-academic-calendar
Oregon State University's Counseling and Psychological Services (CAPS) provides OSU students with individual, relationship, and group counseling. I have met some of these people, and they are really good. If you are in any type of emotional difficulty, don't hesitate to contact them. If it makes it easier for you, I will walk over with you.
TELUS Health Student Support @ OSU is an app that gives all OSU students, including Ecampus students, 24/7 access by text or phone with a licensed mental health counselor. The app makes it easy to schedule short-term counseling appointments with the same ongoing counselor and provides educational materials covering mental health topics. Students can communicate with a counselor in five different languages (Mandarin, Cantonese, French, Spanish or English); additional language options are available upon request. Download this app by looking up "TELUS Health Student Support" on the Google Play Store (Android) or the Apple App Stoe (iPhone).
It is important you feel safe and welcome in this course. If somebody is making discriminatory comments against you, sexually harassing you, or excluding you in other ways, contact the professor, your academic advisor, and/or report what happened at https://studentlife.oregonstate.edu/studentconduct/ reporting so we can connect you with resources.
You are expected to do your own work. Helping each other, with explanations or clarifications, is OK. Sharing code with each other or copying code from someone else's archive site (e.g., github), however, is considered cheating. Anyone caught cheating will fail this class, and the matter will be turned over to the Dean's Office.
You are expected to read and understand Oregon State University's Statement of Expectations for Student Conduct, found here: https://beav.es/codeofconduct . If there is any parts of this document that you don't understand, ask me!
Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS), https://ds.oregonstate.edu/. If you, as a student, believe you are eligible for accommodations but have not obtained approval please contact DAS immediately at 541-737-4098 or at disability.services@oregonstate.edu . DAS notifies students and faculty members of approved academic accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the implementation of individual accommodations.
All materials used in this course are designed to be accessible. If you require accomodations, please contact DAS immediately.
OSU has twelve established student rights. They include due process in all university disciplinary processes, an equal opportunity to learn, and grading in accordance with the course syllabus. See: https://asosu.oregonstate.edu/advocacy/rights
Oregon State University strives to respect all religious practices. If you have religious holidays that are in conflict with any of the requirements of this class, please see me immediately so that we can make alternative arrangements.
As {John Lennon? Allen Saunders?} has said: "Life is what happens to you while you're busy making other plans". I care about you as a person. When life happens to you, send me an email and come see me. I might be able to help. But I surely can listen. You are not alone.
University students encounter setbacks from time to time. If you encounter difficulties and need assistance, it's important to reach out. Consider discussing the situation with me or an academic advisor. Learn about resources that assist with wellness and academic success at http://oregonstate.edu/ReachOut. Students are always encouraged to discuss issues that impact your academic success. If you feel comfortable sharing how a hardship might impact your performance in this course, please reach out to me. If you are in immediate crisis, please contact the Crisis Text Line by texting OREGON to 741-741 or call the National Suicide Prevention Lifeline at 1-800-273-TALK (8255)
Success at OSU means knowing and using your resources. One helpful resource is the community of staff available at the Basic Needs Center (BNC) for support (bnc@oregonstate.edu, 541-737-3747, https://studentlife.oregonstate.edu/bnc). Students can drop in during open hours and talk with a BNC student leader for resources, ideas and strategies connected to basic needs challenges. The BNC is often known for its food pantry, but there are other resources connected to groceries and affording food and staff who can help you work through housing stressors. Undergraduate students, living in Oregon, are especially encouraged to explore SNAP as a resource. Domestic undergraduate students living in Oregon are more likely than not to be eligible for SNAP. BNC staff are skilled with helping students navigate this process.
Additionally, the BNC Textbook Lending Program offers students the opportunity to check out required textbooks for the academic term.
If you are comfortable doing so, please talk with me. I will do everything I can to help you.
Comments? Suggestions? Questions? Contact:
Prof. Mike Bailey
Oregon State University Computer Science
2117 Kelley Engineering Center
Corvallis, OR 97331-5501
541-737-2542
mjb@cs.oregonstate.edu