Digital Media Dr. Jim Rowan ITEC 2110 Vector Graphics • Elegant way to construct digital images that – have a compact representation – are scalable – are easy to edit • Mandatory for 3-D modeling Coordinate systems • Bitmapped pixel coordinates (integer) 4 3 x 4,0 4,1 4,2 4,9 3,0 3,1 3,2 3,9 0,0 0,1 0,2 0,9 0 1 2 1 0 2 3 4 y 9 Coordinate systems bitmapped B 4 A 3 x 2 E 1 0 C 0 D 1 2 3 4 y A= ( , ) B= ( , ) C= ( , ) D= ( , ) E= ( , ) 9 Coordinate systems • Vector graphics coordinates (real values) • A point is defined by its x and y coordinate y (x,y) 2 Can be fractional Can be negative (1.41, 1.74) 1 0 1 2 3 x Coordinate systems y • Vector graphics coordinates (real values) • A displacement (distance between points or movement from one point to another) can be defined by a pair of points displacement from point 1 2 point 1 to point 2... (1.41, 1.74) = [(x2 - x1), (y2 - y1)] (3.12 - 1.41, 0.95 - 1.74) (1.71,-0.79) 1 point 2 (3.12, 0.95) 0 1 2 3 x AKA vector y • Vectors have magnitude (length) and direction • This vector goes down 0.79 and to the right 1.71 • It is a two dimensional (x&y) vector that goes down and to the right (1.71,-0.79) 2 (1.41, 1.74) 1 (3.12, 0.95) 0 1 2 3 x Vector graphics? • Another grandfathered term • From the time when displays were directly “steered” by their programs • Give the display two points and it would move the beam from one point to the other drawing a line... • This movement could be described as a vector since it has magnitude (length) and direction (from one point to the other) Absolute vs Window coordinates (top paragraph of page 88) • rendering software renders images in a window • windows can be moved at will so... • the rendering program only knows where the object is relative to the window it is in • rendering software does not know where the window is on the screen • a coordinate transformation must be performed Bounding Box • what point is used to place an object? • images can be contained inside a “bounding box” which is the smallest box that contains all the points found in an object • bounding box is placed in relation to its (0,0) position Window coordinates x (0,0) y desktop screen bounding box (100,103) window window 1 (410,290) window 1 (150,200) (760,570) Vector graphics • Store shapes (like the line) very economically in the form of formulas or equations • But which formula? • A line is defined by y = mx + b (but that is for an infinitely long line) • In computer graphics we want a line segment, i.e. it has endpoints • Since a line segment can also be completely described by its endpoints… Here’s the vector we saw earlier defined by it’s two endpoints 2 (1.41, 1.74) (3.12, 0.95) 1 0 1 2 3 x Now let’s convert this vector graphic to a bitmapped graphic Convert Vector to Bitmapped Visually... “completely cover the vector with pixels” 2 1 0 1 2 3 x Vector to Bitmapped 2 1 0 1 2 3 x The artifact created: The “Jaggies” This can result in “aliasing” 2 1 0 1 2 3 x Aliasing When converting a vector graphic to a bitmapped graphic we can’t create a perfect representation What we end up with is a bitmapped version of the vector It’s not really the original but rather an alias of the original version Aliasing • Even we view a bitmapped digital photograph on a display, the reconstruction is performed by a display device, and by our eyes and by our brain. • If the reconstructed image differs from the original image, we are seeing an alias. • http://en.wikipedia.org/wiki/Aliasing To combat aliasing: anti-aliasing • Techniques to mitigate the affect of aliases • Smoothes the edges of jagged lines Using anti-aliasing techniques on our original line our pixellated line to be displayed (the external model) is in black 2 1 0 1 2 3 x combating aliases: anti-aliasing techniques the original vector graphic line stored in the internal model is in red our pixellated line to be displayed (the external model) is in black 2 1 0 1 2 3 x combating aliases: anti-aliasing techniques 2 1 0 1 2 3 x combating aliases: anti-aliasing techniques “average the grayness” 2 1 0 1 2 3 x • So far we have just looked at a line – The line was stored as its endpoints • What about other shapes? vector graphics: shapes • connected lines are stored as a polyline – internally the polyline is stored as a series of points • closed polylines form a shape • open polyline is a jagged line vector graphics: rectangles and squares • rectangles can be described by two corners • squares are special cases of the rectangle vector graphics: ellipses and circles • ellipses can be described by two points • circles are special cases of the ellipses – they are stored as a single point http://en.wikipedia.org/wiki/Ellipse vector graphics: curves • Question: How would you draw a curve using a computer with a mouse? • You can’t draw smooth lines very easily • A line tool with handles (based on the Bezier curve) can be manipulated by those handles Lines and curves • Bezier curves can be smoothly joined together • An anchor point is the point where one joins the other • When a curve closes on itself it is considered a closed curve • When it doesn’t it’s an open curve Lines and curves • Closed (and open for that matter) lines can be filled – This is how drawn shapes become objects like the cowboy on Toy Story (except that the characters in toy story were created in 3D, not 2D) – solid color, pattern or gradient (linear or radial) – Patterns are built of tiles that match across x & y • Lines have ends – ends can be messy when joined – mitre, rounded, square, bevel Manipulating objects AKA closed curves • Translation is a simple up/down side-toside movement • Scaling: make bigger or smaller • Rotation about a point • Reflection about a line 3-D • Way more complex than 2-D • 3-D shapes (objects) are defined by their surfaces • Made even more complicated by the fact that a 3-D object inside the computer must be translated into 2-D to be rendered on a computer screen... – This results in the need to specify the viewpoint Structural hierarchy • Things in the real world are compositions of smaller things • Things in the 3-D graphics world are also compositions of smaller things • Hierarchical structure is an excellent way of coping with complexity • Also seen in object-oriented programming like Java and Squeak! Car Structural hierarchy – Wheels (4) • tire • wheel • hubcap – Doors (2) • handles – inside » lever – outside » button » handle • window(s) – Lights • headlights (2) • tail lights (2+) • stop lights (2+) 3-D: additional complexity • rendering is extremely computationally expensive (demanding) – lighting • • • • natural artificial reflections off other objects in the scene shadows cast by other objects in the scene – surface texture affects appearance Questions?