CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer
description
Transcript of CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer
![Page 1: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/1.jpg)
Hank Childs, University of OregonOctober 8, 2014
CIS 441/541: Introduction to Computer Graphics
Lecture 3: Interpolation
![Page 2: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/2.jpg)
Where we are… We haven’t talked about how to get
triangles into position. Arbitrary camera positions through linear
algebra We haven’t talked about shading On Friday, we tackled this problem:
How to deposit triangle colors onto an image?Still don’t know how to:
1) Vary colors (easy)2) Deal with triangles that overlap
Today’s lecture will go over the key operation to do these two. Friday’s lecture will tell us how to do it.
![Page 3: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/3.jpg)
Outline Project 1B Scanline review Interpolation along a triangle Project 1C
![Page 4: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/4.jpg)
Outline Project 1B Scanline review Interpolation along a triangle Project 1C
![Page 5: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/5.jpg)
Project 1B: Questions? Clear what to do? Clear what to hand in? Follow the prompts as described … the
creative part of this class comes at the end.
![Page 6: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/6.jpg)
Outline Project 1B Scanline review Interpolation along a triangle Project 1C
![Page 7: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/7.jpg)
There are many ways we can select color for a pixel
Pixel center
Lower left of pixel
![Page 8: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/8.jpg)
Problem: how to deposit triangle colors onto an image?
Let’s take an example: 12x12 image Red triangle
Vertex 1: (2.5, 1.5) Vertex 2: (2.5, 10.5) Vertex 3: (10.5, 1.5) Vertex coordinates are with respect to pixel
locations
![Page 9: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/9.jpg)
(0,0) (12,0)
(12,12)(0,12)
(2.5,10.5)
(2.5,1.5) (10.8,1.5)
![Page 10: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/10.jpg)
Our desired output
How do we make this output? Efficiently?
![Page 11: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/11.jpg)
Don
’t ne
ed to
con
side
r any
P
ixel
s ou
tsid
e th
ese
lines
![Page 12: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/12.jpg)
Scanline algorithm: consider all rows that can possibly overlap
Don
’t ne
ed to
con
side
r any
P
ixel
s ou
tsid
e th
ese
lines
![Page 13: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/13.jpg)
Scanline algorithm: consider all rows that can possibly overlap
Don
’t ne
ed to
con
side
r any
P
ixel
s ou
tsid
e th
ese
lines
We will extract a “scanline”, i.e. calculate the intersections for one row
of pixels
X X X X X Y=5
![Page 14: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/14.jpg)
Red triangle Vertex 1: (2.5, 1.5) Vertex 2: (2.5, 10.5) Vertex 3: (10.5, 1.5)
![Page 15: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/15.jpg)
Red triangle Vertex 1: (2.5, 1.5) Vertex 2: (2.5, 10.5) Vertex 3: (10.5, 1.5)
Y=5
![Page 16: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/16.jpg)
Red triangle Vertex 1: (2.5, 1.5) Vertex 2: (2.5, 10.5) Vertex 3: (10.5, 1.5)
Y=5
What are the end points?
![Page 17: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/17.jpg)
Red triangle Vertex 1: (2.5, 1.5) Vertex 2: (2.5, 10.5) Vertex 3: (10.5, 1.5)
Y=5
What are the end points?
(2.5, 5)
![Page 18: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/18.jpg)
Red triangle Vertex 1: (2.5, 1.5) Vertex 2: (2.5, 10.5) Vertex 3: (10.5, 1.5)
Y=5
What are the end points?
(2.5, 5)
Algebra!
![Page 19: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/19.jpg)
Red triangle Vertex 1: (2.5, 1.5) Vertex 2: (2.5, 10.5) Vertex 3: (10.5, 1.5)
Y = mx+b 10.5=m*2.5+b 1.5 = m*10.5+b 9 = -8m m = -1.125 b = 13.3125 5 = -1.125*x + 13.3125 x = 7.3888
Y=5
What are the end points?
(2.5, 5)
Algebra!
![Page 20: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/20.jpg)
Scanline algorithm: consider all rows that can possibly overlap
Don
’t ne
ed to
con
side
r any
P
ixel
s ou
tsid
e th
ese
lines
X X X X X Y=57.38882.5
![Page 21: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/21.jpg)
Scanline algorithm: consider all rows that can possibly overlap
Don
’t ne
ed to
con
side
r any
P
ixel
s ou
tsid
e th
ese
lines
X X X X X Y=57.38882.5
Color is deposited at (3,5), (4,5), (5,5), (6,5), (7,5)
![Page 22: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/22.jpg)
Scanline algorithm Determine rows of pixels triangles can
possibly intersect Call them rowMin to rowMax
rowMin: ceiling of smallest Y value rowMax: floor of biggest Y value
For r in [rowMin rowMax] ; do Find end points of r intersected with triangle
Call them leftEnd and rightEnd For c in [ceiling(leftEnd) floor(rightEnd) ] ; do
ImageColor(r, c) triangle color
![Page 23: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/23.jpg)
Scanline algorithm Determine rows of pixels triangles
can possibly intersect For r in [rowMin rowMax] ; do
Find end points of r intersected with triangle Call them leftEnd and rightEnd
For c in [ceiling(leftEnd) floor(rightEnd) ] ; do ImageColor(r, c) triangle color
Y values from 1.5 to 10.5mean rows 2 through 10
For r = 5, leftEnd = 2.5, rightEnd = 7.3888
For r = 5, we call ImageColor with(5,3), (5,4), (5,5), (5,6), (5,7)
![Page 24: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/24.jpg)
Outline Project 1B Scanline review Interpolation along a triangle Project 1C
![Page 25: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/25.jpg)
What is a field?
Example field (2D): temperature over the United States
![Page 26: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/26.jpg)
How much data is needed to make this
picture?
Example field (2D): temperature over the United States
![Page 27: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/27.jpg)
Linear Interpolation for Scalar Field F
A B
F(B)
F(A)
X
F(X)
![Page 28: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/28.jpg)
Linear Interpolation for Scalar Field F
General equation to interpolate: F(X) = F(A) + t*(F(B)-F(A))
t is proportion of X between A and B t = (X-A)/(B-A)
A B
F(B)
X
F(X)F(A)
![Page 29: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/29.jpg)
Quiz Time #4
General equation to interpolate: F(X) = F(A) + t*(F(B)-F(A))
t is proportion of X between A and B t = (X-A)/(B-A)
• F(3) = 5, F(6) = 11• What is F(4)?= 5 + (4-3)/(6-3)*(11-5) = 7
![Page 30: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/30.jpg)
Consider a single scalar field defined on a
triangle.
X-axis
X=0 X=0.5 X=1 X=1.5 X=2
Y-axis
Y=0
Y=1
Y=0.5
![Page 31: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/31.jpg)
Consider a single scalar field defined on a
triangle.
X-axis
X=0 X=0.5 X=1 X=1.5 X=2
Y-axis
Y=0
Y=1
Y=0.5
V1
V2
V3
F(V2) = 2
F(V1) = 10 F(V3) = -2
![Page 32: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/32.jpg)
What is F(V4)?
X-axis
X=0 X=0.5 X=1 X=1.5 X=2
Y-axis
Y=0
Y=1
Y=0.5
V1
V2
V3
F(V2) = 2
F(V1) = 10 F(V3) = -2
V4, at (0.5, 0.25)
![Page 33: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/33.jpg)
What is F(V4)?
X-axis
X=0 X=0.5 X=1 X=1.5 X=2
Y-axis
Y=0
Y=1
Y=0.5
V1
V2
V3
F(V2) = 2
F(V1) = 10 F(V3) = -2
V5 V6V4, at (0.5, 0.25)
![Page 34: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/34.jpg)
Steps to follow: Calculate V5, the left intercept for Y=0.25 Calculate V6, the right intercept for Y=0.25 Calculate V4, which is between V5 and V6
![Page 35: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/35.jpg)
What is the X-location of V5?
X-axis
X=0 X=0.5 X=1 X=1.5 X=2
Y-axis
Y=0
Y=1
Y=0.5
V1
V2
V3
F(V2) = 2
F(V1) = 10 F(V3) = -2
V5 V6V4, at (0.5, 0.25)
F(v1) = A F(0) = 0F(v2) = B F(1) = 1F(v) = A + ((v-v1)/(v2-v1))*(B-A):
F(v) = 0.25, find v
0.25 = 0 + ((v-0)/(1-0)*(1-0) v = 0.25
![Page 36: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/36.jpg)
What is the F-value of V5?
X-axis
X=0 X=0.5 X=1 X=1.5 X=2
Y-axis
Y=0
Y=1
Y=0.5
V1
V2
V3
F(V2) = 2
F(V1) = 10 F(V3) = -2
V5 V6V4, at (0.5, 0.25)
F(v1) = A F(0) = 10F(v2) = B F(1) = 2F(v) = A + ((v-v1)/(v2-v1))*(B-A):
v = 0.25, find F(v)
F(v) = 10 + ((0.25-0)/(1-0))*(2-10) = 10 + 0.25*-8 = 10 -2 = 8
![Page 37: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/37.jpg)
What is the X-location of V6?
X-axis
X=0 X=0.5 X=1 X=1.5 X=2
Y-axis
Y=0
Y=1
Y=0.5
V1
V2
V3
F(V2) = 2
F(V1) = 10 F(V3) = -2
V5 V6V4, at (0.5, 0.25)
F(v1) = A F(1) = 1F(v2) = B F(2) = 0F(v) = A + ((v-v1)/(v2-v1))*(B-A):
F(v) = 0.25, find v
0.25 = 1 + ((v-1)/(2-1)*(0-1) = 1 + (v-1)*(-1)0.25 = 2 - v v = 1.75
![Page 38: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/38.jpg)
What is the F-value of V6?
X-axis
X=0 X=0.5 X=1 X=1.5 X=2
Y-axis
Y=0
Y=1
Y=0.5
V1
V2
V3
F(V2) = 2
F(V1) = 10 F(V3) = -2
V5 V6V4, at (0.5, 0.25)
F(v1) = A F(1) = 2F(v2) = B F(2) = -2F(v) = A + ((v-v1)/(v2-v1))*(B-A):
v = 1.75, find F(v)
F(v) = 2 + ((1.75-1)/(2-1)*(-2 - +2) = 2 + (.75)*(-4) = 2 - 3 = -1
![Page 39: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/39.jpg)
What is the F-value of V5?
X-axis
X=0 X=0.5 X=1 X=1.5 X=2
Y-axis
Y=0
Y=1
Y=0.5
V1
V2
V3
L(V5) = (0.25, 0.25)F(V5) = 8
F(V1) = 10 F(V3) = -2
V5 V6V4, at (0.5, 0.25)
L(V6) = (1.75, 0.25)F(V6) = -1
![Page 40: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/40.jpg)
What is the F-value of V5?
X-axis
X=0 X=0.5 X=1 X=1.5 X=2
Y-axis
Y=0
Y=1
Y=0.5
V1
V2
V3
L(V5) = (0.25, 0.25)F(V5) = 8
F(V1) = 10 F(V3) = -2
V5 V6V4, at (0.5, 0.25)
L(V6) = (1.75, 0.25)F(V6) = -1
F(v1) = A F(0.25) = 8F(v2) = B F(1.75) = -1F(v) = A + ((v-v1)/(v2-v1))*(B-A):
v = 0.5, find F(v)
F(v) = 8 + ((0.5-0.25)/(1.75-0.25))*(-1-8) = 8 + (0.25/1.5)*9 = 8-1.5 = 6.5
![Page 41: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/41.jpg)
Visualization of F
Not definedF=-2
F=10
How do you think this picture was made?
![Page 42: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/42.jpg)
Outline Project 1B Scanline review Interpolation along a triangle Project 1C
![Page 43: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/43.jpg)
Arbitrary Triangles The description of the scanline algorithm
from Lecture 2 is general. But the implementation for these three
triangles vary:
How do we handle arbitrary triangles?
![Page 44: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/44.jpg)
Arbitrary Triangles The description of the scanline algorithm
from Lecture 2 is general. But the implementation for these three
triangles vary:
How do we handle arbitrary triangles?
Solve for locationof this point and then solve two “base cases”.
![Page 45: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/45.jpg)
Arbitrary Triangles Project #1B: implement the scanline
algorithm for triangles with “flat bottoms”
Project #1C: arbitrary triangles
![Page 46: CIS 441/541: Introduction to Computer Graphics Lecture 3: Interpolation and the Z-Buffer](https://reader035.fdocuments.in/reader035/viewer/2022062813/56816564550346895dd7ebbb/html5/thumbnails/46.jpg)
Project #1C (3%), Due Fri 10/12
Goal: apply the scanline algorithm to arbitrary triangles and output an image.
Extend your project1B code
File proj1c_geometry.vtk available on web (80MB)
File “reader.cxx” has code to read triangles from file.
No Cmake, project1c.cxx