Hank Childs, University of Oregon

Slides:



Advertisements
Similar presentations
Today Composing transformations 3D Transformations
Advertisements

Polygon Rendering Flat Rendering Goraud Rendering Uses Phong Reflectance Phong Rendering.
Hank Childs, University of Oregon Oct. 22 nd, 2014 CIS 441/541: Introduction to Computer Graphics Lecture 7: Arbitrary Camera Positions.
Graphics Pipeline.
2 COEN Computer Graphics I Evening’s Goals n Discuss the fundamentals of lighting in computer graphics n Analyze OpenGL’s lighting model n Show.
Computer Graphics(Fall 2003) COMS 4160, Lecture 7: OpenGL 3 Ravi Ramamoorthi Many slides courtesy Greg Humphreys.
Computer Graphic Creator: Mohsen Asghari Session 2 Fall 2014.
Computer Graphics - Class 10
MAT 594CM S2010Fundamentals of Spatial ComputingAngus Forbes Overview Today: - Make sure everyone is set up with an OpenGL environment - OpenGL basics:
Shading in OpenGL CS4395: Computer Graphics 1 Mohan Sridharan Based on slides created by Edward Angel.
Foundations of Computer Graphics (Spring 2010) CS 184, Lecture 11: OpenGL 3
Shading in OpenGL Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico.
Computer Graphics (Spring 2008) COMS 4160, Lecture 14: OpenGL 3
1 Lecture 12 Texture Mapping uploading of the texture to the video memory the application of the texture onto geometry.
OpenGL (II). How to Draw a 3-D object on Screen?
CS 4731: Computer Graphics Lecture 17: Texturing Emmanuel Agu.
3D Rendering with JOGL Introduction to Java OpenGL Graphic Library By Ricardo Veguilla
Texture Mapping A way of adding surface details Two ways can achieve the goal:  Surface detail polygons: create extra polygons to model object details.
1 Perception, Illusion and VR HNRS 299, Spring 2008 Lecture 19 Other Graphics Considerations Review.
CAP4730: Computational Structures in Computer Graphics Introduction to OpenGL.
1 OpenGL Basics A Graphics Standard ©Mel Slater, Anthony Steed
Shading in OpenGL.
19/17/ :25 UML Graphics: Conceptual Model Real Object Human Eye Display Device Graphics System Synthetic Model Synthetic Camera Real Light Synthetic.
Computer Graphics Texture Mapping Eriq Muhammad Adams
CS 481 Preview, Some Lighting Details Glenn G. Chappell U. of Alaska Fairbanks CS 381 Lecture Notes Wednesday, November 19, 2003.
TWO DIMENSIONAL GEOMETRIC TRANSFORMATIONS CA 302 Computer Graphics and Visual Programming Aydın Öztürk
Image Synthesis Rabie A. Ramadan, PhD 2. 2 Java OpenGL Using JOGL: Using JOGL: Wiki: You can download JOGL from.
1 SIC / CoC / Georgia Tech MAGIC Lab Rossignac Textures and shadows  Generation  Mipmap  Texture coordinates,
Texture Mapping. Scope Buffers Buffers Various of graphics image Various of graphics image Texture mapping Texture mapping.
Computer Graphics Ben-Gurion University of the Negev Fall 2012.
Computer Graphics I, Fall 2010 Shading in OpenGL.
Hank Childs, University of Oregon Nov. 5th, 2014 CIS 441/541: Introduction to Computer Graphics Lecture 11: 2D textures, lighting and materials.
CS380 LAB IV OpenGL Jonghyeob Lee Reference1. [OpenGL course slides by Rasmus Stenholt] Reference2. [
Lecture 9: Lighting and Shading 1  Principles of Interactive Graphics  CMSCD2012  Dr David England, Room 718,  ex 2271
Homogeneous Form, Introduction to 3-D Graphics Glenn G. Chappell U. of Alaska Fairbanks CS 381 Lecture Notes Monday, October 20,
Hank Childs, University of Oregon Nov. 14th, 2014 CIS 441/541: Introduction to Computer Graphics Lecture 13: CW/CCW, constructing geometry.
CS559: Computer Graphics Lecture 15: Hierarchical Modeling and Shading Li Zhang Spring 2008.
CG1 Labs Wei Li. Back Face Culling // enable back-face culling glEnable( GL_CULL_FACE ); // orientation of front-facing polygons glFrontFace( GL_CCW );
Jul 25, 2014IAT 3551 Scene Graphs.  A data structure that stores information about a graphics scene –Each node has information that structures the interpretation.
Computer Science Term 1, 2006 Tutorial 2 Assignment 3 – The Virtual World.
OpenGL Color and Lighting 2003 Spring Keng Shih-Ling.
Lighting Review & Example Glenn G. Chappell U. of Alaska Fairbanks CS 381 Lecture Notes Monday, November 17, 2003.
Project 5 Lamp Shader Fri, Nov 7, 2003 Due Mon, Nov 17, 2003.
1/50 CS148: Introduction to Computer Graphics and Imaging Transforms CS148: Introduction to Computer Graphics and Imaging Transforms.
2 COEN Computer Graphics I Evening’s Goals n Discuss viewing and modeling transformations n Describe matrix stacks and their uses n Show basic geometric.
1 Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009 OpenGL Transformations.
Review on Graphics Basics. Outline Polygon rendering pipeline Affine transformations Projective transformations Lighting and shading From vertices to.
Chapters 5 2 March Classical & Computer Viewing Same elements –objects –viewer –projectors –projection plane.
David Luebke1/5/2016 CS 551 / 645: Introductory Computer Graphics David Luebke
Computing & Information Sciences Kansas State University Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics CIS 636/736 Computer Graphics.
11/5/2002 (c) University of Wisconsin, CS 559 Last Time Local Shading –Diffuse term –Specular term –All together –OpenGL brief overview.
Where We Stand So far we know how to: –Transform between spaces –Rasterize –Decide what’s in front Next –Deciding its intensity and color.
What are shaders? In the field of computer graphics, a shader is a computer program that runs on the graphics processing unit(GPU) and is used to do shading.
1 Geometric Transformations-II Modelling Transforms By Dr.Ureerat Suksawatchon.
Geometric Transformations Ceng 477 Introduction to Computer Graphics Computer Engineering METU.
GLSL Review Monday, Nov OpenGL pipeline Command Stream Vertex Processing Geometry processing Rasterization Fragment processing Fragment Ops/Blending.
Introduction to 3-D Viewing Glenn G. Chappell U. of Alaska Fairbanks CS 381 Lecture Notes Monday, October 27, 2003.
Texture Mapping CEng 477 Introduction to Computer Graphics.
CSC Graphics Programming
CIS 441/541: Introduction to Computer Graphics Lecture 17: 2D textures
Hank Childs, University of Oregon
School of Computer Science
Hank Childs, University of Oregon
IAT 355 Scene Graphs Feb 23, 2017 IAT 355.
Shading in OpenGL Ed Angel
Chapter 4/5 glMatrixMode Modeling Transformations glTranslate glScale
Lighting Phong's Lighting Model normals
Computer Graphics 4Practical Lesson
OpenGL Texture Mapping
Hank Childs, University of Oregon
Presentation transcript:

Hank Childs, University of Oregon CIS 441/541: Introduction to Computer Graphics Lecture 12: transforms in GL, Project 2B Hank Childs, University of Oregon Nov. 7th, 2014

Announcements 1D redux: cancelled Will be 1E & 1F Reminder: class canceled on Weds Nov 12th OH canceled too OH canceled Weds Nov 19th as well

Outline Review Display lists Transforms in GL Project 2B

Outline Review Display lists Transforms in GL Project 2B

Textures with GL_REPEAT

1D, 2D, 3D textures 2D textures most common 1D textures: color maps (e.g., what we just did) 3D textures: “volume rendering” Use combination of opacity and color (i.e., RGBA)

2D Textures Pre-rendered images painted onto geometry glTexImage1D  glTexImage2D GL_TEXTURE_WRAP_S  GL_TEXTURE_WRAP_S + GL_TEXTURE_WRAP_T glTexCoord1f  glTexCoord2f

2D Texture Program What do we expect the output to be?

GL_TEXTURE_MIN_FILTER / GL_TEXTURE_MAG_FILTER Minifying: texture bigger than triangle. How to map multiple texture elements onto a pixel? GL_NEAREST: pick closest texture GL_LINEAR: average neighboring textures Magnifying (GL_TEXTURE_MAG_FILTER): triangle bigger than texture How to map single texture element onto multiple pixels? GL_NEAREST: no interpolation GL_LINEAR: interpolate with neighboring textures

GL_TEXTURE_MAG_FILTER with NEAREST and LINEAR

Geometry Specification: glBegin

Geometry Primitives

Geometry Primitives

Geometry Primitives

Lighting glEnable(GL_LIGHTING); Eight lights Tells OpenGL you want to have lighting. Eight lights Enable and disable individually glEnable(GL_LIGHT0) glDisable(GL_LIGHT7) Set attributes individually glLightfv(GL_LIGHTi, ARGUMENT, VALUES)

glLightfv parameters Ten parameters (ones you will use):

glLightfv in action For each light source, we can set an RGBA for the diffuse, specular, and ambient components: glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); Glfloat diffuse0[4] = { 0.7, 0.7, 0.7, 1 }; glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0); … // set ambient, specular, position glDisable(GL_LIGHT1); // do we need to do this? … glDisable(GL_LIGHT7); // do we need to do this?

How do we tell OpenGL about the surface normals? Flat shading: glNormal3f(0, 0.707, -0.707); glVertex3f(0, 0, 0); glVertex3f(1, 1, 0); glVertex3f(1, 0, 0); Smooth shading: glNormal3f(0, 0.707, +0.707); glNormal3f(1, 0, 0);

What happens with multiple lights? glEnable(GL_LIGHT0); glEnable(GL_LIGHT1);  the effects of these lights are additive. Individual shading factors are added and combined Effect is to make objects brighter and brighter Same as handling of high specular factors for 1E

glMaterial: coarser controls for color You specify how much light is reflected for the material type. Command: glMaterialfv(FACE_TYPE, PARAMETER, VALUE(S)) FACE_TYPE = GL_FRONT_AND_BACK GL_FRONT GL_BACK (We will talk about this on Friday NEXT WEEK)

glMaterialfv Parameters

glMaterialfv Parameters

OpenGL: very complex model for lighting and colors glMaterial not used glColor is no-op http://www.sjbaker.org/steve/omniv/opengl_lighting.html

Basic OpenGL light model The OpenGL light model presumes that the light that reaches your eye from the polygon surface arrives by four different mechanisms: AMBIENT DIFFUSE SPECULAR EMISSION - in this case, the light is actually emitted by the polygon - equally in all directions. http://www.sjbaker.org/steve/omniv/opengl_lighting.html

Difference between lights and materials There are three light colours for each light: Ambient, Diffuse and Specular (set with glLight) There are four colors for each surface Same three + Emission(set with glMaterial). All OpenGL implementations support at least eight light sources - and the glMaterial can be changed at will for each polygon http://www.sjbaker.org/steve/omniv/opengl_lighting.html

Interactions between lights and materials The final polygon colour is the sum of all four light components, each of which is formed by multiplying the glMaterial colour by the glLight colour (modified by the directionality in the case of Diffuse and Specular). Since there is no Emission colour for the glLight, that is added to the final colour without modification. http://www.sjbaker.org/steve/omniv/opengl_lighting.html

Outline Review Display lists Transforms in GL Project 2B

glBindTexture: tell the GPU about the texture once and re-use it!

CPU and GPU Most common configuration has CPU and GPU on separate dies I.e., plug GPU in CPU CPU (typically 4-12 cores, ~10GFLOPs) GPU (typically 100-1000 cores, ~100GFLOPs-~1000GFLOPs) PCIe Peripheral Component Interconnect Express What are the performance ramifications of this architecture?

Display lists Idea: send geometry and settings to GPU once, give it an identifier GPU stores geometry and settings Just pass the identifier for every subsequent render

Display lists Generate an idenfitier: GLUint displayList = glGenLists(1); Tell GPU that all subsequent geometry is part of the list: glNewList(displayList,GL_COMPILE); Specify geometry (i.e., glVertex, etc) Tell GPU we are done specifying geometry: glEndList(); Later on, tell GPU to render all the geometry and settings associated with our list: glCallList(displayList);

Display lists in action What are the performance ramifications between the two?

glNewList GL_COMPILE GL_COMPILE_AND_EXECUTE Make the display list for later use. GL_COMPILE_AND_EXECUTE Make the display list and also execute it as you go.

Outline Review Display lists Transforms in GL Project 2B

ModelView and Projection Matrices New for us Familiar for us ModelView idea: two purposes … model and view Model: extra matrix, just for rotating, scaling, and translating geometry. How could this be useful? View: Cartesian to Camera transform (We will focus on the model part of the modelview matrix now & come back to others later)

Common commands for modifying model part of ModelView matrix glTranslate glRotate glScale

glTranslate

glRotate

glScale

How do transformations combine? glScale(2, 2, 2) glTranslate(1, 0, 0) glRotate(45, 0, 1, 0) Rotate by 45 degrees around (0,1,0), then translate in X by 1, then scale by 2 in all dimensions. (the last transformation is applied first)

Which of two of these three are the same? Choice A: glScalef(2, 2, 2); glTranslate(1, 0, 0); Choice B: Choice C: glTranslate(2, 0, 0);

Each glTranslatef call updates the state of the ModelView matrix. ModelView usage dl = GenerateTireGeometry(); glCallList(dl); // place tire at (0, 0, 0) glTranslatef(10, 0, 0); glCallList(dl); // place tire at (10, 0, 0) glTranslatef(0, 0, 10); glCallList(dl); // place tire at (10, 0, 10) glTranslatef(-10, 0, 0); glCallList(dl); // place tire at (0, 0, 10) Each glTranslatef call updates the state of the ModelView matrix.

glPushMatrix, glPopMatrix

glPushMatrix and glPopMatrix dl = GenerateTireGeometry(); glCallList(dl); // place tire at (0, 0, 0) glPushMatrix(); glTranslatef(10, 0, 0); glCallList(dl); // place tire at (10, 0, 0) glPopMatrix(); glTranslatef(0, 0, 10); glCallList(dl); // place tire at (10, 0, 10) (0, 0, 10) Why is this useful?

Matrices in OpenGL OpenGL maintains matrices for you and provides functions for setting matrices. There are four different modes you can use: Modelview Projection Texture Color (rarely used, often not supported) You control the mode using glMatrixMode.

Matrices in OpenGL (cont’d) The matrices are the identity matrix by default and you can modify them by: 1) setting the matrix explicitly 2) using OpenGL commands for appending to the matrix You can have >= 32 matrices for modelview, >=2 for others

The Camera Transformation Source: www.opengl.org/archives/resources/faq/technical/viewing.htm

The Camera Transformation Source: www.opengl.org/archives/resources/faq/technical/viewing.htm

How do you put the Camera Transform in the ModelView matrix? No single GL call. Options are: (1) you do it yourself (i.e., calculate matrix and load it into OpenGL) (2) you use somebody’s code, i.e., gluLookAt (3) you use a combination of glRotatef, glScalef, and glTranslatef commands.

glMatrixMode

How do you put the projection transformation in GL_PROJECTION? Two options: glFrustum() (perspective projection) glOrtho() (orthographic projection)

glFrustum

glOrtho

glMatrixMode(GL_TEXTURE)

Outline Review Display lists Transforms in GL Project 2B

Project #2F (7%), Due Mon Nov 24th Goal: modify ModelView matrix to create dog out of spheres and cylinders New code skeleton: “project2B.cxx” No geometry file needed. You will be able to do this w/ glPush/PopMatrix, glRotatef, glTranslatef, and glScalef.

Contents of project2B.cxx Routine for generating spheres Routine for generating cylinders Routine for generating head, eyes, and pupils We will study all of these together for the remainder of the class.

What is the correct answer? The correct answer is: Something that looks like a dog No obvious problems with output geometry. Something that uses the sphere and cylinder classes. If you use something else, please clear it with me first. I may fail your project if I think you are using outside resources that make the project too easy. Something that uses rotation for the neck and tail. Aside from that, feel free to be as creative as you want … color, breed, etc.

For your reference: my dog