computer graphics cs 482 – fall 2014 september 15, 2014 virtual cameras clipping perspective...
TRANSCRIPT
COMPUTER GRAPHICS
CS 482 – FALL 2014
SEPTEMBER 15, 2014VIRTUAL CAMERAS
• CLIPPING• PERSPECTIVE PROJECTION• ORTHOGRAPHIC PROJECTION
CLIPPING
CS 482 – FALL 2014
VIEW FRUSTUM
SEPTEMBER 15, 2014: VIRTUAL CAMERAS PAGE 2
THE ACTUAL “VIEW VOLUME” OF A SCENE IS LIMITED BY NEAR AND FAR CLIPPING PLANES, AS WELL AS LIMITATIONS ON THE HORIZONTAL AND
VERTICAL VIEWING ANGLES.
ALL OBJECTS (OR PARTIAL OBJECTS) THAT FALL OUTSIDE OF THE “TRUNCATED PYRAMID” OF THE VIEW FRUSTUM SHOULD NOT BE
RENDERED, IF IT’S POSSIBLE TO INEXPENSIVELY “CLIP” THEM FROM THE SCENE.
CLIPPING
CS 482 – FALL 2014
NEAR AND FAR CLIPPING
SEPTEMBER 15, 2014: VIRTUAL CAMERAS PAGE 3
NEAR AND FAR CLIP PLANES MUST BE CHOSEN CAREFULLY.FAR CLIP PLANES ARE EXTREMELY
USEFUL IN REDUCING THE NUMBER OF POLYGONS THAT MUST BE PROCESSED
DURING RENDERING...
NEAR CLIP PLANES ELIMINATE OBJECTS THAT MIGHT OBSTRUCT THE VIEWER’S DESIRED VIEW...
…BUT THE IMAGE MAY BE DAMAGED IF THE FAR CLIP
PLANE IS TOO CLOSE.
…BUT UNWANTED VIEWS OF A GRAPHICAL OBJECT’S INTERNAL GEOMETRY MAY RESULT IF THE NEAR CLIP PLANE IS
PUSHED BACK TOO FAR.
PERSPECTIVE PROJECTION
CS 482 – FALL 2014
CONVERTING 3D TO 2D
SEPTEMBER 15, 2014: VIRTUAL CAMERAS PAGE 4
WHEN 3-D OBJECTS ARE RENDERED IN A 2-D ENVIRONMENT, SOME FORM OF PROJECTION IS USED TO ELIMINATE THE “EXTRA”
DIMENSION.THE TWO PRIMARY TYPES OF PROJECTIONS ARE:
• ORTHOGRAPHIC (OR PARALLEL), IN WHICH ONE DIMENSION IS MERELY DELETED
• PERSPECTIVE, IN WHICH A FORMAL MAPPING IS PERFORMED TO PROVIDE SOME DEGREE OF FORESHORTENING TO THE RENDERED IMAGE.
WHILE PARALLEL PROJECTIONS ARE COMPUTATIONALLY INEXPENSIVE AND PROVIDE A GOOD NOTION OF ACTUAL DISTANCES (AT LEAST WITH RESPECT
TO THE REMAINING DIMENSIONS), PERSPECTIVE PROJECTIONS PROVIDE BETTER REALISM.WITH EITHER TYPE OF
PROJECTION, WE REQUIRE A 4X4 MATRIX THAT WILL MAP
3-D POINTS (IN HOMOGENEOUS
COORDINATES) TO 2-D POINTS ON THE VIEWSCREEN.
'
0
'
'
w
y
x
w
z
y
x
PERSPECTIVE PROJECTION
CS 482 – FALL 2014
VANISHING POINTS
SEPTEMBER 15, 2014: VIRTUAL CAMERAS PAGE 5
TO MAKE DISTANT OBJECTS APPEAR SMALLER, PERSPECTIVE PROJECTIONS
ARE USED.
ONE VANISHING POINT, STRAIGHT AHEAD OF THE
VIEWER.
A SECOND VANISHING POINT IS ADDED, AT FAR
LEFT.
NOW THERE ARE VANISHING POINTS IN THE DISTANT LEFT AND RIGHT, AS WELL AS FAR
OVERHEAD.
zz
zyyz
zxxz
z
y
x
z
yz
xz
c
cc
cc
c
cc
cc
0
1100
0000
00
00
PERSPECTIVE PROJECTION MATRIX FOR ONE VANISHING POINT ON THE Z-AXIS, WITH A CENTER OF
PROJECTION AT (XC, YC, ZC)
(ADDITIONAL VANISHING
POINTS MAY BE PRODUCED BY THEN APPLYING
ROTATIONS AROUND THE APPROPRIATE
AXES.)
PERSPECTIVE PROJECTION
CS 482 – FALL 2014
LOCATING VANISHING POINTS
SEPTEMBER 15, 2014: VIRTUAL CAMERAS PAGE 6
WHERE ARE THE VANISHING POINTS IN THIS SCENE FROM “BIOSHOCK
INFINITE”?
PERSPECTIVE PROJECTION
CS 482 – FALL 2014
PROJECTION SHADOWS
SEPTEMBER 15, 2014: VIRTUAL CAMERAS PAGE 7
WHEN CASTING SHADOWS FROM A DIRECTIONAL LIGHT SOURCE ONTO PLANAR SURFACES, A SIMPLISTIC IMPLEMENTATION COMBINES
TRANSLATIONS AND PERSPECTIVE PROJECTIONS.
(1 00 1
0 −𝑥 𝑙
0 −𝑦 𝑙
0 00 0
1 −𝑧 𝑙
0 1) (
𝑥𝑦𝑧1)(
1 00 1
0 00 0
0 00 −1/𝑦 𝑙
1 00 0
)(1 00 1
0 𝑥 𝑙
0 𝑦 𝑙
0 00 0
1 𝑧 𝑙
0 1)
FOR EVERY VERTEX ON THE
3D OBJECT BEING “SHADOWED”
FIRST, TRANSLATE BY THE NEGATIVE OF THE LIGHT’S
POSITION
SECOND, PROJECT TO THE SHADOW PLANE (IN THIS CASE, THE X-
Z PLANE)
AND FINALLY, TRANSLATE BACK BY THE LIGHT’S
POSITION
PERSPECTIVE PROJECTION
CS 482 – FALL 2014
ASPECT RATIO
SEPTEMBER 15, 2014: VIRTUAL CAMERAS PAGE 8
IN ORDER TO PRESERVE THE RELATIVE SHAPES AND SIZES OF OBJECTS WHEN THE VIEWING WINDOW IS RESIZED, THE
PERSPECTIVE PROJECTION IS ADJUSTED TO ENSURE A CONSTANT ASPECT RATIO.void ResizeWindow(GLsizei w, GLsizei h)
{ currWindowSize[0] = w; currWindowSize[1] = h; if ( h == 0 ) h = 1;
if ( ASPECT_RATIO > w/h ) { currViewportSize[0] = w; currViewportSize[1] = int(w / ASPECT_RATIO); } else { currViewportSize[0] = int(h * ASPECT_RATIO); currViewportSize[1] = h; } // Center the image within the resized window. glViewport((w - currViewportSize[0]) / 2, 0, currViewportSize[0], currViewportSize[1]); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(FIELD_OF_VIEW_ANGLE, ASPECT_RATIO, NEAR_CLIP_DISTANCE, FAR_CLIP_DISTANCE); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); return;}
ORTHOGRAPHIC PROJECTION
CS 482 – FALL 2014
PARALLEL PROJECTION
SEPTEMBER 15, 2014: VIRTUAL CAMERAS PAGE 9
w
y
x
w
z
y
x
0
1000
0000
0010
0001USEFUL FOR DRAFTING AND DESIGN SPECIFICATIONS,
PARALLEL PROJECTIONS DO NOT TEND TO PROVIDE
REALISTIC VIEWS OF 3-D OBJECTS.
ORTHOGRAPHIC PROJECTION MATRIX (TO X-Y
PLANE)