Đang tải... (xem toàn văn)
Công Nghệ Thông Tin, it, phầm mềm, website, web, mobile app, trí tuệ nhân tạo, blockchain, AI, machine learning - Báo cáo khoa học, luận văn tiến sĩ, luận văn thạc sĩ, nghiên cứu - Công nghệ thông tin gamedesigninitiative at cornell university the 2D Sprite Graphics Lecture 15 gamedesigninitiative at cornell university the Graphics Lectures Drawing Images SpriteBatch interface Coordinates and Transforms Drawing Perspective Camera Projections Drawing Primitives Color and Textures Polygons 2D Sprite Graphics bare minimum to draw graphics side-scroller vs. top down necessary for lighting shadows 2 gamedesigninitiative at cornell university the Take Away for Today Coordinate Spaces and drawing What is screen space? Object space? How do we use the two to draw objects? Do we need any other spaces as well? Drawing Transforms What is a drawing transform? Describe the classic types of transforms. List how to use transforms in a game. 2D Sprite Graphics3 gamedesigninitiative at cornell university the The SpriteBatch Interface In this class we restrict you to 2D graphics 3D graphics are much more complicated Covered in much more detail in other classes Art 1701: Artist tools for 3D Models CS 4620: Programming with 3D models In XNA, use the interface SpriteBatch Sprite: Pre-rendered 2D (or even 3D) image All you do is composite the sprites together 2D Sprite Graphics4 gamedesigninitiative at cornell university the Use coordinate systems Each pixel has a coordinate Draw something at a pixel by Specifying what to draw Specifying where to draw Do we draw each pixel? Use a drawing API Given an image; does work This is what XNA provides 2D Sprite Graphics Drawing in 2 Dimensions y x (2,4) (-1,-1) 5 gamedesigninitiative at cornell university the Sprite Coordinate Systems Screen coordinates: where to paint the image Think screen pixels as a coordinate system Very important for object transformations Example: scale, rotate, translate In 2D, origin is typically top left of screen Object coordinate: location of pixels in object Think of sprite as an image file (it often is) Coordinates are location of pixels in this file Unchanged when object moves about screen 2D Sprite Graphics6 gamedesigninitiative at cornell university the Sprite Coordinate Systems +y (0,0) +x Object: (0,0) Screen: (300,200) 2D Sprite Graphics7 gamedesigninitiative at cornell university the Drawing Sprites Basic instructions: Set origin for the image in object coordinates Give the SpriteBatch a point to draw at Screen places origin of image at that point What about the other pixels? Depends on transformations (rotated? scaled?) But these (almost) never affect the origin Sometimes we can reset the object origin 2D Sprite Graphics8 gamedesigninitiative at cornell university the Sprite Coordinate Systems +y (0,0) +x Object: (0,0) Screen: (300,200) 2D Sprite Graphics9 gamedesigninitiative at cornell university the Sprite Coordinate Systems 2D Sprite Graphics10 gamedesigninitiative at cornell university the Sprite Coordinate Systems +y (0,0) +x Object: (0,50) Screen: (300,200) 2D Sprite Graphics11 gamedesigninitiative at cornell university the Drawing with SpriteBatch Draw(GameTime time) { … spriteBatch.Begin(); spriteBatch.Draw(image0,origin0,color0); spriteBatch.Draw(image1,origin1,color1); … spriteBatch.End(); … } 2D Sprite Graphics screen coordinates 12 gamedesigninitiative at cornell university the 2D Transforms A function T : R2→R2 “Moves” one set of points to another set of points Transforms one “coordinate system” to another The new coordinate system is the distortion Idea: Draw on paper and then “distort” it Examples: Stretching, rotating, reflecting Determines placement of “other” pixels Also allows us to get multiple images for free 2D Sprite Graphics13 gamedesigninitiative at cornell university the The “Drawing Transform” T : object coords → screen coords Assume pixel (a,b) in art file is blue Then screen pixel T(a,b) is blue We call T the object map By default, object space = screen space Color of image at (a,b) = color of screen at (a,b) By drawing an image, you are transforming it S an image; transformed image is T(S) 2D Sprite Graphics14 gamedesigninitiative at cornell university the Example: Translation Simplest transformation: T(v) = v + u Shifts object in direction u Distance shifted is magnitude of u Used to place objects on screen By default, object origin is screen origin T(v) = v + u places object origin at u 2D Sprite Graphics S T(S) 15 gamedesigninitiative at cornell university the Composing Transformations Example: T : R2→R2, S : R2→R2 Assume pixel (a,b) in art file is blue Transform T makes pixel T(a,b) blue Transform ST makes pixel S(T(a,b)) blue Strategy: use transforms as building blocks Think about what you want to do visually Break it into a sequence of transforms Compose the transforms together 2D Sprite Graphics16 gamedesigninitiative at cornell university the Application: Scrolling 2D Sprite Graphics Screen World World origin Screen origin 17 gamedesigninitiative at cornell university the Application: Scrolling 2D Sprite Graphics Screen World World origin Screen origin Object origin 18 gamedesigninitiative at cornell university the Scrolling: Two Translations Place object in the World at point p = (x,y) Basic drawing transform is T(v) = v+p Suppose Screen origin is at q = (x’,y’) Then object is on the Screen at point p-q S(v) = v-q transforms World coords to Screen ST(v) transforms the Object to the Screen This separation makes scrolling easy To move the object, change T but leave S same To scroll the screen, change S but leave T same 2D Sprite Graphics19 gamedesigninitiative at cornell university the Scrolling: Practical Concerns Many objects will exists outside screen Can draw if want; graphics ca...
the gamedesigninitiative at cornell university Lecture 15 2D Sprite Graphics Graphics Lectures Drawing Images bare minimum to draw graphics SpriteBatch interface Coordinates and Transforms side-scroller vs top down Drawing Perspective necessary for Camera lighting & shadows Projections the Drawing Primitives gamedesigninitiative Color and Textures Polygons at cornell university 2 2D Sprite Graphics Take Away for Today Coordinate Spaces and drawing What is screen space? Object space? How do we use the two to draw objects? Do we need any other spaces as well? Drawing Transforms What is a drawing transform? Describe the classic types of transforms List how to use transforms in a game the 3 2D Sprite Graphics gamedesigninitiative at cornell university The SpriteBatch Interface In this class we restrict you to 2D graphics 3D graphics are much more complicated Covered in much more detail in other classes Art 1701: Artist tools for 3D Models CS 4620: Programming with 3D models In XNA, use the interface SpriteBatch Sprite: Pre-rendered 2D (or even 3D) image All you do is composite the sprites together the 4 2D Sprite Graphics gamedesigninitiative at cornell university Drawing in 2 Dimensions Use coordinate systems y (2,4) Each pixel has a coordinate Draw something at a pixel by x (-1,-1) Specifying what to draw Specifying where to draw Do we draw each pixel? Use a drawing API Given an image; does work This is what XNA provides the 5 2D Sprite Graphics gamedesigninitiative at cornell university Sprite Coordinate Systems Screen coordinates: where to paint the image Think screen pixels as a coordinate system Very important for object transformations Example: scale, rotate, translate In 2D, origin is typically top left of screen Object coordinate: location of pixels in object Think of sprite as an image file (it often is) Coordinates are location of pixels in this file Unchanged when object moves about screen the 6 2D Sprite Graphics gamedesigninitiative at cornell university Sprite Coordinate Systems (0,0) +x Object: (0,0) Screen: (300,200) +y 2D Sprite Graphics the 7 gamedesigninitiative at cornell university Drawing Sprites Basic instructions: Set origin for the image in object coordinates Give the SpriteBatch a point to draw at Screen places origin of image at that point What about the other pixels? Depends on transformations (rotated? scaled?) But these (almost) never affect the origin Sometimes we can reset the object origin the 8 2D Sprite Graphics gamedesigninitiative at cornell university Sprite Coordinate Systems (0,0) +x Object: (0,0) Screen: (300,200) +y 2D Sprite Graphics the 9 gamedesigninitiative at cornell university Sprite Coordinate Systems the 10 2D Sprite Graphics gamedesigninitiative at cornell university