Fundamentals of Computer Graphics Part 1 prof.ing.Václav Skala, CSc. University of West Bohemia Plzeň, Czech Republic ©2002 Prepared with Angel,E.: Interactive Computer Graphics – A Top Down Approach with OpenGL, Addison Wesley, 2001 Graphics Systems Five major elements - processor, memory, frame buffer, output devices, input devices Fundamentals of Computer Graphics 2 Pixels and Frame Buffer Most graphics systems are pixel based – need of rasterization or scan conversion; pixel = picture element 8 bits deep frame – 256 colors; 24 or 32 bits for RGB colors picture detail Fundamentals of Computer Graphics 3 Output Devices The cathode-ray tube CRT Fundamentals of Computer Graphics 4 Output Devices RGB – shadow mask Fundamentals of Computer Graphics 5 Output Devices Refresh rate: 50 – 85 Hz, for stereovision 120Hz (2 x60 Hz) Mode: interlaced versus non-interlaced Masks: DELTA versus INLINE LCD Displays – raster based Raster devices – sequential access - plotters etc. – direct access – displays etc. – mixed – inkjet printers – printed sequentially, accessed directly Fundamentals of Computer Graphics 6 Fundamentals of Computer Graphics Images – Physical versus Synthetic Computer graphics generates pictures with the aim of: – to create realistic images – to create images very close to “traditional” imaging methods Fundamentals of Computer Graphics 7 Objects and Viewers Two basic entities (one object seen from two different positions) : – object(s) – exists in space independent of any image-formation process or viewer – viewer(s) Fundamentals of Computer Graphics 8 Objects, Viewers & Camera Camera system – object and viewer exist in E3 – image is formed • in the Human Visual system (HSV) – on the retina • In the film plane if a camera is used – Object(s) & Viewer(s) in E3 – Pictures in E2 Transformation from E3 to E2 projection Fundamentals of Computer Graphics 9 Lights & Images Others attributes: – light sources • position • monochromatic / color – if not used scene would be very dark and flat – shadows and reflections - very important for realistic perception – geometric optics used for light modeling Fundamentals of Computer Graphics 10 Colours • Light is a form of electromagnetic radiation • Visible spectrum 350 – 780 nm Fundamentals of Computer Graphics 11 Ray Tracing Ray tracing – building an imaging model by following light from a source – a ray is a semi-infinite line that emanates from a point and “travels” to infinity in a particular direction – portion of these infinite rays contributes to the image on the film plane of the camera surfaces: – diffusing – reflecting – refracting Fundamentals of Computer Graphics 12 Ray Tracing A different approach must be used: • for each pixel intensity must be computed • all contributions must be taken into account • a ray is “followed” in the opposite direction, when intersect a surface it is split into two rays • contribution from light sources and reflection from other resources are counted Fundamentals of Computer Graphics 13 Human Visual System - HVS • rods and cones (tyčinky a čípky) excited by electromagnetic energy in the range 350-780 nm • sizes of rods and cones determines the resolution of HVS – our visual acuity • the sensors in the human eye do not react uniformly to the light energy at different wavelengths Fundamentals of Computer Graphics 14 Human Visual System - HVS Courtesy of http://www.webvision.med.utah.edu/into.html Fundamentals of Computer Graphics 15 Human Visual System • different HVS response for single frequency light – red/green/blue • relative brightness response at different frequencies • this curve is known as Commision Internationale de L’Eclairage (CIE) standard observer curve • the curve matches the sensitivity of the monochromatic sensors used in black&white films and video camera • most sensitive to GREEN colors Fundamentals of Computer Graphics 16 Human Visual System • three different cones in HVS • blue, green & yellow – often reported as red for compatibility with camera & film Fundamentals of Computer Graphics 17 Pinhole Camera Box with a small hole • film plane z = - d y yp z d x xp z d !!!yp,-d Fundamentals of Computer Graphics 18 Pinhole Camera point (xp,yp,-d) – projection of the point (x,y,z) angle of view or field of the camera – angle ideal camera – infinite depth of field h 2 arctan 2d Fundamentals of Computer Graphics 19 Synthetic Camera Model computer-generated image based on an optical system – Synthetic Camera Model viewer behind the camera can move the back of the camera – change of the distance d i.e. additional flexibility objects and viewer specifications are independent – different functions within a graphics library Fundamentals of Computer Graphics Imaging system 20 Synthetic Camera Model a – situation with a camera b – mathematical model – image plane moved in front of the camera center of projection – center of the lens projection plane – film plane (průmětna) Fundamentals of Computer Graphics 21 Synthetic Camera Model Imaging with the Synthetic Camera Model • film plane position in a camera • projected scene to the projection plane Fundamentals of Computer Graphics 22 Synthetic Camera Model Not all objects can be seen limit due to viewing angle Solution: Clipping rectangle or clipping window placed inn front of the camera ad b shows the case when the clipping rectangle is shifted aside – only part of the the scene is projected Fundamentals of Computer Graphics 23 Programmer’s Interface • Numerous ways for user interaction with a graphics system using input devices - pads, mouse, keyboards etc. • different orientation of coordinate systems canvas versus OpenGL etc. Fundamentals of Computer Graphics 24 Application Programmer’s Interface • API functionality should match the conceptual model • Synthetic Camera Model used for APIs like OpenGL, PHIGS, Direct 3D, Java3D, VRML etc. Functionality needed in the API to specify: • Objects • Viewers • Light sources • Material properties Fundamentals of Computer Graphics 25 Application Programmer’s Interface • Objects are defined by points or vertices, line segments, polygons etc. to represent complex objects • API primitives are displayed rapidly on the hardware • usual API primitives: – – – – points line segments polygons text Fundamentals of Computer Graphics 26 Application Programmer’s Interface OpenGL defines primitives through list of vertices – triangular polygon is drawn by: glBegin(GL_POLYGON); glVertex3f(0.0, 0.0, 0.0); glVertex3f(0.0, 1.0, 0.0); glVertex3f(0.0, 0.0, 1.0); glEnd( ); attribute GL_POLYGON actually defines the primitive to be drawn – others GL_LINE_STRIP - draws a strip – n+1 points define n triangles GL_POINTS – draws only points Fundamentals of Computer Graphics 27 Application Programmer’s Interface Some APIs : • work with frame buffer – read/write pixel level • provides curves & surfaces / approximated by a series of simpler primitives • OpenGL provides frame buffer, curves and surfaces Fundamentals of Computer Graphics 28 Application Programmer’s Interface Camera specification in APIs: • position – usually center of lens • orientation – camera coordinate system in center of lens camera can rotate around those three axis • focal length of lens determines the size of the image on the film actually viewing angle • film plane - camera has a height and a width Fundamentals of Computer Graphics 29 Application Programmer’s Interface Two coordinate systems are used: • world coordinates, where the object is defined • camera coordinates, where the image is to be produced Transformation for conversion between coordinate systems or gluLookAt(cam_x, cam_y,cam_z, look_at_x, look_at_y, look_at_z,…) glPerspective( field_of_view) Lights – location, strength, color, directionality Material – properties are attributes of objects Observed visual properties of objects are given by material and light properties Fundamentals of Computer Graphics 30 Modeling - Rendering Paradigm In many applications the modeling is separated from production of an image – rendering (CAD systems, animations etc.) In this case the modeling SW/HW might be different from the renderer the connection between both parts can be simple or highly complex using distributed environments Fundamentals of Computer Graphics 31 Graphics Architectures Early graphics systems – CRT had just basic capability to generate line segments connecting two points • vector based with refreshing – length of line segments limited light pen often used for manipulation • systems with memory CRT – the whole picture redrawn if changed Fundamentals of Computer Graphics 32 Graphics Architectures Display processors • standard architecture with capabilities to display primitives • composition made at the host • memory – display list – contains primitives to be displayed. Fundamentals of Computer Graphics 33 Pipeline Architectures VLSI circuits enabled major advances in graphics architectures - simple arithmetic pipeline a + b * c - when addition of (b * c) and a is performing new b * c is computed in parallel – pipelining enabled significant speed up - similar approach can be used for processing of geometric primitives as well Fundamentals of Computer Graphics 34 Pipeline Architectures There are 4 major steps in the geometric pipeline: • transformations – like scaling, rotations, translation, mirroring, sheering etc. • clipping – removal of those parts that are out of the viewing field • projection • rasterization homogeneous coordinates and matrix operations geometric transformations are used Fundamentals of Computer Graphics 35 Clipping, Projection & Rasterization • Clipping is used to remove those parts of the world that cannot be seen. • Objects representation is “kept” in 3D as long as possible. After transformation and clipping must be projected to 2D somehow • projected objects or their parts must be displayed – and therefore rasterized. All those steps are performed on your graphics cards in haerware nowadays. Fundamentals of Computer Graphics 36 Conclusion • Consider a standard camera with 36x24 mm film and having a zoom 26 – 140mm. How the viewing angle or viewing field is defined. • what is the difference in viewing between cases a) and b)? • answer question from Chapter 1 Fundamentals of Computer Graphics 37 Exercise No.1 The aim of the first experiment is: • to read data of a complex geometric model defined by the TRI format (routine for reading will be given) • to store it in the data structure • to display the model as a set of triangles as wire-model (without shading, visibility) • to explore other possibilities of drawing – visible parts only by – with constant shading by setting some attributes • to explore a possibility to create your own data model Fundamentals of Computer Graphics 38 Exercise No.1 – TRI format # (data originally from powerflip, not avalon) # Object name : --- The canonical cow --# Number of triangles : 5804 # Number of vertices : 2905 [Vertices] 0.0 0.0 0.0 0.151632 -0.043319 -0.08824 0.163424 -0.033934 -0.08411 0.163118 -0.053632 -0.080509 x,y,z coordinates of the j-th vertex Fundamentals of Computer Graphics 39 Exercise No.1 – TRI format [Triangles] 123 245 546 ……….. vertex indices forming the i-th triangle [Triangles' Normals] 0.442 -0.167 -0.881 i-th normal vector for the i-th triangle 0.595 -0.088 -0.798 0.735 -0.093 -0.671 ………………………………………….. Fundamentals of Computer Graphics 40