CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

17
CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/2014 1

Transcript of CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

Page 1: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 1

Welcome to CS123!

Mechanics

Page 2: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 2

Professor: Andy van Dam (avd)

Head TA: Brandon Montell (bmontell), 2015

Undergraduate TAs, all 123 veterans: Allison Hamburger (ahamburg), 2016 Ben Most (bmost), 2015 Joshua Lewis (jml16), 2015 Michael Murphy (mjm9), 2015 Veena Vignale (vvignale), 2015 – 5th year Masters Vivian Morgowicz (vmorgowi), 2016

Your Staff

Page 3: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 3

Juniors or higher CS15-16, CS17-18, or CS19 and CS32

or equivalent, with strong software engineering skills (OO design and programming, debugging) – this is a projects-based “studio course”

Sophomores did well in intro sequence consider themselves strong programmers willing to put in a bit of extra time up front (e.g., to learn C++)

Who Should Take CS123?

Page 4: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 4

If you don’t know C++, you CAN take this class C++ is Java + explicit memory management and some C grottiness additional time investment required early on C++ help session TONIGHT at 8:00 PM in Motorola (CIT 165) CS123 Java to C++ transition tutorial on course website (docs page) TAs can help you with C++ issues on hours

Linear Algebra (vector and matrix arithmetic, dot and cross products) help session to review these concepts (later on in the semester) Consider taking Philip Klein’s CS53, Directions: The Matrix in Computer Science

If you’re not sure you should be in CS123 or have not met the prereqs, stay after class and see Brandon or email [email protected]

Requirements Info

Page 5: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 5

Quick start: 2D and 3D graphics with OpenGL 2D raster graphics

2D modeling hierarchy basic image transformations

Basic 3D scene management tessellation of curved surfaces transformations (translation, rotation, scale) virtual camera model Scene graph traversal

Bird’s Eye View of the Course (1/2)

Page 6: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 6

3D Modeling and Rendering – the core intersecting rays with simple solids ray tracing lighting and shadowing of polygonal models stochastic methods for photorealistic

rendering GPU hardware rendering (GLSL)

Other Topics color theory animation user interfaces

Bird’s Eye View of the Course (2/2)

Page 7: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 7

We don’t want a killer course but it will be intense Expect 15-20 hours of work per week Course is front-loaded, lots to learn in the first three weeks Combining with another programming-heavy course (like CS33) is

doable but can be challenging, especially for those who have only taken the intro sequence.

Final project doing shader programming on GPU Expect to put in a fair amount of time during reading period

Workload

Page 8: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 8

Each project will include a section called half credit requirements Those taking cs1234 will need to complete these requirements Those not taking cs1234 can use the requirements as additional extra credit

Expect 7-10 additional hours of work CS1234 can be used as a capstone course Half credit requirements can be be used to get grad credit Do NOT show up at the class time listed on Banner for CS1234

Banner hack ;)

Half Credit requirements

Page 9: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 9

Course missive (online) Assignment deadlines and lecture topics are subject to change Responsible for info on course website: http://cs.brown.edu/courses/cs123 Mailing list for course updates – mail will be sent to your Brown CS e-mail

address

Course guide (online)

Course Documents (1/3)

Page 10: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 10

Collaboration Policy More types of collaboration allowed this year than last year

Allowed: discussion of solutions to written “algo” assignments (hand-ins must acknowledge collaboration that takes place), high-level design of programs

Not allowed: written notes from discussions with other students, detailed discussion of programs

This is different from rules in other courses.

Read collaboration policy carefully before you sign because it is a contract MOSS – an AI program that is usually correct – we hand-check suspicious

similarity Typical verdict: directed NC and parental notification

Course Documents (2/3)

Page 11: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 11

Lectures posted online. You are encouraged to bring your laptops to read along and annotate lectures.

Course Documents (3/3)

Page 12: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 12

The textbook for this class is recommended, but not required

Most lectures will correspond to chapters in the book

An improved index has been linked on the site’s docs page

The Book

Page 13: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 13

Assignments 6 Programming Projects

Three of which build up to a ray-tracing system

Additional requirements for half credit course

70% of final grade

10 Labs Learn what modern

graphics systems can do

Real-time computer graphics and GPU shaders

3D interaction and UI

10% of final grade

1 Final Project Real-time project using

GPU programming

You are strongly encouraged to work in groups of 2-3; 2 most common

20% of final grade

Page 14: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 14

First assignment, Brush: warm-up exercise in C++ Out NOW

Start early, especially if you’re uncomfortable with C++ Bring questions to help session tonight

Algorithm assignment due Sunday, September 7 at 5pm hand in (on paper) in the cs123 bin on the second floor of the CIT no late hand-ins accepted

Program due Wednesday, September 10th, 11:59pm

First Assignment

Page 15: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 15

Brush – a 2d drawing program (intro to C++) Shapes – procedural geometry Filter – image processing Sceneview – 3d static scene viewer for OpenGL Intersect – parametric shapes, ray-shape intersections Ray – your own 3d rendering engine

Each project is preceded by a short “algo” assignment, which ensures that you understand the concepts behind the project before starting to code.

Projects

Image created using brushes from the “Brush” assignment

Page 16: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

CS123 | INTRODUCTION TO COMPUTER GRAPHICS

Andries van Dam 9/4/2014 16

OpenGL 2D – build a simple pong game OpenGL 3D – build an archery simulator Animation – learn how to light and animate scenes with OpenGL Terrain – generate a natural-looking world environment Particles – render flame, fluid, non-rigid objects Camtrans – create an OpenGL viewing camera Shaders I – procedural texturing (snow, grass, etc.) Shaders II – link C++ to shaders and implement Phong lighting Shaders III – make objects look like glass and metal Modeler – build a UI for composing a scene from primitive shapes Lab assignments are due (checked off by a TA) before the next week’s lab

Labs – Thursday 8:30-10:30pm, Friday 4-6

Page 17: CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam Welcome to CS123! Mechanics 9/4/20141.

9/4/2014 17

Final Project Demos