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

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

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

Drawing Fast The Graphics Pipeline

Graphics Pipeline 2D Geometric Transformations

3D Viewing. CS 4620 Lecture 8

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

Computer Graphics 7: Viewing in 3-D

Overview. By end of the week:

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

CS 4620 Program 3: Pipeline

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

Lecture 4. Viewing, Projection and Viewport Transformations

Drawing Fast The Graphics Pipeline

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

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

Shadows in the graphics pipeline

Drawing Fast The Graphics Pipeline

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

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

CS251 Spring 2014 Lecture 7

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

Models and The Viewing Pipeline. Jian Huang CS456

COMP30019 Graphics and Interaction Perspective Geometry

Describe the Orthographic and Perspective projections. How do we combine together transform matrices?

Scanline Rendering 1 1/42

Projection: Mapping 3-D to 2-D. Orthographic Projection. The Canonical Camera Configuration. Perspective Projection

CS451Real-time Rendering Pipeline

Lecture 4: 3D viewing and projections

3D Drawing Visibility & Rasterization. CS559 Spring 2016 Lecture 9 February 23, 2016

Computer Graphics: Viewing in 3-D. Course Website:

Rasterization Overview

Temporal Resolution. Flicker fusion threshold The frequency at which an intermittent light stimulus appears to be completely steady to the observer

Movie: Geri s Game. Announcements. Ray Casting 2. Programming 2 Recap. Programming 3 Info Test data for part 1 (Lines) is available

Last week. Machiraju/Zhang/Möller/Fuhrmann

Game Architecture. 2/19/16: Rasterization

The Graphics Pipeline and OpenGL I: Transformations!

CS Exam 1 Review Problems Fall 2017

CS 418: Interactive Computer Graphics. Projection

2D/3D Geometric Transformations and Scene Graphs

GEOMETRIC TRANSFORMATIONS AND VIEWING

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

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

Today. Parity. General Polygons? Non-Zero Winding Rule. Winding Numbers. CS559 Lecture 11 Polygons, Transformations

Announcements. Mosaics. How to do it? Image Mosaics

CS6670: Computer Vision

CS 432 Interactive Computer Graphics

CS488. Implementation of projections. Luc RENAMBOT

CS 381 Computer Graphics, Fall 2008 Midterm Exam Solutions. The Midterm Exam was given in class on Thursday, October 23, 2008.

Prof. Feng Liu. Fall /19/2016

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

Graphics pipeline and transformations. Composition of transformations

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

CS 130 Exam I. Fall 2015

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

WebGL and GLSL Basics. CS559 Fall 2015 Lecture 10 October 6, 2015

2.1 Transforming Linear Functions

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

Geometric camera models and calibration

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

CSE328 Fundamentals of Computer Graphics

Projection and viewing. Computer Graphics CSE 167 Lecture 4

CSE528 Computer Graphics: Theory, Algorithms, and Applications

Ray Tracing. CS 4620 Lecture 5

Viewing. Part II (The Synthetic Camera) CS123 INTRODUCTION TO COMPUTER GRAPHICS. Andries van Dam 10/10/2017 1/31

CS6670: Computer Vision

The Graphics Pipeline and OpenGL I: Transformations!

Last Time. Why are Shadows Important? Today. Graphics Pipeline. Clipping. Rasterization. Why are Shadows Important?

CSE 690: GPGPU. Lecture 2: Understanding the Fabric - Intro to Graphics. Klaus Mueller Stony Brook University Computer Science Department

CS 248 Assignment 2 Polygon Scan Converter. CS248 Presented by Abe Davis Stanford University October 17, 2008

Computer graphics 2: Graduate seminar in computational aesthetics

Computer Graphics. Chapter 1 (Related to Introduction to Computer Graphics Using Java 2D and 3D)

Pipeline Operations. CS 4620 Lecture 14

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

Topics and things to know about them:

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

CS 130 Exam I. Fall 2015

CS559: Computer Graphics. Lecture 12: Antialiasing & Visibility Li Zhang Spring 2008

Surface Graphics. 200 polys 1,000 polys 15,000 polys. an empty foot. - a mesh of spline patches:

Real-Time Shadows. Last Time? Today. Why are Shadows Important? Shadows as a Depth Cue. For Intuition about Scene Lighting

CMSC427: Computer Graphics Lecture Notes Last update: November 21, 2014

Computer Viewing. Prof. George Wolberg Dept. of Computer Science City College of New York

Evening s Goals. Mathematical Transformations. Discuss the mathematical transformations that are utilized for computer graphics

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

CS4670: Computer Vision

Viewing with Computers (OpenGL)

Pipeline Operations. CS 4620 Lecture 10

Introduction to Computer Vision

For Intuition about Scene Lighting. Today. Limitations of Planar Shadows. Cast Shadows on Planar Surfaces. Shadow/View Duality.

CS 130 Final. Fall 2015

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

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

Z- Buffer Store the depth for each pixel on the screen and compare stored value with depth of new pixel being drawn.

WebGL and GLSL Basics. CS559 Fall 2016 Lecture 14 October

CS 4620 Midterm 1. Tuesday 22 October minutes

Computer Vision CS 776 Fall 2018

Project 1, 467. (Note: This is not a graphics class. It is ok if your rendering has some flaws, like those gaps in the teapot image above ;-)

Geometry: Outline. Projections. Orthographic Perspective

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

CS 4204 Computer Graphics

COMP 175 COMPUTER GRAPHICS. Ray Casting. COMP 175: Computer Graphics April 26, Erik Anderson 09 Ray Casting

Transcription:

Drawing in 3D (viewing, projection, and the rest of the pipeline) CS559 Spring 2017 Lecture 6 February 2, 2017

The first 4 Key Ideas 1. Work in convenient coordinate systems. Use transformations to get from where you want to be to where you need to be. Hierarchical modeling lets us build things out of pieces. 2. Use homogeneous coordinates and transformations to make common operations easy. Translation, projections, coordinate system shift all become simple matrix multiplies. 3. Create viewing transformations with projection. The geometry of imaging (pinhole camera model) leads to linear transformations in homogeneous coordinates. 4. Implement primitive-based rendering (interactive graphics) with a pipeline. The abstractions map nicely onto hardware, and let you do things like visibility computations easily. Be aware that there are other paradigms for drawing.

The first 4 Key Ideas 1. Work in convenient coordinate systems. Use transformations to get from where you want to be to where you need to be. Hierarchical modeling lets us build things out of pieces. Last 2 Weeks 2. Use homogeneous coordinates and transformations to make common operations easy. Translation, projections, coordinate system shift all become simple matrix multiplies. 3. Create viewing transformations with projection. The geometry of imaging (pinhole camera model) leads to linear transformations in homogeneous coordinates. This Week 4. Implement primitive-based rendering (interactive graphics) with a pipeline. The abstractions map (and nicely next) onto hardware, and let you do things like visibility computations easily. Be aware that there are other paradigms for drawing.

ReCap: Basic Idea To draw we need a coordinate system Transformations can Move between coordinate systems Move objects around Useful transformations as matrices

ReCap: Math Points, Vectors, Matrices Transformations as linear operators Matrices (homogeneous coordinates) 3D Coordinate Systems cross product, right hand rule

ReCap: Code Matrix stack Save Transform (concat) Draw (current trans) Restore

What about 3D?

How to draw in 3D? We are making a 2D picture! Do it Like nature does Like artists do

Do it like Da Vinci!

Primitive-based Rendering Draw 2D Objects in the image Paint strokes on canvas Lines / Triangles on screen Map (Transform) 3D primitives (world) to 2D primitives (screen)

What does it take to do this? 1. Put a 3D primitive in the World 2. Figure out what color it should be 3. Position relative to the Eye 4. Get rid of stuff behind you/offscreen 5. Figure out where it goes on screen 6. Figure out if something else blocks it 7. Draw the 2D primitive

In terms of the readings A lot of the pieces are there Not necessarily in any particular order Good for the details Today we ll try for the big picture

What does it take to do this? 1. Put a 3D primitive in the World 2. Figure out what color it should be 3. Position relative to the Eye 4. Get rid of stuff behind you/offscreen 5. Figure out where it goes on screen 6. Figure out if something else blocks it 7. Draw the 2D primitive

1. Put a 3D primitive in the World Modeling 2. Figure out what color it should be Shading 3. Position relative to the Eye Viewing / Camera Transformation 4. Get rid of stuff behind you/offscreen Clipping 5. Figure out where it goes on screen Projection (sometimes called Viewing) 6. Figure out if something else blocks it Visibility / Occlustion 7. Draw the 2D primitive Rasterization (convert to Pixels)

1. Put a 3D primitive in the World Modeling 2. Figure out what color it should be Shading 3. Position relative to the Eye Viewing / Camera Today Transformation (FCG 7) 4. Get rid of stuff behind you/offscreen Clipping 5. Figure out where it goes on screen Today (FCG 7) Projection (sometimes called Viewing) 6. Figure out if something else blocks it This week (FCG 8) Visibility / Occlustion 7. Draw the 2D primitive Rasterization (convert to Pixels) Did some, will do more A little for P4, lots later Not much to say (FCG 8) Not much to say (FCG 8)

In case you re wondering (We ll come back to this. It s a detail) For the kinds of projection we will use 3D Points map to 2D Points 3D Lines map to 2D Lines 3D Triangles map to 2D Triangles Doesn t work for curves (even ellipses)

Viewing How to get from the object to the screen? A transformation between coord systems A little weird

3D to 2D Do we lose a dimension? No we actually need to keep it Yes but we ll just ignore Z The screen as a fishtank

Let s build a viewing transform A toy example (with code)

My Neighbor

A (simple) bird

A Tree for the Bird

In it s coordinate system

Bird in Tree

Bird in Tree, Tree in Park

And a person to look at the bird

The Eye Coordinate System (or camera)

Look At (the bird)

Perspective (just wait)

Look At (the bird)

Where is everything in the Park? Tree in Park M t Bird in Tree M b p Points in Park Coords Person in Park M p Points in Tree Coords Points in Person Coords Eye in Person M e Points in Bird Coords e Eye Point 0

Bird in Eye (Camera) Coordinates Tree in Park M t Bird in Tree M b p Points in Park Coords Person in Park M p Points in Tree Coords Points in Person Coords Eye in Person M e Points in Bird Coords e Points in Eye Coordinates

e = M e -1 M p -1 M t M b p Tree in Park M t Bird in Tree M b p Points in Park Coords Person in Park M p Points in Tree Coords Points in Person Coords Eye in Person M e Points in Bird Coords e Points in Eye Coordinates

Viewing Matrix Model Matrix e = M e -1 M p -1 M t M b p Points in Park Coords Tree in Park M t Points in Tree Coords Bird in Tree Modeling M b p Points in Bird Coords Person in Park M p Points in Person Coords Eye in Person Viewing M e e Points in Eye Coordinates

From object to eye: ModelView Modeling matrix: object to world Viewing matrix: world to eye / camera Rigid Transformation (rotate/translate) Invert the camera s model matrix Build a LookAt / LookFrom matrix

Next Problem: Projection Convert 3D (eye coordinates) to 2D (screen) A transformation Types: Orthographic Perspective some others we won t talk much about

Orthographic Projection Scale X and Y to fit things on screen Note: we can look in any direction we are already in camera coodinates!

Orthographic Projections Simple Preserves Distances Objects far away same size as close Looks weird

Perspective Projections Objects that are far away look smaller

My sample P3... Orthographic Perspective

Drawing in Perspective

A draughtsman drawing a portrait, Albrecht Dürer, 1532. E.44-1894 http://www.vam.ac.uk/content/articles/d/drawing-techniques/

http://hans.wyrdweb.eu/about-perspective/

Perspective Imaging Eye Point a.k.a. Focal Point Image Plane

Perspective Assumptions There is a single focal point Simplifying Assumptions: (not required) Image plane orthogonal to view direction Image plane centered on view direction

Image plane in front of eye Image plane behind eye d d d is the focal length

Pinhole Camera d

Perspective math

Perspective math y " = d z y

Perspective Projection This is linear in homogeneous coordinates x " = d z x y " = d z y Rotate so w=z, the divide by w does the job Details in the book (or next class)

Homogeneous Coordinates What does this w axis do? So far, it s always been: 1 (for points) 0 (for vectors)

Projective Equivalence In homogeneous coordinates, points correspond to rays through the origin. In 3D The point x,y,z Has a set of homogeneous coordinates: [x,y,z,1] [2x, 2y, 2z, 2],

The divide by w For a 3D point x,y,z It can be anything of the form: [ α x, α y, α z, α ] We consider the hyperplane [w=1] to be our regular 3D space. So we can convert: [ ' (, ) (, * (, 1 ] - divide by w

Projective coodinates for 1D 1D (x) becomes (x,w) w x

Simplest Projective Transform dx dy 1 z = d 0 0 d 0 0 0 0 0 0 0 0 0 1 1 0 x y z 1 After the divide by w Note that this is dx/z, dy/z (as we want) Note that z is 1/z (we can t keep Z) Fancier forms scale things correctly

All the coordinate systems Window (Screen) in pixels Normalized Device [-1 1] Camera / Eye World Object... Local

Transformations between each Viewport Trans Projection Viewing Modeling Modeling Window (Screen) in pixels Normalized Device [-1 1] Camera / Eye World Object... Local

Program 3 Hints All the transforms (even projection) are matrices. The matrix library has them implemented You don t have to implement them yourself but it s important to understand them TWGL s screen coordinates are [-1, 1] You have to convert to Canvas Pixels

Demos