CMSC427 Transformations II: Viewing. Credit: some slides from Dr. Zwicker

Similar documents
Today. Rendering pipeline. Rendering pipeline. Object vs. Image order. Rendering engine Rendering engine (jtrt) Computergrafik. Rendering pipeline

CSE 167: Lecture #4: Vertex Transformation. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012

CSE 167: Introduction to Computer Graphics Lecture #4: Vertex Transformation

CSE 167: Introduction to Computer Graphics Lecture #5: Projection. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2017

Projection and viewing. Computer Graphics CSE 167 Lecture 4

CSE 167: Introduction to Computer Graphics Lecture #3: Projection. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2016

CSE 167: Introduction to Computer Graphics Lecture #3: Projection. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2013

CSE 167: Introduction to Computer Graphics Lecture #3: Coordinate Systems

CSE528 Computer Graphics: Theory, Algorithms, and Applications

CSE328 Fundamentals of Computer Graphics

Today. Today. Introduction. Matrices. Matrices. Computergrafik. Transformations & matrices Introduction Matrices

Rasterization Overview

Models and The Viewing Pipeline. Jian Huang CS456

Notes on Assignment. Notes on Assignment. Notes on Assignment. Notes on Assignment

Overview. By end of the week:

Lecture 3 Sections 2.2, 4.4. Mon, Aug 31, 2009

Lecture 4. Viewing, Projection and Viewport Transformations

The Graphics Pipeline and OpenGL I: Transformations!

3D Viewing. CS 4620 Lecture 8

Drawing in 3D (viewing, projection, and the rest of the pipeline)

Drawing in 3D (viewing, projection, and the rest of the pipeline)

For each question, indicate whether the statement is true or false by circling T or F, respectively.

C P S C 314 S H A D E R S, O P E N G L, & J S RENDERING PIPELINE. Mikhail Bessmeltsev

3D Viewing. CS 4620 Lecture Steve Marschner. Cornell CS4620 Spring 2018 Lecture 9

Game Architecture. 2/19/16: Rasterization

Geometry: Outline. Projections. Orthographic Perspective

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

Drawing in 3D (viewing, projection, and the rest of the pipeline)

Perspective transformations

CS451Real-time Rendering Pipeline

Graphics pipeline and transformations. Composition of transformations

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

Shaders. Slide credit to Prof. Zwicker

CS 4204 Computer Graphics

OpenGL Transformations

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

CS230 : Computer Graphics Lecture 6: Viewing Transformations. Tamar Shinar Computer Science & Engineering UC Riverside

Three-Dimensional Viewing Hearn & Baker Chapter 7

COMP3421. Introduction to 3D Graphics

Culling. Computer Graphics CSE 167 Lecture 12

CS464 Oct 3 rd Assignment 3 Due 10/6/2017 Due 10/8/2017 Implementation Outline

Motivation. What we ve seen so far. Demo (Projection Tutorial) Outline. Projections. Foundations of Computer Graphics

CS 4620 Program 3: Pipeline

Viewing. Reading: Angel Ch.5

The Graphics Pipeline and OpenGL I: Transformations!

Advanced Lighting Techniques Due: Monday November 2 at 10pm

Prof. Feng Liu. Fall /19/2016

Projection Matrix Tricks. Eric Lengyel

Viewing with Computers (OpenGL)

Rendering Objects. Need to transform all geometry then

COMP3421. Introduction to 3D Graphics

Virtual Cameras and The Transformation Pipeline

Lecture 5: Transforms II. Computer Graphics and Imaging UC Berkeley CS184/284A

Viewing. Announcements. A Note About Transformations. Orthographic and Perspective Projection Implementation Vanishing Points

Computer Graphics 7: Viewing in 3-D

COMP3421. Introduction to 3D Graphics

CSE452 Computer Graphics

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

Transformation Pipeline

To Do. Demo (Projection Tutorial) Motivation. What we ve seen so far. Outline. Foundations of Computer Graphics (Fall 2012) CS 184, Lecture 5: Viewing

The Importance of Matrices in the DirectX API. by adding support in the programming language for frequently used calculations.

Viewing COMPSCI 464. Image Credits: Encarta and

INTRODUCTION TO COMPUTER GRAPHICS. It looks like a matrix Sort of. Viewing III. Projection in Practice. Bin Sheng 10/11/ / 52

CHAPTER 1 Graphics Systems and Models 3

3D Graphics for Game Programming (J. Han) Chapter II Vertex Processing

Computer Graphics with OpenGL ES (J. Han) Chapter VII Rasterizer

CS 130 Final. Fall 2015

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

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

Today. Rendering algorithms. Rendering algorithms. Images. Images. Rendering Algorithms. Course overview Organization Introduction to ray tracing

Computer graphics 2: Graduate seminar in computational aesthetics

CS 112 The Rendering Pipeline. Slide 1

To Do. Motivation. Demo (Projection Tutorial) What we ve seen so far. Computer Graphics. Summary: The Whole Viewing Pipeline

2D/3D Geometric Transformations and Scene Graphs

CS 130 Exam I. Fall 2015

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

Ulf Assarsson Department of Computer Engineering Chalmers University of Technology

CSE 167: Lecture #5: Rasterization. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012

CMSC427 Final Practice v2 Fall 2017

Graphics Pipeline 2D Geometric Transformations

INTRODUCTION TO COMPUTER GRAPHICS. cs123. It looks like a matrix Sort of. Viewing III. Projection in Practice 1 / 52

CSE 167: Introduction to Computer Graphics Lecture #5: Rasterization. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2015

CS602 Midterm Subjective Solved with Reference By WELL WISHER (Aqua Leo)

1 OpenGL - column vectors (column-major ordering)

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

Ray Tracer I: Ray Casting Due date: 12:00pm December 3, 2001

Ray Tracer Due date: April 27, 2011

TSBK03 Screen-Space Ambient Occlusion

CSE 167: Introduction to Computer Graphics Lecture #9: Visibility. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2018

Computer Vision CS 776 Fall 2018

1 Transformations. Chapter 1. Transformations. Department of Computer Science and Engineering 1-1

CSE 167: Introduction to Computer Graphics Lecture #4: Coordinate Systems

Today. Rendering algorithms. Rendering algorithms. Images. Images. Rendering Algorithms. Course overview Organization Introduction to ray tracing

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

Viewing and Projection

Computer Graphics. Chapter 10 Three-Dimensional Viewing

lecture 18 - ray tracing - environment mapping - refraction

Overview of Projections: From a 3D world to a 2D screen.

Lecture 4 of 41. Lab 1a: OpenGL Basics

The Rendering Pipeline (1)

Transcription:

CMSC427 Transformations II: Viewing Credit: some slides from Dr. Zwicker

What next? GIVEN THE TOOLS OF The standard rigid and affine transformations Their representation with matrices and homogeneous coordinates WHAT CAN WE DO WITH THESE TOOLS? Modeling how can we define transformations we want? Viewing how can we use these tools to render objects like polygonal meshes?

Review: modeling with transformations Object space World space Create scene by transforming objects from object to world Object coordinate space World coordinate space

Modeling Shape object Size, reshape Place object Position and orientation // Processing example size(200,200,p3d); translate(width/2,height/2,0); rotatey(pi/4); rotatex(pi/4); box(50);

Transformations in Processing (OpenGL 1.0 and 2.0 style) Transforms applymatrix() popmatrix() printmatrix() pushmatrix() resetmatrix() rotate() rotatex() rotatey() rotatez() scale() shearx() sheary() translate() Camera begincamera() camera() endcamera() frustum() ortho() perspective() Tracing printmatrix() printcamera() printprojection() Routines not in OpenGL 3.0/4.0 but in many utility libraries

Observation 1: Parametric transformations Instead of Use for (int t=0; t < 2*PI; t += 0.1) { float x = cx+ r*cos(t); float y = cy+ r*sin(t); ellipse(x,y,10,10); } for (int t=0; t < 2*PI; t += 0.1) { float x = cx+ r*cos(t); float y = cy+ r*sin(t); translate(x,y); // Or more complexobject(); } Why? Simplify the code for the object, enable complex transformations. Mesh not need understand transformations

Observation 1: Problem! Transforms can accumulate translate(5,5); translate(10,50); Result: (15,15) for (int t=0; t < 2*PI; t += 0.1) { float x = cx+ r*cos(t); float y = cy+ r*sin(t); pushmatrix(); translate(x,y); // Or more popmatrix(); complexobject(); } pushmatrix() preserves existing matrix, popmatrix() restores

Observation II: Experimenting with 3D transforms Get to know transformations by experimentation Processing good for this // Basic code size(400,400,p3d); translate(width/2,height/2,0); rotatez(pi/4); box(100); Try translate scale shearx, sheary rotatex,rotatey,rotatez Understand Direction of x, y, z Direction of rotations

Observation II: Problem (Processing scales outline stroke) More elegant code scale(50); box(1); But we get this picture????????? strokeweight is scaled So box(50) it is.

Observation 3: Tracing matrix Can print current transformation matrix to debug size(400,400,p3d); translate(width/2,height/2,0); rotatez(pi/4); printmatrix(); box(50); Why -346? Where camera is. Viewing from +346 in Z 000.7071-000.7071 000.0000 000.0000 000.7071 000.7071 000.0000 000.0000 000.0000 000.0000 001.0000-346.4102 000.0000 000.0000 000.0000 001.0000

Experiments! Translate with positive and negative X,Y,Z Figure out the coordinate system Rotate around X, Y, Z in different orders Scale non-uniformly in X,Y,Z Change order of scale, rotate, translate Try a shear

Transformations and animations float theta = 0; void setup(){ size(400,400,p3d); fill(255,0,255); } void draw(){ background(255); translate(width/2,height/2,0); rotatez(theta); rotatex(theta); rotatez(theta); box(100); theta += 0.01; }

Orbiting box? How animate box rotating around its center as it s orbiting the center of the sketch?

Viewing transformations: the virtual camera Need to know Where is the camera? What lens does it have? Camera coordinates World coordinates Object coordinates 14

Viewing transformations: the virtual camera Need to know Where is the camera? CAMERA TRANSFORM What lens does it have? PROJECTIVE TRANSFORM Camera coordinates World coordinates Object coordinates 15

Virtual camera routines in Processing Camera (where) begincamera() camera() endcamera() Camera coordinates Object coordinates Projective (length of lens) frustum() ortho() perspective() World coordinates Tracing printcamera() printprojection() 16

Camera routine in Processing void setup() { size(640, 360, P3D); } void draw() { background(0); camera(width/2, height/2, (height/2) / tan(pi/6), width/2, height/2, 0, 0, 1, 0); } translate(width/2, height/2, -100); stroke(255); nofill(); box(200);

Common coordinate systems Camera, world, and object coordinates Matrices for change of coordinates C, M Camera coordinates Object coordinates World coordinates

Object coordinates Coordinates the object is defined with Often origin is in middle, base, or corner of object No right answer, whatever was convenient for the creator of the object Camera coordinates Object coordinates World coordinates 19

World coordinates World space Common reference frame for all objects in the scene Chosen for convenience, no right answer If there is a ground plane, usually x-y is horizontal and z points up Camera coordinates Object coordinates World coordinates 20

Camera coordinate system Camera space Origin defines center of projection of camera Common convention in 3D graphics x-y plane is parallel to image plane z-axis is perpendicular to image plane Camera coordinates Object coordinates World coordinates 21

Camera coordinate system Camera matrix defines transformation from camera to world coordinates Placement of camera in world Transformation from object to camera coordinates Camera coordinates Object coordinates World coordinates 22

Camera matrix Construct from center of projection, look at, upvector (given in world coords.) Camera coordinates World coordinates 23

Camera matrix Construct from center of projection, look at, up-vector (given in world coords.) Camera coordinates World coordinates 24

Camera matrix z-axis x-axis y-axis 25

Camera matrix z-axis x-axis y-axis 26

Camera matrix Camera to world transformation Think about: What does it mean to compute 27

Change of coordinates Coordinates of xyzo frame w.r.t. uvwq frame 28

Change of coordinates Same point p in 3D, expressed in new uvwq frame 29

Change of coordinates 30

Change of coordinates Given coordinates of basis xyzo with respect to new frame uvwq Coordinates of any point with respect to new frame uvwq are Matrix contains old basis vectors (x,y,z,o) in new coordinates (u,v,w,q) 31

Change of coordinates Inverse transformation Given point w.r.t. frame Want coordinates w.r.t. frame 32

Object, world, camera coords. Camera coordinates Object coordinates World coordinates 33

Objects in camera coordinates We have things lined up the way we like them on screen x to the right y up -z going into the screen Objects to look at are in front of us, i.e. have negative z values But objects are still in 3D Today: how to project them into 2D Camera coordinates 34

Projections Given 3D points (vertices) in camera coordinates, determine corresponding 2D image coordinates Orthographic projection Simply ignore z-coordinate Use camera space xy coordinates as image coordinates What we want, or not? 35

Orthographic projection Project points to x-y plane along parallel lines Graphical illustrations, architecture 36

Perspective projection Most common for computer graphics Simplified model of human eye, or camera lens (pinhole camera) Things farther away seem smaller Discovery/description attributed to Filippo Brunelleschi, early 1400 s http://en.wikipedia.org/wiki/pinhole_camera Projection plane behind center of projection, flipped image 37

Perspective projection Project along rays that converge in center of projection 3D scene 2D image plane (in front of center of projection, as typical in 3D graphics) Center of projection 38

Perspective projection Parallel lines no longer parallel, converge at one point Earliest example La Trinitá (1427) by Masaccio http://en.wikipedia.org/wiki/holy_trinity_(masaccio) 39

Perspective projection The math: simplified case Center of projection Image plane 40

Perspective projection The math: simplified case Center of projection Image plane Can express this using homogeneous coordinates, 4x4 matrices 41

Perspective projection The math: simplified case Projection matrix Homogeneous coord.!= 1! Homogeneous division 42

Perspective projection Projection matrix Homogeneous division Using projection matrix and homogeneous division seems more complicated than just multiplying all coordinates by d/z, so why do it? Will allow us to handle different types of projections in a unified way define arbitrary view volumes 43

Intuitive example All points that lie on one projection line (i.e., a "line-of-sight", intersecting with center of projection of camera) are projected onto same image point All 3D points on one projection line are equivalent Projection lines form 2D projective space, or 2D projective plane 44

3D Projective space Projective space P 3 represented using R 4 and homogeneous coordinates Each point along 4D ray is equivalent to same 3D point at w=1 equivalent 1D vector subspace, arbitrary scalar value l Equivalent element, for any l 45

3D Projective space Projective mapping (transformation): any non-singular linear mapping on homogeneous coordinates, for example, Generalization of affine mappings 4th row of matrix is arbitrary (not restricted to [0 0 0 1]) Projective mappings arecollineations http://en.wikipedia.org/wiki/projective_linear_transformation http://en.wikipedia.org/wiki/collineation Preserve straight lines, but not parallel lines Much more theory http://www.math.toronto.edu/mathnet/questioncorner/projective.html http://en.wikipedia.org/wiki/projective_space 46

Projective space Projective space http://en.wikipedia.org/wiki/projective_space [xyzw] homogeneous coordinates includes points at infinity (w=0) projective mappings (perspective projection) Vector space [xyz] coordinates represents vectors linear mappings (rotation around origin, scaling, shear) Affine space [xyz1], [xyz0] homogeneous coords. distinguishes points and vectors affine mappings (translation) 47

In practice Use 4x4 homogeneous matrices like other 4x4 matrices Modeling & viewing transformations are affine mappings points keep w=1 no need to divide by w when doing modeling operations or transforming into camera space 3D-to-2D projection is a projective transform Resulting w coordinate not always 1 Divide by w (perspective division, homogeneous division) after multiplying with projection matrix OpenGL rendering pipeline (graphics hardware) does this automatically Scene data Vertex processing, modeling and viewing transformation Projection Rasterization, fragment processing, visibility Image 48

Today Rendering pipeline Projections View volumes, clipping Viewport transformation 49

View volumes View volume is 3D volume seen by camera Perspective view volume Camera coordinates Orthographic view volume Camera coordinates World coordinates World coordinates 50

Perspective view volume General view volume Camera coordinates Defined by 6 parameters, in camera coordinates Left, right, top, bottom boundaries Near, far clipping planes Clipping planes to avoid numerical problems Divide by zero Low precision for distant objects Often symmetric, i.e., left=-right, top=-bottom 51

Perspective view volume Symmetric view volume y y=top FOV -z z=-near Only 4 parameters Vertical field of view (FOV) Image aspect ratio (width/height) Near, far clipping planes z=-far aspect ratio= tan(fov / 2) = top near right - left top - bottom = right top 52

Orthographic view volume Camera coordinates Parametrized by 6 parameters Right, left, top, bottom, near, far If symmetric Width, height, near, far 53

Clipping Need to identify objects outside view volume Avoid division by zero Efficiency, don t draw objects outside view volume Performed by OpenGL rendering pipeline Clipping always to canonic view volume Cube [-1..1]x[-1..1]x[-1..1] centered at origin Need to transform desired view frustum to canonic view frustum 54

Clipping Primitives Vertex processing, modeling and viewing transformation Projection Rasterization, (shading, visibility Clip to view frustum Image 55

Canonic view volume Projection matrix is set such that User defined view volume is transformed into canonic view volume, i.e., unit cube [-1,1]x[-1,1]x[-1,1] Multiplying vertices of view volume by projection matrix and performing homogeneous divide yields canonic view volume, i.e., cube [-1,1]x[-1,1]x[-1,1] Perspective and orthographic projection are treated exactly the same way 56

Projection matrix Camera coordinates Projection matrix Canonic view volume Viewport transformation (later) 57

Perspective projection matrix General view frustum Camera coordinates 58

Perspective projection matrix Compare to simple projection matrix from before Simple projection General view frustum 59

Perspective projection matrix Symmetric view frustum with field of view, aspect ratio, near and far clip planes Camera coordinates y y=top FOV z=-near -z z=-far é 1 ù ê 0 0 0 aspect tan(fov / 2) ú ê ú ê 1 ú 0 0 0 P persp (FOV,aspect,near, far) = ê tan(fov / 2) ú ê ú ê near + far 2 near far ú ê 0 0 near - far near - far ú ê ú ëê 0 0-1 0 ûú 60

Orthographic projection matrix Camera coordinates é 2 right + left ù ê 0 0 - right - left right - left ú ê ú ê 2 top + bottom ú 0 0 - P ortho (right,left,top,bottom,near, far) = ê top - bottom top - bottom ú ê ú ê 2 far + near ú ê 0 0 far - near far - near ú ê ú ëê 0 0 0 1 ûú é 2 ù ê 0 0 0 width 2 0 0 0 P ortho (width,height,near, far) = height ê ê ê ê ê ê ê ë 0 0 2 far - near far + near far - near 0 0 0 1 ú ú ú ú ú ú ú ú û w = 1 after mult. with orthographic projection matrix 61

Today Rendering pipeline Projections View volumes Viewport transformation 62

Viewport transformation After applying projection matrix, image points are in normalized view coordinates Per definition range [-1..1] x [-1..1] Map points to image (i.e., pixel) coordinates User defined range [x0 x1] x [y0 y1] E.g., position of rendering window on screen y1 y0 x0 x1 Rendering window Screen 63

Viewport transformation Scale and translation D( x 0, x 1, y 0, y 1 )= é( x 1 - x 0 ) 2 0 0 x 0 + x 1 ê ê 0 ( y 1 - y 0 ) 2 0 y 0 + y 1 ê 0 0 1 2 1 2 ê ë 0 0 0 1 ( ) 2 ( ) 2 ù ú ú ú ú û 1 D y1-1 -1 x1 Normalized device coordinates y0 x0 x1 Rendering window Screen 64

The complete transform Mapping a 3D point in object coordinates to pixel coordinates Object-to-world matrix M, camera matrix C, projection matrix C, viewport matrix D Object space 65

The complete transform Mapping a 3D point in object coordinates to pixel coordinates Object-to-world matrix M, camera matrix C, projection matrix C, viewport matrix D Object space World space 66

The complete transform Mapping a 3D point in object coordinates to pixel coordinates Object-to-world matrix M, camera matrix C, projection matrix C, viewport matrix D Object space World space Camera space 67

The complete transform Mapping a 3D point in object coordinates to pixel coordinates Object-to-world matrix M, camera matrix C, projection matrix C, viewport matrix D Object space World space Camera space Canonic view volume 68

The complete transform Mapping a 3D point in object coordinates to pixel coordinates Object-to-world matrix M, camera matrix C, projection matrix C, viewport matrix D Object space World space Camera space Canonic view volume Image space 69

The complete transform Mapping a 3D point in object coordinates to pixel coordinates Object-to-world matrix M, camera matrix C, projection matrix C, viewport matrix D Pixel coordinates 70

OpenGL details Object-to-world matrix M, camera matrix C, projection matrix P, viewport matrix D Model-view matrix Projection matrix OpenGL rendering pipeline performs these matrix multiplications in vertex shader program More on shader programs later in class User just specifies the model-view and projection matrices See Java code jrtr.glrendercontext.draw and default vertex shader in file default.vert 71

OpenGL details Object-to-world matrix M, camera matrix C, projection matrix P, viewport matrix D Model-view matrix Projection matrix Exception: viewport matrix, D Specified implicitly via glviewport() No direct access, not used in shader program 72

Rendering pipeline http://en.wikipedia.org/wiki/graphics_pipeline Scene data Rendering pipeline Image Hardware & software that draws 3D scenes on the screen Most operations performed by specialized hardware (graphics processing unit, GPU, http://en.wikipedia.org/wiki/graphics_processing_unit) Access to hardware through low-level 3D API (DirectX, OpenGL) jogl is a Java binding to OpenGL, used in our projects http://jogamp.org/jogl/www/ All scene data flows through the pipeline at least once for each frame (i.e., image) 73

Rendering pipeline Rendering pipeline implements object order algorithm Loop over all objects Draw triangles one by one (rasterization) Alternatives? Advantages, disadvantages? 74

Rendering engine Rendering engine (jrtr) Scene data Rendering pipeline Image Additional software layer ( middle-ware ) encapsulating low-level API (OpenGL, DirectX, ) Additional functionality (file I/O, scene management, ) Layered software architecture common in industry Game engines http://en.wikipedia.org/wiki /Game_engine 75

Rendering pipeline stages (simplified) Scene data Vertex processing, modeling and viewing transformation Geometry Vertices and how they are connected Triangles, lines, point sprites, triangle strips Attributes such as color Projection Rasterization, fragment processing, visibility Specified in object coordinates Processed by the rendering pipeline one-by-one Image 76

Rendering pipeline stages (simplified) Scene data Vertex processing, modeling and viewing transformation Projection Rasterization, fragment processing, visibility Transform object to camera coordinates MODELVIEW Additional processing matrixon pervertex basis Shading, i.e., computing pervertex colors Deformation, animation Etc. Image 77

Rendering pipeline stages (simplified) Scene data Vertex processing, modeling and viewing transformation Projection Rasterization, fragment processing, visibility Project 3D vertices to 2D image positions This lecture Image 78

Rendering pipeline stages (simplified) Scene data Vertex processing, modeling and viewing transformation Projection Draw primitives pixel by pixel on 2D image (triangles, lines, point sprites, etc.) Compute per fragment (i.e., pixel) color Determine what is visible Next lecture Rasterization, fragment processing, visibility Image Rasterization 79

Rendering pipeline stages (simplified) Scene data Vertex processing, modeling and viewing transformation Projection Rasterization, fragment processing, visibility Image Grid (2D array) of RGB pixel colors 80

References For today s Processing experiments see https://processing.org/tutorials/p3d/ https://processing.org/tutorials/transform2d/