"Imagination will often carry us to worlds that never were. But without it, we go nowhere." -- Carl Sagan
Office Hours | Handouts | Classes | Projects |
This page was last updated: November 21, 2024
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!
A special warm welcome to all you Ecampusers! It is exciting to have a cohort here that comes from all over the world. That makes you very special!
You will experience the exact same course that 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 will do a Live Lecture on Zoom every week so that you can hear a discussion of the topics with the chance to ask live questions. This term, that day and time is Wednesdays 2:00 PM Pacific Time. This starts Wednesday, September 25.
On-campus Graphicsers are always encouraged to come as well.
My 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 ask questions by speaking or by typing into the Zoom Chat. I will answer questions 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 big goal of this class is to develop your "graphical 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 Office of the Registrar Academic Calendar.
Stuff You Should Be Interested In:
Job-Hunting Information:
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 | ||||||
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 | |
2 | Lighting Steps | |||||||
2 | Framebuffer | 1pp | 2pp | 4pp | 6pp | LV | ||
2 | Keytime Animation | 1pp | 2pp | 4pp | 6pp | LV | ||
2 | Keytime Steps | |||||||
3 | OpenGL Transparency | 1pp | 2pp | 4pp | 6pp | LV | ||
3 | Texture Mapping | 1pp | 2pp | 4pp | 6pp | LV-A | LV-B | |
3 | Texturing Steps | |||||||
4 | Forward Kinematics | 1pp | 2pp | 4pp | 6pp | LV | ||
4 | Test #1 review. | HTML | ||||||
5 | Geometric Modeling | 1pp | 2pp | 4pp | 6pp | LV-A | LV-B | |
5 | GLM | 1pp | 2pp | 4pp | 6pp | LV | ||
5 | A short GLM Primer | HTML | ||||||
5 | Vertex Buffer Objects | 1pp | 2pp | 4pp | 6pp | LV | ||
6 | Freezing Your Animation | 1pp | 2pp | 4pp | 6pp | |||
6 | Shaders | 1pp | 2pp | 4pp | 6pp | LV-A | LV-B | LV-C |
6 | Shader Steps | |||||||
6 | Instancing | 1pp | 2pp | 4pp | 6pp | LV | ||
6 | OpenGL Picking | 1pp | 2pp | 4pp | 6pp | LV | ||
7 | Casting Shadows with OpenGL | 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 | ||
9 | 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" Articles
Vinh Le's (Pixar and formerly ILM) video presentation can be found here: Video
Vinh Le's (Pixar and formerly ILM) video presentation can be found here: Video
Regarding Pixar internships. Vinh says: find information here: http://www.pixar.com/internships That web site says that internships for 2025 will be posted December 4, 2024. There are Production Internships, of which PUP is one. PUP is more artistic, but can be more technical, whatever the student brings. It introduces the pipeline, from modeling, shading to animation to rendering, i.e. the pipeline of typical studios. This is suited more for students interested in the Artist type careers. Then there are Technology Internships, which is Systems, R&D, and Renderman, perhaps more suited to the technical students that like to code.
As to the Joy Particles, Vinh says "The Joy particles were just to be something in the background, like in the first movie, but the final story had them front and center with a hero moment when Anxiety turned the console over to Joy. It was cool to have them a focus of the story, but also daunting, as the setup wasn't made for those types of shots. Nothing like new challenges with less time to accomplish, but live action experience prepared me for that!"
Information coming from Natasha Anisimova's talk:
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 in
Wilkinson Hall room 110.
That room is actually the Gilfillan Auditorium.
It can be accessed most easily from 26th Street at the back of the building.
Cancelled dates:
Note: this schedule is my best guess on where we'll be -- it is only approximate.
Class Schedule
Week # | Start Date | Topics |
---|---|---|
0 | Sept 25 |
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 | Sept 30 |
Getting started with OpenGL
Project #1 Sample program Color in CG GL Utility Toolkit Display Lists OBJ files |
2 | Oct 7 |
Project #2
Lighting: Ambient, Diffuse, Specular, per-vertex versus per-fragment Framebuffers: the rasterizer, Double-buffering, Z-buffer, Z-fighting |
3 | Oct 14 |
Project #3
Keytime Animation Transparency (blending) Andrew Glassner, Weta Digital, speaking on "Exploring the World with Computer Graphics" on Wednesday, October 16, 12:00 noon. This will be on Zoom and in Wilkinson 110 for on-campusers. Here is the Zoom-room. Confirmed. |
4 | Oct 21 |
Project #4
Test #1 review. Texture mapping Natasha Anisimova, speaking on "Breaking into the Gaming Industry", on Wednesday October 23, 12:00 noon. This will be shown on Zoom and in Wilkinson 110 for on-campusers. Here is the Zoom-room. Confirmed. |
5 | Oct 28 |
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 October 30 - November 2. It will open at 12:00 noon on Wednesday, October 30 and will close at 23:59 on Saturday, November 2. The test will be unproctored and open notes. Vinh Le, Pixar (and formerly ILM), will appear Monday, October 28, 12:00 noon, speaking on "Introduction to Visual FX". This will be on Zoom and in Wilkinson 110 for on-campusers. Here is the Zoom-room. Confirmed. |
6 | Nov 4 |
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 11 |
No class on Monday, November 11!
Project #6 Forward kinematics: general hierarchical transformations Rendering: rasterization, ray-tracing, path-tracing, radiosity |
8 | Nov 18 |
Animation: keyframe, forward kinematics (FK), inverse kinematics (IK), physics, chains, cloth, functional animation, motion capture (mocap)
Stencil Buffer 3D printing |
9 | Nov 25 |
Stereographics: the non-symmetric viewing volume
Producing "quilts" Virtual and augmented reality: viewing headsets, distortion shaders, foveated rendering, spherical stereo rendering OpenXR No on-campus class on Wednesday, November 27! However, we will have the Week #9 Live Lecture that day! |
10 | Dec 2 |
Vulkan: differences from OpenGL
More Information document Test #2 Review Rob Russ, Pixar, will appear Wednesday, December 4, 12:00 noon, speaking on "The Making of Toy Story 4". This will be on Zoom and in Wilkinson 110 for on-campusers. Feel free to invite anyone you think is interested. Here is the Zoom-room. Confirmed. |
T2 | Dec 11-14 | Test #2 will be taken on Canvas in a 60-minute interval of your own choosing during December 11-14. It will open at 12:01 AM PT on Wednesday, December 11 and will close at 11:59 PM PT on Saturday, December 14. 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.
This starts on Wednesday, September 25.
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.
Lurking is welcome!
These sessions will be recorded in case you missed them.
Here is my Zoom-room.
Live Lectures
Week # | Chat | Video |
---|---|---|
0 | Video | |
1 | Video | |
2 | Video | |
Blender Night #1 | Video | |
3 | Video | |
4 | Video | |
5 | Video | |
6 | Video | |
7 | Video | |
Blender Night #2 | ----- | Video |
8 | Video |
Professor
The class is being taught by
Professor Mike Bailey.
Office: | Kelley 2117 (2nd floor, south side, overlooking the Milam dumpsters) |
Email: | 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!
Coming soon! |
or, anytime my office door is open |
or, by appointment -- send email |
We will set our Office Hours based on what you tell me in this web form.
All OHs are on Zoom. All OHs are open to everyone, regardless of what section you are in.
We strongly encourage Office Hour "Lurkers"! You don't need to come to OHs to specifically ask questions. Being on Zoom, you can just listen in, even if you are working on something else. I have found Lurking to be an amazingly effective way to make the projects go smoother for you. Use it!
Name | Email @oregonstate.edu | Zoom-room | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday |
---|---|---|---|---|---|---|---|---|
Ninad Anklesaria (NA) | anklesan | Zoom | 8:00-11:00 | 8:00-11:00 | 8:00-11:00 | 8:00-9:00 | ||
Ajay Hayagreeve Balaji (AHB) | balajia | Zoom | 2:00-5:00 | 4:00-5:00 | 3:00-6:00 | 9:00-12:00 | ||
Li-Hsin Chiang (L-HC) | chiangl | Zoom | 2:00-4:00 | 1:00-4:00 | 1:00-4:00 | 1:00-3:00 | ||
Nirmit Bharatbhai Patel (NBP) | patenirm | Zoom | 4:00-6:00 | 10:00-1:00 | 12:00-2:00 | 1:00-3:00 | 12:00-1:00 | |
Uddyan Sinha (US) | sinhau | Zoom | 8:00-1:00 | 8:00-1:00 | ||||
Bo Wang (BW) | wangb3 | Zoom | 8:00-10:00 | 9:00-12:00 | ||||
Yifan Zeng (YZ) | zengyif | Zoom | 8:00-10:00 | 8:00-9:00 | 8:00-11:00 | 8:00-12:00 | ||
Prof. Bailey (PB) | mjb | Zoom | 10:00-11:00 | 10:00-12:00 | 2:00-4:00 (LL) | 4:00-6:00 |
All OHs are on Zoom. All times are Pacific time. LL signifies when the "Live Lecture" is.
Day | 8:00 | 9:00 | 10:00 | 11:00 | 12:00 | 1:00 | 2:00 | 3:00 | 4:00 | 5:00 |
Monday | NA , US | NA , US | NA , US , PB | US | US | L-HC | L-HC | |||
Tuesday | NA , BW | NA , BW | NA , PB | PB | L-HC | AHB , L-HC | AHB , L-HC | AHB | ||
Wednesday | YZ | YZ | NBP | NBP | NBP | L-HC | L-HC , PB (LL) | L-HC , PB (LL) | NBP | NBP |
Thursday | NA , YZ | NA , BW | NA , BW | BW | NBP | L-HC , NBP | L-HC | AHB | ||
Friday | US , YZ | US , YZ | US , YZ | US | US | NBP | NBP | AHB | AHB , PB | AHB , PB |
Saturday | NA , YZ | AHB , YZ | AHB , YZ | AHB , YZ | NBP |
Project # | Points | Title | Due Date | LV |
---|---|---|---|---|
1 | 50 | Draw Something Cool in 3D! | Oct 7 | LV |
2 | 100 | Transformations | Oct 15 | LV |
3 | 100 | Lighting | Oct 23 | LV |
4 | 100 | Keytime Animation | Nov 4 | LV |
Final Project Proposal | 10 | Final Project Proposal | Nov 13 -- No Bonus Days | LV |
5 | 100 | Texture Mapping | Nov 14 | LV |
6 | 100 | Shaders | Nov 27 | LV |
FP | 90 | Final Project | Monday, Dec 9, 23:59:59 -- No Bonus Days | LV |
550-only paper | 100 | Paper analysis | Monday, Dec 9, 23:59:59 -- No Bonus Days | LV |
Your project turn-ins will all be done on Canvas.
You will turn in 2 files (for the Shaders project, it will be 4):
*
If you want to load a .obj file as part of one of your projects,
un-comment the #include for the file loadobjfile.cpp in your own code.
Then, do this:
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.
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.
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.
They are very professional and very kind.
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 Store (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.
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, call me or send me an email or 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.
Domestic undergraduate students living in Oregon are possibly eligible for SNAP.
BNC staff are can help you navigate this process.
Comments? Suggestions? Questions? Contact:
Project Turn-In Procedures
File Function bmptotexture.cpp unsigned char * BmpToTexture( char *filename, int *width, int *height ) [see the Texture notes]
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 ) [see the lighting notes] setlight.cpp void SetSpotLight( int ilight, float x, float y, float z, float xdir, float ydir, float zdir, float r, float g, float b ) [see the lighting notes] setmaterial.cpp void SetMaterial( float r, float g, float b, float shininess ) [see the lighting notes] vertexbufferobject.h, vertexbufferobject.cpp VertexBufferObject class [see the vertex buffer notes]
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 Windows color-picker program
ColorPicker.exe
Windows Visual Studio 2022 Shadows Program
ShadowDemo.zip
Un-zip and double-click on the Shadows.sln file,
then select Build→Clean Solution,
then select Build→Build Shadows,
then select Debug→Start Without Debugging, 's' to toggle the shadows
g++-13 -framework OpenGL -framework GLUT sample.cpp -o sample -I. -Wno-deprecated
Using OBJ Files
// a global variable:
GLuint 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-
Bonus Days and Late Assignments
"I love deadlines. I like the whooshing sound they make when they fly by."
-- Douglas Adams
Background Resources
Good References
Other Useful Online Graphics Information
Other Notes You Might Find Useful!
OSU Classes
CS Skills for Simulation and Game Programming
Computer Graphics Shaders
Parallel Programming
Scientific Visualization
Vulkan
General
ChromaDepth
ParaView
WebGL
K-12 Outreach
Blender
Processing
Scratch
SketchUp
TinkerCad
SIGGRAPH Conference Whirlwind Introduction to CG Notes
Whirlwind
All of my notes listed on one page:
cgeducation
Student Resources:
Academic Calendar
Counseling and Psychological Services
TELUS: Mental Health Support for Students
Establishing a Positive Community
Academic Dishonesty
Students With Disabilities
Student Bill of Rights
Religious Holidays
Life Events
Reach Out for Success
Basic Needs
Prof. Mike Bailey
Oregon State University Computer Science
2117 Kelley Engineering Center
Corvallis, OR 97331-5501
541-737-2542
mjb@cs.oregonstate.edu