DOC PREVIEW
Columbia COMS 4160 - Lecture12

This preview shows page 1-2 out of 5 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 5 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 5 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 5 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

1Computer Graphics (Fall 2006)Computer Graphics (Fall 2006)COMS 4160, Lecture 12: OpenGL 3http://www.cs.columbia.edu/~cs4160To DoTo Do HW 3 Milestones due on Thu  If stuck, please get help from me or TAs Important you feel confident you can finish HW 3 Programs in class, red book probably most helpMethodology for LectureMethodology for Lecture Lecture deals with lighting (teapot shaded as in HW1) Some Nate Robbins tutor demos in lecture Briefly explain OpenGL color, lighting, shading Demo 4160-opengl\opengl3\opengl3-orig.exe Lecture corresponds chapter 5 (and some of 4) But of course, better off doing rather than readingImportance of LightingImportance of Lighting Important to bring out 3D appearance (compare teapot now to in previous demo) Important for correct shading under lights The way shading is done also importantglShadeModel(GL_FLAT) glShadeModel(GL_SMOOTH)OutlineOutline Basic ideas and preliminaries Types of materials and shading  Ambient, Diffuse, Emissive, Specular Source code Moving light sourcesBrief primer on ColorBrief primer on Color Red, Green, Blue primary colors Can be thought of as vertices of a color cube R+G = Yellow, B+G = Cyan, B+R = Magenta, R+G+B = White Each color channel (R,G,B) treated separately RGBA 32 bit mode (8 bits per channel) often used A is for alpha for transparency if you need it Colors normalized to 0 to 1 range in OpenGL Often represented as 0 to 255 in terms of pixel intensities Also, color index mode (not so important)2Shading ModelsShading Models So far, lighting disabled: color explicit at each vertex This lecture, enable lighting Calculate color at each vertex (based on shading model, lights and material properties of objects) Rasterize and interpolate vertex colors at pixels Flat shading: single color per polygon (one vertex) Smooth shading: interpolate colors at vertices Wireframe: glPolygonMode (GL_FRONT, GL_LINE) Also, polygon offsets to superimpose wireframe Hidden line elimination? (polygons in black…)Demo and Color PlatesDemo and Color Plates See OpenGL color plates 1-8 Demo: 4160-opengl\opengl3\opengl3-orig.exe Question: Why is blue highlight jerky even with smooth shading, while red highlight is smooth?LightingLighting Rest of this lecture considers lighting on vertices In real world, complex lighting, materials interact We study this more formally in next unit OpenGL is a hack that efficiently captures some qualitative lighting effects. But not physical Modern programmable shaders allow arbitrary lighting and shading models (not covered in class)Types of Light SourcesTypes of Light Sources Point Position, Color [separate diffuse/specular] Attenuation (quadratic model) Directional (w=0, infinitely far away, no attenuation) Spotlights Spot exponent Spot cutoff All parameters: page 195 (should have already read HW1)21cl qattenkkdkd=++Material PropertiesMaterial Properties Need normals (to calculate how much diffuse, specular, find reflected direction and so on) Four terms: Ambient, Diffuse, Specular, EmissiveSpecifying NormalsSpecifying Normals Normals are specified through glNormal Normals are associated with vertices Specifying a normal sets the current normal Remains unchanged until user alters it Usual sequence: glNormal, glVertex, glNormal, glVertex, glNormal, glVertex… Usually, we want unit normals for shading glEnable( GL_NORMALIZE ) This is slow – either normalize them yourself or don’t use glScale Evaluators will generate normals for curved surfaces Such as splines. GLUT does it automatically for teapot, cylinder,…3OutlineOutline Basic ideas and preliminaries Types of materials and shading  Ambient, Diffuse, Emissive, Specular Source code Moving light sourcesLightMaterialLightMaterialDemoDemoEmissive TermEmissive TermmaterialI Emission=Only relevant for light sources when looking directly at them• Gotcha: must create geometry to actually see light• Emission does not in itself affect other lighting calculationsAmbient TermAmbient Term Hack to simulate multiple bounces, scattering of light Assume light equally from all directionsAmbient TermAmbient Term Associated with each light and overall light E.g. skylight, with light from everywhere0***nglobal material light i material iiI ambient ambient ambient ambient atten==+∑Most effects per light involve linearly combining effects of light sourcesDiffuse TermDiffuse Term Rough matte (technically Lambertian) surfaces Light reflects equally in all directionsINL•∼N-L4Diffuse TermDiffuse Term Rough matte (technically Lambertian) surfaces Light reflects equally in all directions Why is diffuse of light diff from ambient, specular?INL•∼N-L0***[max(,0)]nlight i material iiI diffuse diffuse atten L N==∑iSpecularSpecularTermTerm Glossy objects, specular reflections Light reflects close to mirror directionSpecularSpecularTermTerm Glossy objects, specular reflections Light reflects close to mirror direction Consider half-angle between light and viewersN0***[max(,0)]nshininesslight i material iiI specular specular atten N s==•∑DemoDemo What happens when we make surface less shiny? What happens to jerkiness of highlights?OutlineOutline Basic ideas and preliminaries Types of materials and shading  Ambient, Diffuse, Emissive, Specular Source code Moving light sourcesSource Code (in display)Source Code (in display)/* New for Demo 3; add lighting effects *//* See hw1 and the red book (chapter 5) for details */{GLfloat one[] = {1, 1, 1, 1};// GLfloat small[] = {0.2, 0.2, 0.2, 1};GLfloat medium[] = {0.5, 0.5, 0.5, 1};GLfloat small[] = {0.2, 0.2, 0.2, 1};GLfloat high[] = {100};GLfloat light_specular[] = {1, 0.5, 0, 1};GLfloat light_specular1[] = {0, 0.5, 1, 1};GLfloat light_position[] = {0.5, 0, 0, 1};GLfloat light_position1[] = {0, -0.5, 0, 1};/* Set Material properties for the teapot */glMaterialfv(GL_FRONT, GL_AMBIENT, one);glMaterialfv(GL_FRONT, GL_SPECULAR, one);glMaterialfv(GL_FRONT, GL_DIFFUSE, medium);glMaterialfv(GL_FRONT, GL_SHININESS, high);5Source Code (Source Code (contdcontd))/* Set up point lights, Light 0 and Light 1 *//* Note that the other parameters are default values */glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);glLightfv(GL_LIGHT0, GL_DIFFUSE,


View Full Document

Columbia COMS 4160 - Lecture12

Download Lecture12
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecture12 and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture12 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?