Chapter 4-3D Camera & Optimizations, Rasterization

Similar documents
Chapter 5-3D Camera & Optimizations, Rasterization

3D Polygon Rendering. Many applications use rendering of 3D polygons with direct illumination

Introduction to Computer Graphics 4. Viewing in 3D

Computer Graphics. Bing-Yu Chen National Taiwan University The University of Tokyo

One or more objects A viewer with a projection surface Projectors that go from the object(s) to the projection surface

Overview. Viewing and perspectives. Planar Geometric Projections. Classical Viewing. Classical views Computer viewing Perspective normalization

Chapter 5. Projections and Rendering

3D Viewing. CMPT 361 Introduction to Computer Graphics Torsten Möller. Machiraju/Zhang/Möller

Classical and Computer Viewing. Adapted From: Ed Angel Professor of Emeritus of Computer Science University of New Mexico

3D Viewing. Introduction to Computer Graphics Torsten Möller. Machiraju/Zhang/Möller

CITSTUDENTS.IN VIEWING. Computer Graphics and Visualization. Classical and computer viewing. Viewing with a computer. Positioning of the camera

Three-Dimensional Graphics III. Guoying Zhao 1 / 67

Computer Graphics. Jeng-Sheng Yeh 葉正聖 Ming Chuan University (modified from Bing-Yu Chen s slides)

Announcements. Submitting Programs Upload source and executable(s) (Windows or Mac) to digital dropbox on Blackboard

From Vertices to Fragments: Rasterization. Reading Assignment: Chapter 7. Special memory where pixel colors are stored.

FROM VERTICES TO FRAGMENTS. Lecture 5 Comp3080 Computer Graphics HKBU

CHAPTER 1 Graphics Systems and Models 3

Clipping and Scan Conversion

QUESTION BANK 10CS65 : COMPUTER GRAPHICS AND VISUALIZATION

COMP30019 Graphics and Interaction Scan Converting Polygons and Lines

Orthogonal Projection Matrices. Angel and Shreiner: Interactive Computer Graphics 7E Addison-Wesley 2015

Overview. Pipeline implementation I. Overview. Required Tasks. Preliminaries Clipping. Hidden Surface removal

The Traditional Graphics Pipeline

Viewing with Computers (OpenGL)

Chapter 8 Three-Dimensional Viewing Operations

2D rendering takes a photo of the 2D scene with a virtual camera that selects an axis aligned rectangle from the scene. The photograph is placed into

So we have been talking about 3D viewing, the transformations pertaining to 3D viewing. Today we will continue on it. (Refer Slide Time: 1:15)

Building Models. CS 537 Interactive Computer Graphics Prof. David E. Breen Department of Computer Science

Renderer Implementation: Basics and Clipping. Overview. Preliminaries. David Carr Virtual Environments, Fundamentals Spring 2005

3D Viewing. With acknowledge to: Ed Angel. Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico

CS452/552; EE465/505. Clipping & Scan Conversion

Rendering. Converting a 3D scene to a 2D image. Camera. Light. Rendering. View Plane

Models and The Viewing Pipeline. Jian Huang CS456

The Traditional Graphics Pipeline

Pipeline Operations. CS 4620 Lecture 10

Projections. Brian Curless CSE 457 Spring Reading. Shrinking the pinhole. The pinhole camera. Required:

SE Mock Online Retest 2-CG * Required

Fundamental Types of Viewing

The Traditional Graphics Pipeline

Computer Graphics. - Rasterization - Philipp Slusallek

Computer Graphics. Bing-Yu Chen National Taiwan University The University of Tokyo

From 3D World to 2D Screen. Hendrik Speleers

Hidden Surface Removal

COMP Computer Graphics and Image Processing. a6: Projections. In part 2 of our study of Viewing, we ll look at. COMP27112 Toby Howard

COMP371 COMPUTER GRAPHICS

Fall CSCI 420: Computer Graphics. 7.1 Rasterization. Hao Li.

Identifying those parts of a scene that are visible from a chosen viewing position, and only process (scan convert) those parts

Computing Visibility. Backface Culling for General Visibility. One More Trick with Planes. BSP Trees Ray Casting Depth Buffering Quiz

Reading. 18. Projections and Z-buffers. Required: Watt, Section , 6.3, 6.6 (esp. intro and subsections 1, 4, and 8 10), Further reading:

Graphics and Interaction Rendering pipeline & object modelling

Aptitude Test Question

MET71 COMPUTER AIDED DESIGN

CEng 477 Introduction to Computer Graphics Fall 2007

Computer Science 426 Midterm 3/11/04, 1:30PM-2:50PM

Rasterization Computer Graphics I Lecture 14. Scan Conversion Antialiasing Compositing [Angel, Ch , ]

Computer Graphics Viewing

Computer Graphics Solved MCQs -Part 2 MCQs Questions

Topics. From vertices to fragments

Computer Graphics. P05 Viewing in 3D. Part 1. Aleksandra Pizurica Ghent University

CS452/552; EE465/505. Models & Viewing

Computer Graphics (CS 543) Lecture 9 (Part 2): Clipping. Prof Emmanuel Agu. Computer Science Dept. Worcester Polytechnic Institute (WPI)

CSCI 420 Computer Graphics Lecture 14. Rasterization. Scan Conversion Antialiasing [Angel Ch. 6] Jernej Barbic University of Southern California

RASTERISED RENDERING

Computer Graphics. Bing-Yu Chen National Taiwan University

CS184 : Foundations of Computer Graphics Professor David Forsyth Final Examination

Viewing. Reading: Angel Ch.5

Rasterization. Rasterization (scan conversion) Digital Differential Analyzer (DDA) Rasterizing a line. Digital Differential Analyzer (DDA)

Pipeline Operations. CS 4620 Lecture Steve Marschner. Cornell CS4620 Spring 2018 Lecture 11

Topic #1: Rasterization (Scan Conversion)

Shadows in the graphics pipeline

Lecture 4. Viewing, Projection and Viewport Transformations

CS602- Computer Graphics Solved MCQS From Midterm Papers. MIDTERM EXAMINATION Spring 2013 CS602- Computer Graphics

Werner Purgathofer

VISIBILITY & CULLING. Don t draw what you can t see. Thomas Larsson, Afshin Ameri DVA338, Spring 2018, MDH

Topics and things to know about them:

Introduction to Visualization and Computer Graphics

CS184 : Foundations of Computer Graphics Professor David Forsyth Final Examination (Total: 100 marks)

Hidden surface removal. Computer Graphics

Clipping & Culling. Lecture 11 Spring Trivial Rejection Outcode Clipping Plane-at-a-time Clipping Backface Culling

CSE528 Computer Graphics: Theory, Algorithms, and Applications

From Vertices To Fragments-1

COMP30019 Graphics and Interaction Perspective & Polygonal Geometry

Pipeline Operations. CS 4620 Lecture 14

Clipping. Angel and Shreiner: Interactive Computer Graphics 7E Addison-Wesley 2015

CSE328 Fundamentals of Computer Graphics

The Graphics Pipeline. Interactive Computer Graphics. The Graphics Pipeline. The Graphics Pipeline. The Graphics Pipeline: Clipping

Interactive Computer Graphics A TOP-DOWN APPROACH WITH SHADER-BASED OPENGL

Computer Graphics Shadow Algorithms

COMP30019 Graphics and Interaction Perspective Geometry

3D Rendering Pipeline (for direct illumination)

Realtime 3D Computer Graphics Virtual Reality

Rasterization. MIT EECS Frédo Durand and Barb Cutler. MIT EECS 6.837, Cutler and Durand 1

Computer Graphics. Lecture 9 Hidden Surface Removal. Taku Komura

CSE528 Computer Graphics: Theory, Algorithms, and Applications

3D Viewing. CS 4620 Lecture 8

Page 1. Area-Subdivision Algorithms z-buffer Algorithm List Priority Algorithms BSP (Binary Space Partitioning Tree) Scan-line Algorithms

Fondamenti di Grafica 3D The Rasterization Pipeline.

Hidden-Surface Removal.

5.8.3 Oblique Projections

Chapter 8: Implementation- Clipping and Rasterization

Transcription:

Chapter 4-3D Camera & Optimizations, Rasterization Classical Viewing Taxonomy 3D Camera Model Optimizations for the Camera How to Deal with Occlusion Rasterization Clipping Drawing lines Filling areas Partially based on material from: E. Angel and D. Shreiner : Interactive Computer Graphics. 6th ed, Addison-Wesley 2012 1

Classical Views of 3D Scenes As used in arts, architecture, and engineering Traditional terminology has emerged Varying support by 3D graphics SW and HW Assumptions: Objects constructed from flat faces (polygons) Projection surface is a flat plane Nonplanar projections also exist in special cases http://www.semioticon.com/seo/p/images/perspective_1.jpg General situation: Scene consisting of 3D objects Viewer with defined position and projection surface Projectors (Projektionsstrahlen) are lines going from objects to the projection surface Main classification: Parallel projectors or converging projectors http://www.techpin.com/2008/08/page/18/ 2

Taxonomy of Views planar geometric projections parallel perspective multiview axonometric orthographic 1 point 2 point 3 point oblique isometric dimetric trimetric Angel 2012 3

Orthographic Projection Projectors are orthogonal to the projection plane In the pure case, projection plane is parallel to a coordinate plane top/front/side view Often used as a multi-view combination together with overview (e.g. isometric view) Angel 2012 Advantage: No distortions Can be used for measurements http://www.9jcg.com/tutorials/panzar_studio/teapot_monster_part1.jpg 4

Axonometric Projections Using orthographic projection, but with arbitrary placement of projection plane Classification of special cases: Look at a corner of a projected cube How many angles are identical? None: trimetric Two: dimetric Three: isometric Advantage: Preserves lines Somehow realistic Disadvantage: Angles not preserved 1 Angel 2012 2 3 5

Optical Illusions in Isometric Projections Source: Wikipedia 6

Oblique Projection (Schiefe Parallelprojektion) Projectors are not orthogonal to projection plane Angel 2012 Usually projection plane parallel to one coordinate plane Traditional subclasses: Cavalier perspective Constant angle (30 /45 ) between direction of projectors (dop) and projection plane No foreshortening Cabinet perspective Constant angle (30 /45 /63.4 ) between dop and projection plane Foreshortening (Verkürzung) (of depth) by factor 0.5 Wikipedia 7

Perspective Projection (Perspektivische Projektion) Projectors converge at center of projection (cop) Parallel lines (not parallel to projection plane) appear to converge in a vanishing point (Fluchtpunkt) Advantage: very realistic Disadvantage: non-uniform foreshortening only few angles preserved 8

Number of Vanishing Points in Perspective Projection One point Two points Three points http://mathworld.wolfram.com/perspective.html 9

How to Realize Projection in Three.js? Parallel / Orthographic projections: var camera=new THREE.OrthographicCamera(w/-2, w/2, h/2, h/-2, 1, 1000); scene.add(camera); Perspective projections: var camera=new THREE.PerspectiveCamera(45, w/h, 1, 1000 ); scene.add(camera); 10

Chapter 4-3D Camera & Optimizations, Rasterization Classical Viewing Taxonomy 3D Camera Model Optimizations for the Camera How to Deal with Occlusion Rasterization Clipping Drawing lines Filling areas 11

The 3D rendering pipeline (our version for this class) 3D models in model coordinates 3D models in world coordinates 2D Polygons in camera coordinates Pixels in image coordinates Scene graph Camera Rasterization Animation, Interaction Lights 12

Perspective Projection and Photography In photography, we usually have the center of projection (cop) between the object and the image plane Image on film/sensor is upside down In CG perspective projection, the image plane is in front of the camera COP COP d Photography CG Perspective Projection 13

The mathematical camera model for perspective proj. The Camera looks along the negative Z axis Image plane at z = -1 2D image coordinates 1 < x < 1, 1 < y < 1 Two steps projection matrix perspective division Y-Achse Z-Achse (0,0,0) X-Achse (0,1/2) (0,1,-2) 14

Projection Matrix (one possibility) X and Y remain unchanged Z is preserved as well 4th (homogeneous) coordinate w = 1 Transformation from world coordinates into view coordinates This means that this is not a regular 3D point otherwise the 4th component w would be = 1 View coordinates are helpful for culling (see later) 15

Perspective Division Divide each point by its 4th coordinate w Transformation from view coordinates into image coordinates since w = -z and we are looking along the negative Z axis, we are dividing by a positive value hence the sign of X and Y remain unchanged points further away (larger absolute Z value) will have smaller x and y this means that distant things are smaller points on the optical axis will remain in the middle of the image 16

Controlling the Camera Y-Achse (0,1,-2) (0,1/2) Z-Achse So far we can only look along negative Z X-Achse (0,0,0) Other camera positions and orientations: Let C be the transformation matrix that describes the camera s position and orientation in world coordinates C is composed from a translation and a rotation, hence can be inverted transform the entire world by C -1 and apply the camera we know ;-) Other camera view angles? If we adjust this coefficient scaling factor will be different larger abs value means angle. could also be done in the division step 17

From image to screen coordinates Camera takes us from world via view to image coordinates -1 < ximage < 1, -1 < yimage < 1 In order to display an image we need to go to screen coordinates assume we render an image of size (w,h) at position (xmin, ymin) then xscreen = xmin + w(1+ximage)/2, yscreen = ymin + h(1-yimage)/2 1 (xmin,ymin) -1-1 1 h w 18

Chapter 4-3D Camera & Optimizations, Rasterization Classical Viewing Taxonomy 3D Camera Model Optimizations for the Camera How to Deal with Occlusion Rasterization Clipping Drawing lines Filling areas 19

Optimizations in the camera: Culling view frustum culling back face culling occlusion culling http://en.wikipedia.org/wiki/file:at_the_drafting_race_from_the_powerhouse_museum_collection.jpg 20

View Frustum Culling Goal: Just render objects within the viewing volume (aka view frustum) Need an easy test for this... Z-Axis: between 2 clipping planes vordere Schnittebene 1 3 hintere Schnittebene znear > zview > zfar (remember: negative z) X- and Y-Axis: inside the viewing cone 2 -wview < xview < wview -hview < yview < hview Two simple comparisons for each axis 21

Octrees Speed up View Frustum Culling Naive frustum culling needs O(n) tests where n = number of objects Divide entire space into 8 cubes see which objects are inside each Subdivide each cube again Repeat recursively until cube contains less than k objects Instead of culling objects, cull cubes Needs O(log n) tests http://en.wikipedia.org/wiki/file:octree2.svg 22

http://www.physics.uoguelph.ca/tutorials/vectors/31.gif Back-face Culling Idea: polygons on the back side of objects don t need to be drawn Polygons on the back side of objects face backwards Use the Polygon normal to check for orientation normals are often stored in face mesh structure, otherwise can be computed as cross product of 2 triangle edges normal faces backwards if angle with optical axis is < 90 (i.e. scalar product is > 0) 23

Occlusion Culling Idea: objects that are hidden behind others don t need to be drawn efficient algorithm using an occlusion buffer, similar to a Z-buffer 24

Chapter 4-3D Camera & Optimizations, Rasterization Classical Viewing Taxonomy 3D Camera Model Optimizations for the Camera How to Deal with Occlusion Rasterization Clipping Drawing lines Filling areas 25

Occlusion: The problem space in general Need to determine which objects occlude which others want to draw only the frontmost (parts of) objects Culling worked at the object level, now look at the polygons More general: draw the frontmost polygons..or maybe parts of polygons? Occlusion is an important depth cue for humans need to get this really correct 26

Occlusion: simple solution: depth-sort Regularly used in 2D vector graphics Sort polygons according to their z position in view coordinates Draw all polygons from back to front Back polygons will be overdrawn http://view.stern.de/de/original/1732381/windrad-gozo-malta-windbrunnen-windrad-blau-technik--verkehr.jpg Front polygons will remain visible Problem 1: self-occlusion not a problem with triangles ;-) Problem 2: circular occlusion think of a pin wheel http://commons.wikimedia.org/wiki/file:green_pinwheel.jpg 27

Occlusion: better solution: Z-Buffer Idea: compute depth not per polygon, but per pixel Approach: for each pixel of the rendered image (frame buffer) keep also a depth value (Z-buffer) Initialize the Z-buffer with zfar which is the far clipping plane and hence the furthest distance we need to care about loop over all polygons Determine which pixels are filled by the polygon for each pixel compute the z value (depth) at that position if z > value stored in Z-buffer (remember: negative Z) draw the pixel in the image set Z-buffer value to z http://de.wikipedia.org/w/index.php?title=datei:z-buffer.svg 28

Z-Buffer Example 29

Z-Buffer: Tips and Tricks Z-Buffer normally built into graphics hardware Limited precision (e.g., 16 bit) potential problems with large models set clipping planes wisely never have 2 polygons in the exact same place otherwise typical errors (striped objects) http://www.youtube.com/watch?v=togp1j9iuce Z-Buffer can be initialized partially to something else than xfar at pixels initialized to xnear no polygons will be drawn use to cut out holes in objects then rerender objects you want to see through these holes 30

Chapter 4-3D Camera & Optimizations, Rasterization Classical Viewing Taxonomy 3D Camera Model Optimizations for the Camera How to Deal with Occlusion Rasterization Clipping Drawing lines Filling areas 31

The 3D rendering pipeline (our version for this class) 3D models in model coordinates 3D models in world coordinates 2D Polygons in camera coordinates Pixels in image coordinates Scene graph Camera Rasterization Animation, Interaction Lights 32

Rasterization: The Problems Clipping: Before we draw a polygon, we need to make sure it is completely inside the image if it already is: OK if it is completely outside: even better ;-) if it intersects the image border: need to do clipping Drawing lines: How do we convert all those polygon edges into lines of pixels? Filling areas: How do we determine which screen pixels belong to the area of a polygon? Part of this will be needed again towards the end of the semester in the shading/rendering chapter http://iloveshaders.blogspot.de/2011/05/how-rasterization-process-works.html 33

Clipping (Cohen & Sutherland) Clip lines against a rectangle For end points P and Q of a line determine a 4 bit code each 10xx = point is above rectangle 01xx = point is below rectangle xx01 = point is left of rectangle xx10 = point is right of rectangle easy to do with simple comparisons 1001 1000 1010 B D E 0001 0000 0010 A C 0101 0100 0110 Now do a simple distinction of cases: P OR Q = 0000: line is completely inside: draw as is (Example A) P AND Q = 0000: line lies completely on one side of rectangle: skip (Example B) P = 0000: intersect line with all reachable rectangle borders (Ex. C+D+E) if intersection point exists, split line accordingly Q = 0000: intersect line with all reachable rectangle borders (Ex. C+D+E) if intersection point exists, split line accordingly 34

Drawing a Line: Naïve Approach Line from (x1,y1) to (x2, y2), Set dx := x2 - x1, dy := y2 - y1, m := dy/dx Assume x2 > x1, otherwise switch endpoints Assume -1 < m < 1, otherwise exchange x and y For x from 0 to dx do: setpixel (x1 + x, y1 + m * x) od; In each step: 1 float multiplication 1 round to integer (0,0) Y-Achse X-Achse top figure from http://de.wikipedia.org/w/index.php?title=datei:line_drawing_symmetry.svg 35

Drawing a line: Bresenham s Algorithm Idea: go in incremental steps Accumulate error to ideal line go one pixel up if error beyond a limit Uses only integer arithmetic In each step: 2 comparisons 3 or 4 additions http://de.wikipedia.org/w/index.php?title=datei:bresenham_decision_variable.svg dx := x2-x1; dy := y2-y1; d := 2*dy dx; DO := 2*dy; dno := 2*(dy - dx); x := x1; y := y1; setpixel (x,y); fehler := d; WHILE x < x2 x := x + 1; IF fehler <= 0 THEN ELSE fehler := fehler + DO y := y + 1; fehler = fehler + dno END IF; setpixel (x,y); END WHILE 36

Antialiased Lines Problem: Bresenham s lines contain visible steps (aliasing effects) Opportunity: we can often display greyscale Idea: use different shades of grey as different visual weights instead of filling half a pixel with black, fill entire pixel with 50% grey Different algorithms exist Gupta-Sproull for 1 pixel wide lines Wu for infinitely thin lines (0,0) (0,0) Y-Achse X-Achse X-Achse Y-Achse 37

http://de.wikipedia.org/w/index.php?title=datei:wu_line_drawing.svg Wu s Antialiasing Approach Loop over all x values Determine 2 pixels closest to ideal line slightly above and below Depending on distance, choose grey values one is perfectly on line: 100% and 0% equal distance: 50% and 50% Set these 2 pixels (0,0) X-Achse Y-Achse 38

Antialiasing in General Problem: hard edges in computer graphics Correspond to infinitely high spatial frequency Violate sampling theorem (Nyquist, Shannon) reread 1st lecture Digitale Medien Most general technique: Supersampling Idea: render an image at a higher resolution this way, effectively sample at a higher resolution scale it down to intended size interpolate pixel values this way, effectively use a low pass filter http://de.wikipedia.org/w/index.php?title=datei:easteregg_anti-aliasing.png 39

Line Drawing: Summary With culling and clipping, we made sure all lines are inside the image With algorithms so far we can draw lines in the image even antialiased lines directly This means we can draw arbitrary polygons now (in black and white) All algorithms extend to color just modify the setpixel (x,y) implementation choice of color not always obvious (think through) how about transparency? All these algorithms implemented in hardware Other algorithms exist for curved lines mostly relevant for 2D graphics http://en.wikipedia.org/wiki/file:bresenham_circle.svg 40

Filling a Polygon: Scan Line Algorithm Define parity of a point in 2D: send a ray from this point to infinity direction irrelevant () count number of lines it crosses if 0 or even: even parity (outside) if odd: odd parity (inside) Determine polygon area (xmin, xmax, ymin, ymax) Scan the polygon area line by line Within each line, scan pixels from left to right start with parity = 0 (even) switch parity each time we cross a line set all pixels with odd parity (0,0) Y-Achse X-Achse 41

Rasterization Summary Now we can draw lines and fill polygons All algorithms also generalize to color Ho do we determine the shade of color? this is called shading and will be discussed in the rendering section 42