SE 313 – Computer Graphics and Visual Programming

Post on 18-Feb-2016

33 views 0 download

Tags:

description

SE 313 – Computer Graphics and Visual Programming. Lecture 1: Introduction Lecturer: Gazihan Alankuş. Please look at the last three slides for assignments (marked with TODO ). Briefly. A coding-heavy class with some simple math You should be comfortable with programming - PowerPoint PPT Presentation

Transcript of SE 313 – Computer Graphics and Visual Programming

1

SE 313 – Computer Graphics and Visual Programming

Lecture 1: IntroductionLecturer: Gazihan Alankuş

Please look at the last three slides for assignments (marked with TODO)

16.02.2012

2

Briefly

• A coding-heavy class with some simple math– You should be comfortable with programming

• 8 labs in which you code in class and get graded

• Preparatory homeworks before each lab• Term project

16.02.2012

3

Outline

• Me• Logistics of class• You• Class• HOMEWORK 1!!!

16.02.2012

4

Outline

• Me• Logistics of class• You• Class• HOMEWORK 1!!!

16.02.2012

5

Instructor

• Dr. Gazihan Alankuş• METU, BS 2002, MS 2005• WUSTL, PhD 2011• Currently a Lecturer (no office…)• Background– Some industry experience (including Google)– Some computer graphics research in the past– Now I get to teach computer graphics– reasonable > idealistic

• Please use gazihan.ieu@gmail.com for class-related e-mail exchange16.02.2012

6

Can you understand me?

• English language is just a tool, not a goal. – The goal is to communicate and learn.

• Stop me when you don’t understand something.

• In general, be active in class.

16.02.2012

7

Outline

• Me• Logistics of class• You• Class• HOMEWORK 1!!!

16.02.2012

8

Logistics• Website

– http://www.cse.wustl.edu/~gazihan/teaching/12spring/se313/

– Reach from my homepage (Google me if you must)• Slides and extra material

• Google group– http://groups.google.com/group/ieu-se313-graphics-spring-2012

– I will send announcements using the Google group

16.02.2012

9

Logistics• Grades– Attendance (except today)– Labs / homeworks– Project– Midterm– Final

16.02.2012

10

Labs• A week before the lab– We will learn the topic in classroom– Homework• The lab will be much simpler if you do it• Graded at the beginning of the lab

• Lab will be in the classroom– Last two hours of class– You will use your own laptops– I will supply boilerplate code• You will add code about the main topic

16.02.2012

11

Projects

• Programming project related to computer graphics– You choose the topic

• I will supply suggestions that you can choose from• You can merge this with projects from other classes

– Group of at most three• Expectation will be proportional with group size• Everybody contributes

– You can use other people’s code (samples, libraries, etc.), but you have to clearly indicate it. I will not tolerate cheating.

16.02.2012

12

Outline

• Me• Logistics of class• You• Class• HOMEWORK 1!!!

16.02.2012

13

Let’s get to know you

• Introduce in detail, from where, etc.• Registered? Why?• What do you expect– from this class?– to see happen by the end of semester?

• Programmer?– C/C++? IDEs? Debugging? Open source? SE116?

• What do you know about computer graphics?

16.02.2012

14

Outline

• Me• Logistics of class• You• Class• HOMEWORK 1!!!

16.02.2012

15

Class

• What is computer graphics?– Let’s watch some videos

16.02.2012

16

Computer Graphics and Visual Programming

• What it is– Theoretical basis of 3D graphics– Coding them with OpenGL• Real-time rendering using the GPU

• What it is not – Creating user interfaces with buttons, etc. • Take SE 204 Human-Computer Interaction for that

16.02.2012

17

Graphics vs. Vision

• Computer Vision – images -> computer

• Computer Graphics – computer -> images

16.02.2012

18

Computer Graphics

• Using computers to store and generate images of virtual scenes

• There are different ways– We will be focusing on using GPUs to render in

real-time (using OpenGL)– We will also talk about the theory behind it

16.02.2012

19

How Do Computers Create and Display Images?

• Store abstract representation of a scene• Perform the necessary projection for the

output device (2D image, 3D hologram)• Use the output device (monitor) to display it

to the user

16.02.2012

20

Computer Monitors

16.02.2012

21

Computer Monitors

16.02.2012

2216.02.2012

23

Today We Have Better Displays

• Active matrix systems (LCD, Plasma, LED, etc)• 3D displays (with or without glasses)

16.02.2012

2416.02.2012

2516.02.2012

2616.02.2012

27

They All Display Pixels

• The images are stored and displayed as a matrix of colored points

16.02.2012

Mixture of red, green and blue

[adobe.com]

28

The Goal is to Fill the Pixels

• Various mathematical techniques to convert your data to pixel output

• Good news: OpenGL does this for us using our GPUs in real-time. – We will learn how to use OpenGL

16.02.2012

29

Class• Learning about computer graphics techniques and applying

them in programs using OpenGL• This is my second time teaching this class, this is an improved

version• Syllabus will be updated soon:

– http://ects.ieu.edu.tr/syllabus.php?section=ce.cs.ieu.edu.tr&course_code=SE%20313&cer=0

– Book is accurate. • Get the book!• Reading assignments

16.02.2012

30

Questions?

2/10/2012

31

Outline

• Me• Logistics of class• You• Class• HOMEWORK 1!!!

16.02.2012

32

TODO: Google Group

• Do either one of these:– Go to http://

groups.google.com/group/ieu-se313-graphics-spring-2012 and apply for a membership.

– Or, send an e-mail to gazihan.ieu@gmail.com and I will invite your e-mail to the Google group. You will have to accept the invitation.

• I will use this for class announcements• You can also send questions, comments, helpful

tips, or announcements to it but I will moderate your e-mails.

16.02.2012

33

TODO: Homework 1 (bonus)• Download and install GLUT on your laptop

– Windows: http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip – Linux: install freeglut-dev using your package manager

• Try to compile this sample GLUT program: – http://www.cse.wustl.edu/~gazihan/teaching/12spring/se313/material/week1/gluttemplate.c– Compiling and linking

• In Linux it should be easy, glut includes and libs will be in the right places• In Windows, you need to do either one of these:

– Point your compiler’s include and library directories to the glut installation– Find where gl.h is in your system and copy glut files to appropriate locations. Below are examples from my system:

» glut.h to C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl or C:\MinGW\include\gl (for VC or mingw)

» glut32.lib to C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib or C:\MinGW\lib• In compilers other than Visual Studio, you need to tell the linker to link against glut, glu and gl libraries (or

glut32, glu32 and gl32).– Example for linux: gcc -Wall -o testprog testprog.c -lglut -lGLU

– Running• Linux should be fine. May need to do the following:

– LIBGL_ALWAYS_INDIRECT=1 ./program• In Windows, the program needs to find glut32.dll. Either put it next to the exe, or to the windows system

folder. C:\Windows\system in 64 bit machinez. May need to be C:\Windows\system32 in 32 bit– Last semester’s class website has useful links, too:

http://www.cse.wustl.edu/~gazihan/teaching/11fall/se313/16.02.2012

34

TODO: Reading

• Read Chapter 3 from your book. • Quickly skim Chapter 4 from your book.

16.02.2012