Canonical View Volumes

Canonical View Volumes

University of British Columbia View Volumes Canonical View Volumes Why Canonical View Volumes? CPSC 314 Computer Graphics Jan-Apr 2016 • specifies field-of-view, used for clipping • standardized viewing volume representation • permits standardization • restricts domain of z stored for visibility test • clipping Tamara Munzner perspective orthographic • easier to determine if an arbitrary point is perspective view volume orthographic view volume orthogonal enclosed in volume with canonical view y=top parallel volume vs. clipping to six arbitrary planes y=top x=left x=left • rendering y y x or y x or y = +/- z x or y back • projection and rasterization algorithms can be Viewing 3 z plane z x=right back 1 VCS front reused front plane VCS y=bottom z=-near z=-far x -z x z=-far plane -z plane -1 x=right y=bottom z=-near http://www.ugrad.cs.ubc.ca/~cs314/Vjan2016 -1 2 3 4 Normalized Device Coordinates Normalized Device Coordinates Understanding Z Understanding Z near, far always positive in GL calls • convention left/right x =+/- 1, top/bottom y =+/- 1, near/far z =+/- 1 • z axis flip changes coord system handedness THREE.OrthographicCamera(left,right,bot,top,near,far); • viewing frustum mapped to specific mat4.frustum(left,right,bot,top,near,far, projectionMatrix); • RHS before projection (eye/view coords) parallelepiped Camera coordinates NDC • LHS after projection (clip, norm device coords) • Normalized Device Coordinates (NDC) x x perspective view volume orthographic view volume • same as clipping coords x=1 VCS NDCS y=top • only objects inside the parallelepiped get right y=top y (1,1,1) y=top x=left x=left x=left rendered Frustum y -z z z y left y • which parallelepiped? z (-1,-1,-1) z x= -1 x=right x x=right VCS • depends on rendering system z= -1 z=1 x z=-far VCS y=bottom z=-near z=-far x x z=-far y=bottom y=bottom z=-n z=-f z=-near x=right z=-near 5 6 7 8 Understanding Z Orthographic Derivation Orthographic Derivation Orthographic Derivation • why near and far plane? • scale, translate, reflect for new coord sys • scale, translate, reflect for new coord sys • scale, translate, reflect for new coord sys • near plane: y = top → y'= 1 y = top → y'= 1 1 = a ⋅top + b y'= a ⋅ y + b y'= a ⋅ y + b • avoid singularity (division by zero, or very y = bot → y' = −1 y = bot → y' = −1 −1 = a ⋅bot + b small numbers) VCS NDCS VCS NDCS 2 • far plane: 1 = top + b b = 1− a⋅top,b = −1− a ⋅bot top bot y=top y y=top y − • store depth in fixed-point representation x=left (1,1,1) x=left (1,1,1) 1 a top 1 a bot y y − ⋅ = − − ⋅ 2⋅top (integer), thus have to have fixed range of z z b = 1− z (-1,-1,-1) z (-1,-1,-1) 1− (−1) = −a⋅bot − (−a⋅top) top − bot values (0…1) x=right x x=right x 2 = a(−bot + top) (top − bot ) − 2⋅top x x b = • avoid/reduce numerical precision artifacts for z=-far z=-far 2 top − bot distant objects y=bottom z=-near y=bottom z=-near a = − top − bot top − bot b = top bot 9 10 11 − 12 Orthographic Derivation Orthographic Derivation Orthographic Derivation Orthographic Derivation • scale, translate, reflect for new coord sys • scale, translate, reflect for new coord sys • scale, translate, reflect for new coord sys • scale, translate, reflect for new coord sys y = top → y'= 1 y'= a ⋅ y + b 2 right + left 2 right + left 2 right + left y = bot → y' = −1 0 0 − 0 0 − 0 0 − right − left right − left right − left right − left right − left right − left VCS 2 a = 2 top + bot 2 top + bot 2 top + bot 0 0 − 0 0 − 0 0 − y=top top − bot top − bot top − bot top − bot top − bot top − bot top − bot x=left P' = P P' = P P' = P y top + bot − 2 far + near − 2 far + near − 2 far + near 0 0 − 0 0 − 0 0 − z b = − far − near far − near far − near far − near far − near far − near x=right top − bot x z=-far 0 0 0 1 0 0 0 1 0 0 0 1 y=bottom z=-near same idea for right/left, far/near 13 14 15 16 Orthographic Derivation Projective Rendering Pipeline Projection Warp Perspective Warp • scale, translate, reflect for new coord sys • warp perspective view volume to orthogonal • perspective viewing frustum transformed to object world viewing view volume cube O2W W2V V2C OCS WCS VCS 2 right + left 0 0 − modeling viewing projection • render all scenes with orthographic projection! • orthographic rendering of cube produces same right − left right − left transformation transformation transformation clipping • aka perspective warp image as perspective rendering of original 2 top + bot C2N frustum 0 0 − OCS - object/model coordinate system CCS top bot top bot perspective P' = − − P WCS - world coordinate system divide normalized x x − 2 far + near 0 0 − VCS - viewing/camera/eye coordinate N2D device far − near far − near system NDCS z=α z=d z=0 z=d viewport CCS - clipping coordinate system 0 0 0 1 transformation NDCS - normalized device coordinate device system Z Z DCS DCS - device/display/screen coordinate 17 system 18 19 20 Predistortion Projective Rendering Pipeline Separate Warp From Homogenization Perspective Divide Example viewing clipping normalized • specific example V2C CCS C2N device object world viewing VCS O2W W2V V2C NDCS • assume image plane at z = -1 OCS WCS VCS projection perspective modeling viewing projection transformation division • a point [x,y,z,1]T projects to [-x/z,-y/z,-z/z,1]T ≡ transformation transformation transformation alter w / w clipping [x,y,z,-z]T C2N OCS - object/model coordinate system CCS • warp requires only standard matrix multiply perspective x x WCS - world coordinate system y divide normalized • distort such that orthographic projection of distorted y z VCS - viewing/camera/eye coordinate device objects is desired persp projection z N2D 1 system NDCS − z • w is changed viewport CCS - clipping coordinate system • clip after warp, before divide -z transformation NDCS - normalized device coordinate device • division by w: homogenization system DCS DCS - device/display/screen coordinate 21 system 22 23 24 Perspective Divide Example Perspective Normalization Perspective To NDCS Derivation Perspective Derivation • matrix formulation x' 1 0 0 0 x x 1 0 0 0 x x x / z 1 0 0 0 x x − x simple example earlier: y' 0 1 0 0 y y z / d = 0 1 0 0 x p y 0 1 0 0 y y − y / z y y z' 0 0 1 0 z T = ⋅ = ≡ d −α ⋅d (z − α )⋅d y 0 0 = p = w' 0 0 1/d 0 1 z 0 0 1 0 z z − 1 d − α d − α z d −α z / d z 2 VCS y=top 1 p d α NDCS 1 0 0 −1 0 1 − z 1 0 0 0 1 z 1− d z complete: shear, scale, projection-normalization d d −α x=left y (1,1,1) € • after homogenizing, once again w=1 y z • warp and homogenization both preserve x ′ E 0 A 0 x (-1,-1,-1) x z y ′ 0 F B 0 y projection z=-near perspective relative depth (z coordinate) y=bottom z=-far = transformation division x z ′ 0 0 C D z x=right alter w / w w ′ 0 0 −1 0 1 25 27 28 € Perspective Derivation Perspective Derivation Perspective Derivation Perspective Derivation x = left → x′ / w′= −1 x' 1 0 0 0 x x' E 0 A 0 x x'= Ex + Az • similarly for other 5 planes x' 1 0 0 0 x x = right → x′/ w′ = 1 earlier: y' 0 1 0 0 y earlier: y' 0 F B 0 y y'= Fy + Bz = y' 0 1 0 0 y = • 6 planes, 6 unknowns z' 0 0 1 0 z = z' 0 0 C D z y = top → y′ / w′= 1 z' 0 0 1 0 z z'= Cz + D w' 0 0 1/d 0 1 w' 0 0 −1 0 1 y = bottom → y′ / w′= −1 2n r + l w' 0 0 1/d 0 1 w'= −z z near z / w 1 0 0 = − → ′ ′ = − r − l r − l complete: shear, scale, projection-normalization complete: shear, scale, projection-normalization z = − far → z′ / w′ = 1 2n t + b € € € €y' Fy + Bz Fy + Bz Fy + Bz 0 0 y'= Fy + Bz, = , 1= , 1= , t − b t − b x ′ E 0 A 0 x x ′ E 0 A 0 x w' w' w' −z −( f + n) −2 fn y ′ 0 F B 0 y y ′ 0 F B 0 y y z y top = = 1 = F + B , 1 = F − B, 1= F − B, 0 0 z ′ 0 0 C D z z ′ 0 0 C D z −z −z −z −(−near) f − n f − n w ′ 0 0 −1 0 1 w ′ 0 0 −1 0 1 top 1 = F − B 0 0 −1 0 near 29 30 31 32 € € € € € Projective Rendering Pipeline NDC to Device Transformation Origin Location N2D Transformation • map from NDC to pixel coordinates on display • yet more (possibly confusing) conventions • general formulation object world viewing • NDC range is x = -1...1, y = -1...1, z = -1...1 • GL origin: lower left • reflect in y for upper vs. lower left origin O2W W2V V2C OCS WCS VCS • typical display range: x = 0...500, y = 0...300 • most window systems origin: upper left • scale by width, height, depth modeling viewing projection transformation • maximum is size of actual screen transformation transformation clipping • then must reflect in y • translate by width/2, height/2, depth/2 C2N • z range max and default is (0, 1), use later for visibility • FCG includes additional translation for pixel centers at OCS - object/model coordinate system CCS • when interpreting mouse position, have to flip your y perspective gl.viewport(0,0,w,h); (.5, .5) instead of (0,0) gl.depthRange(0,1); // depth = 1 by default coordinates WCS - world coordinate system divide normalized device 0 x 500 0 x 500 0 x 500 VCS - viewing/camera/eye coordinate N2D y y y system NDCS 0 y 0 y 0 y height viewport CCS - clipping coordinate system -1 -1 1 transformation NDCS - normalized device coordinate device x viewport x viewport x viewport system NDC NDC NDC DCS 1 1 -1 DCS - device/display/screen coordinate width system 33 -1 1 300 34 -1 1 300 35 -1 1 300 36 N2D Transformation Device vs.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    3 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us