computer graphics lighting - oregon state...

36
mjb – September 6, 2017 1 Computer Graphics Computer Graphics Lighting Lighting.pptx This work is licensed under a Creative Commons Attribution-NonCommercial- NoDerivatives 4.0 International License Mike Bailey [email protected]

Upload: vunguyet

Post on 07-Jul-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

1

Computer Graphics

Computer Graphics Lighting

Lighting.pptx

This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License

Mike [email protected]

Page 2: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

2

Computer Graphics

Why Do We Care About Lighting?

Lighting “dis-ambiguates” 3D scenes

Without lighting

With lighting

Page 3: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

3

Computer Graphics

A surface normal is a vector perpendicular to the surface.

Sometimes surface normals are defined or computed per-face.

n = ( P1 - P0 ) x ( P2 – P0 )

Sometimes they are defined per-vertex to best approximate the underlying surface that the face is representing.

The Surface Normal

0

1

2

0

1

2

Page 4: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

4

Computer Graphics

glMatrixMode( GL_MODELVIEW );

glTranslatef( tx, ty, tz );glRotatef( degrees, ax, ay, az );glScalef( sx, sy, sz );

glNormal3f( nx, ny, nz );

glColor3f( r, g, b );glBegin( GL_TRIANGLES );

glVertex3f( x0, y0, z0 );glVertex3f( x1, y1, z1 );glVertex3f( x2, y2, z2 );

glEnd( );

Setting a Surface Normal in OpenGL

Per-face

Page 5: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

5

Computer Graphics

glMatrixMode( GL_MODELVIEW );

glTranslatef( tx, ty, tz );glRotatef( degrees, ax, ay, az );glScalef( sx, sy, sz );

glColor3f( r, g, b );glBegin(GL_TRIANGLES );

glNormal3f( nx0, ny0, nz0 );glVertex3f( x0, y0, z0 );glNormal3f( nx1, ny1, nz1 );glVertex3f( x1, y1, z1 );glNormal3f( nx2, ny2, nz2 );glVertex3f( x2, y2, z2 );

glEnd( );

Setting a Surface Normal in OpenGL

Per-vertex

Page 6: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

6

Computer Graphics

glMatrixMode( GL_MODELVIEW );

glTranslatef( tx, ty, tz );glRotatef( degrees, ax, ay, az );glScalef( sx, sy, sz );

glShadeModel( GL_FLAT );glNormal3f( nx, ny, nz );

glColor3f( r, g, b );glBegin(GL_TRIANGLES );

glVertex3f( x0, y0, z0 );glVertex3f( x1, y1, z1 );glVertex3f( x2, y2, z2 );

glEnd( );

Flat Shading (Per-face)

Page 7: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

7

Computer Graphics

glMatrixMode( GL_MODELVIEW );

glTranslatef( tx, ty, tz );glRotatef( degrees, ax, ay, az );glScalef( sx, sy, sz );

glShadeModel( GL_SMOOTH );

glColor3f( r, g, b );glBegin(GL_TRIANGLES );

glNormal3f( nx0, ny0, nz0 );glVertex3f( x0, y0, z0 );glNormal3f( nx1, ny1, nz1 );glVertex3f( x1, y1, z1 );glNormal3f( nx2, ny2, nz2 );glVertex3f( x2, y2, z2 );

glEnd( );

Smooth Shading (Per-vertex)

Page 8: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

8

Computer Graphics

Page 9: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

9

Computer Graphics

glTranslatef( tx, ty, tz );glRotatef( degrees, ax, ay, az );glScalef( sx, sy, sz );

glNormal3f( nx, ny, nz );

OpenGL Surface Normals Need to be Unitized by Someone

OpenGL expects the normal vector to be a unit vector, that is: nx2 + ny2 + nz2 = 1

If it is not, or if you are using scaling transformations, you can force OpenGL to do the unitizing for you with:

glEnable( GL_NORMALIZE );

Page 10: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

10

Computer Graphics

L E

n R

P

The OpenGL “built-in” Lighting Model

I

P Point being illuminatedI Light intensityL Unit vector from point to lightn Unit vector surface normalR Perfect reflection unit vectorE Unit vector to eye position

Page 11: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

11

Computer Graphics

1. Ambient = a constant

2. Diffuse = I*cosΘ

3. Specular = I*cosS

Accounts for light bouncing “everywhere”

Accounts for the angle between the incoming light and the surface normal

Accounts for the angle between the “perfect reflector” and the eye. The exponent, S, accounts for surface shininess

Note that cosΘ is just the dot product between unit vectors L and n

Note that cos is just the dot product between unit vectors R and E

The OpenGL “built-in” Lighting Model

Page 12: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

12

Computer Graphics

n

Diffuse Lighting works because of spreading out the same amount of light energy across more surface area

Diffuse = I*cosΘ

Page 13: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

13

Computer Graphics

The Specular Lighting equation is a heuristic that approximates reflection from a rough surface

n

S ≈ “shininess”

1/S ≈ “roughness”

Specular = I*cosS

R

E

Page 14: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

14

Computer Graphics

+

=

+

Ambient

Diffuse

Specular

The Three Elements ofComputer Graphics Lighting

Page 15: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

15

Computer Graphics

Types of Light Sources

Spotlight

Point

Directional (Parallel, Sun)

Page 16: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

16

Computer Graphics

Lighting ExamplesPoint Light at the Eye

Point Light at the Origin

Page 17: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

17

Computer Graphics

Lighting Examples

Spot Lights

Page 18: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

18

Computer Graphics

LR

LG

LB

EREGEB

What the light can produce

What the eye sees

Colored Lights Shining on Colored Objects

ER = LR * MREG = LG * MGEB = LB * MB

White Light

Green Light

MRMGMB

What the material can reflect

Page 19: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

19

Computer Graphics

If there is one light and one material, the following things can be set independently:

• Global scene ambient red, green, blue• Light position: x, y, z• Light ambient red, green, blue• Light diffuse red, green, blue• Light specular red, green, blue• Material reaction to ambient red, green, blue • Material reaction to diffuse red, green, blue • Material reaction to specular red, green, blue• Material specular shininess

This makes for 25 things that can be set for just one light and one material! While many combinations are possible, some make more sense than others.

Too Many Lighting Options

Page 20: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

20

Computer Graphics

1. Set the ambient light globally using, for example,glLightModelfv( GL_LIGHT_MODEL_AMBIENT, MulArray3( .3f, White ) )

I.e., set it to some low intensity of white.

2. Set the light’s ambient component to zero.

3. Set the light’s diffuse and specular components to the full color of the light.

4. Set each material’s ambient and diffuse to the full color of the object.

5. Set each material’s specular component to some fraction of white.

Ways to Simplify Too Many Lighting Options

Page 21: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

21

Computer Graphics

float White[ ] = { 1.,1.,1.,1. };

// utility to create an array from 3 separate values:

float *Array3( float a, float b, float c ){

static float array[4];

array[0] = a;array[1] = b;array[2] = c;array[3] = 1.;return array;

}

// utility to create an array from a multiplier and an array:

float *MulArray3( float factor, float array0[3] ){

static float array[4];

array[0] = factor * array0[0];array[1] = factor * array0[1];array[2] = factor * array0[2];array[3] = 1.;return array;

}

Page 22: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

22

Computer Graphics

glMaterialfv( GL_BACK, GL_AMBIENT, MulArray3( .4, White ) );glMaterialfv( GL_BACK, GL_DIFFUSE, MulArray3( 1., White ) );glMaterialfv( GL_BACK, GL_SPECULAR, Array3( 0., 0., 0. ) );glMaterialf ( GL_BACK, GL_SHININESS, 5. );glMaterialfv( GL_BACK, GL_EMISSION, Array3( 0., 0., 0. ) );

glMaterialfv( GL_FRONT, GL_AMBIENT, MulArray3( 1., rgb ) );glMaterialfv( GL_FRONT, GL_DIFFUSE, MulArray3( 1., rgb ) );glMaterialfv( GL_FRONT, GL_SPECULAR, MulArray3( .7, White ) );glMaterialf ( GL_FRONT, GL_SHININESS, 8. );glMaterialfv( GL_FRONT, GL_EMISSION, Array3( 0., 0., 0. ) );

Setting the Material Characteristics

Page 23: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

23

Computer Graphics

glLightModelfv( GL_LIGHT_MODEL_AMBIENT, MulArray3( .2, White ) );glLightModeli ( GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE );

glLightfv( GL_LIGHT0, GL_AMBIENT, Array3( 0., 0., 0. ) );glLightfv( GL_LIGHT0, GL_DIFFUSE, LightColor );glLightfv( GL_LIGHT0, GL_SPECULAR, LightColor );

glLightf ( GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1. );glLightf ( GL_LIGHT0, GL_LINEAR_ATTENUATION, 0. );glLightf ( GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0. );

// this is here because we are going to do object (and thus normal) scaling:

glEnable( GL_NORMALIZE );

Setting the Light Characteristics

You can havemultiple lights

Attenuation = 1

where d is the distance from the light to the point being lit

Page 24: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

24

Computer Graphics

glMatrixMode( GL_MODELVIEW );glLoadIdentity( );

// if we do this, then the light will be wrt the scene at XLIGHT, YLIGHT, ZLIGHT:

glLightfv( GL_LIGHT0, GL_POSITION, Array3(XLIGHT, YLIGHT, ZLIGHT) );

// translate the object into the viewing volume:

gluLookAt( XEYE, YEYE, ZEYE, 0., 0., 0., 0., 1., 0. );

// if we do this, then the light will be wrt the eye at XLIGHT, YLIGHT, ZLIGHT:

// glLightfv( GL_LIGHT0, GL_POSITION, Array3(XLIGHT, YLIGHT, ZLIGHT) );

Setting the Light Position

The light position gets transformed by the value of the ModelView matrix at the moment the light position is set.

Page 25: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

25

Computer Graphics

// perform the rotations and scaling about the origin:

glRotatef( Xrot, 1., 0., 0. );glRotatef( Yrot, 0., 1., 0. );glScalef( Scale, Scale, Scale );

// if we do this, then the light will be wrt to the object at XLIGHT, YLIGHT, ZLIGHT:

// glLightfv( GL_LIGHT0, GL_POSITION, Array3(XLIGHT, YLIGHT, ZLIGHT) );

// specify the shading model:

glShadeModel( GL_SMOOTH );

// enable lighting:glEnable( GL_LIGHTING );

glEnable( GL_LIGHT0 );

// draw the objects:. . .

You can enable and disable lighting “at all”.(This toggles between using the lighting equationssay and what glColor3f( ) says

You can enable and disable each light independently

It is usually good form to disable the lighting after you are done using it

Page 26: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

26

Computer Graphics

float *Array3( float a, float b, float c ){

static float array[4];

array[0] = a;array[1] = b;array[2] = c;array[3] = 1.;return array;

}

Sidebar: Why are Light Positions 4-element arrays where the 4th element is 1.0? Homogeneous Coordinates!

We usually think of a 3D point as being represented by a triple: (x,y,z).

Using homogeneous coordinates, we add a 4th number: (x,y,z,w)

Graphics systems take (x,y,z,w) and then divide x, y, and z by w before using them.

, ,x y zX Y Zw w w

Thus (1,2,3,1) , (2,4,6,2) , (-1,-2,-3,-1) all represent the same 3D point.

Page 27: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

27

Computer Graphics

This Lets us Represent Points at Infinity

This is useful to be able specify a parallel light source by placing the light source location at infinity.

The point (1,2,3,1) represents the 3D point (1,2,3)

The point (1,2,3,.5) represents the 3D point (2,4,6)

The point (1,2,3,.01) represents the point (100,200,300)

So, (1,2,3,0) represents a point at infinity, but along the ray from the origin through (1,2,3).

Points-at-infinity are used for parallel light sources and some shadow algorithms

Page 28: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

28

Computer Graphics

glLightfv( GL_LIGHT0, GL_SPOT_DIRECTION, Array3(xdir,ydir,zdir) )

Specifies the spotlight-pointing direction. This gets transformed by the current value of the ModelView matrix.

glLightf( GL_LIGHT0, GL_SPOT_EXPONENT, e )

Specifies the spotlight directional intensity. This acts very much like the exponent in the specular lighting equation.

glLightf( GL_LIGHT0, GL_SPOT_CUTOFF, deg )

Specifies the spotlight maximum spread angle.

Additional Parameters for Spotlights

Page 29: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

29

Computer Graphics

voidSetMaterial( float r, float g, float b, float shininess ){

glMaterialfv( GL_BACK, GL_EMISSION, Array3( 0., 0., 0. ) );glMaterialfv( GL_BACK, GL_AMBIENT, MulArray3( .4f, White ) );glMaterialfv( GL_BACK, GL_DIFFUSE, MulArray3( 1., White ) );glMaterialfv( GL_BACK, GL_SPECULAR, Array3( 0., 0., 0. ) );glMaterialf ( GL_BACK, GL_SHININESS, 2.f );

glMaterialfv( GL_FRONT, GL_EMISSION, Array3( 0., 0., 0. ) );glMaterialfv( GL_FRONT, GL_AMBIENT, Array3( r, g, b ) );glMaterialfv( GL_FRONT, GL_DIFFUSE, Array3( r, g, b ) );glMaterialfv( GL_FRONT, GL_SPECULAR, MulArray3( .8f, White ) );glMaterialf ( GL_FRONT, GL_SHININESS, shininess );

}

Shortcuts I Like

0

12

GL_FRONT side

GL_BACK side

Vertices are CCW when viewed from the outside

Definition of GL_FRONT and GL_BACK:

Vertices are CW when viewed from the outside

Page 30: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

30

Computer Graphics

voidSetPointLight( int ilight, float x, float y, float z, float r, float g, float b ){

glLightfv( ilight, GL_POSITION, Array3( x, y, z ) );glLightfv( ilight, GL_AMBIENT, Array3( 0., 0., 0. ) );glLightfv( ilight, GL_DIFFUSE, Array3( r, g, b ) );glLightfv( ilight, GL_SPECULAR, Array3( r, g, b ) );glLightf ( ilight, GL_CONSTANT_ATTENUATION, 1. );glLightf ( ilight, GL_LINEAR_ATTENUATION, 0. );glLightf ( ilight, GL_QUADRATIC_ATTENUATION, 0. );glEnable( ilight );

}

voidSetSpotLight( int ilight, float x, float y, float z, float xdir, float ydir, float zdir, float r, float g, float b ){

glLightfv( ilight, GL_POSITION, Array3( x, y, z ) );glLightfv( ilight, GL_SPOT_DIRECTION, Array3(xdir,ydir,zdir) );glLightf( ilight, GL_SPOT_EXPONENT, 1. );glLightf( ilight, GL_SPOT_CUTOFF, 45. );glLightfv( ilight, GL_AMBIENT, Array3( 0., 0., 0. ) );glLightfv( ilight, GL_DIFFUSE, Array3( r, g, b ) );glLightfv( ilight, GL_SPECULAR, Array3( r, g, b ) );glLightf ( ilight, GL_CONSTANT_ATTENUATION, 1. );glLightf ( ilight, GL_LINEAR_ATTENUATION, 0. );glLightf ( ilight, GL_QUADRATIC_ATTENUATION, 0. );glEnable( ilight );

}

Shortcuts I Like

Page 31: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

31

Computer Graphics

Sidebar: Note that we are computing the light intensity at each vertex first, and then interpolating that intensity across the polygon second

That is, you are only using the lighting model at each vertex.You can do an even better job if you interpolate the normal across the polygon first, and

then compute the light intensity with the lighting model at each fragment second:

Per-vertex Per-fragment

Page 32: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

32

Computer Graphics

Per-vertex

Per-fragment

But, for that you will need the Shaders course (CS 457/557)

Page 33: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

33

Computer Graphics

glMatrixMode( GL_MODELVIEW );

glTranslatef( tx, ty, tz );glRotatef( degrees, ax, ay, az );glScalef( sx, sy, sz );

glShadeModel( GL_SMOOTH );

glBegin(GL_TRIANGLES );glColor3f( r0, g0, b0 );glVertex3f( x0, y0, z0 );glColor3f( r1, g1, b1 );glVertex3f( x1, y1, z1 );glColor3f( r2, g2, b2 );

glEnd( );

Sidebar: Smooth Shading can also interpolate vertex colors,not just the results of the lighting model

Flat

Smooth

Page 34: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

34

Computer Graphics

This is especially useful when using colors for scientific visualization:

Smooth Shading can also interpolate vertex colors,not just the results of the lighting model

Page 35: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

35

Computer Graphics

Tricky Lighting Situations

Hair

Fur

Feathers

Watch for these in movies!

Page 36: Computer Graphics Lighting - Oregon State Universityweb.engr.oregonstate.edu/~mjb/cs550/Handouts/Lighting.1pp.pdf · mjb–September 6, 2017 1 Computer Graphics Computer Graphics

mjb – September 6, 2017

36

Computer Graphics

Tricky Lighting Situations

Notice the lighting in the fur!

Disney