Presentation is loading. Please wait.

Presentation is loading. Please wait.

Week 2 - Wednesday CS361.

Similar presentations


Presentation on theme: "Week 2 - Wednesday CS361."— Presentation transcript:

1 Week 2 - Wednesday CS361

2 What did we talk about last time?
More SharpDX examples Graphics rendering pipeline Application stage Geometry stage Rasterizer stage Input and non-graphical output Texture animation Animation via transforms Collision detection Updating the state of the world in general Outputs geometric primitives

3 Questions?

4 Project 1

5 Graphics rendering pipeline
For API design, practical top-down problem solving, and hardware design, and efficiency, rendering is described as a pipeline This pipeline contains three conceptual stages: Produces material to be rendered Application Decides what, how, and where to render Geometry Renders the final image Rasterizer

6 Student Lecture: Geometry Stage

7 Geometry Stage

8 Model and View Transform
Geometry stage The output of the Application Stage is polygons The Geometry Stage processes these polygons using the following pipeline: Model and View Transform Vertex Shading Projection Clipping Screen Mapping

9 Model Transform Each 3D model has its own coordinate system called model space When combining all the models in a scene together, the models must be converted from model space to world space After that, we still have to account for the position of the camera

10 Model and View Transform
We transform the models into camera space or eye space with a view transform Then, the camera will sit at (0,0,0), looking into negative z The z-axis comes out of the screen in the book's examples and in SharpDX (but not in older DirectX)

11 Vertex Shading Figuring out the effect of light on a material is called shading This involves computing a (sometimes complex) shading equation at different points on an object Typically, information is computed on a per-vertex basis and may include: Location Normals Colors

12 Projection Projection transforms the view volume into a standardized unit cube Vertices then have a 2D location and a z-value There are two common forms of projection: Orthographic: Parallel lines stay parallel, objects do not get smaller in the distance Perspective: The farther away an object is, the smaller it appears

13 Clipping Clipping process the polygons based on their location relative to the view volume A polygon completely inside the view volume is unchanged A polygon completely outside the view volume is ignored (not rendered) A polygon partially inside is clipped New vertices on the boundary of the volume are created Since everything has been transformed into a unit cube, dedicated hardware can do the clipping in exactly the same way, every time

14 Screen mapping Screen-mapping transforms the x and y coordinates of each polygon from the unit cube to screen coordinates A few oddities: DirectX has weird coordinate systems for pixels where the location is the center of the pixel DirectX conforms to the Windows standard of pixel (0,0) being in the upper left of the screen OpenGL conforms to the Cartesian system with pixel (0,0) in the lower left of the screen

15 3D Rendering in SharpDX

16 Drawing a model We're going to start by drawing a 3D model
Eventually, we'll go back and create our own primitives Like other SharpDX content, the easiest way to manage it is to add it to your Content folder SharpDX can load (some).fbx files and a number of other files supported by Assimp Model loading is one of the newer features of SharpDX and seems to have a number of bugs

17 Loading a model First, we declare a member variable to hold the model
Then we load the model in the LoadContent() method Model model; model = Content.Load<Model>("Ship");

18 Setting up the matrices
To draw anything in 3D, we need a world matrix, a view matrix and a projection matrix You'll need these repeatedly, so store them as members Matrix world = Matrix.CreateTranslation(new Vector3(0, 0, 0)); Matrix view = Matrix.LookAtRH(new Vector3(0, 0, 7), new Vector3(0, 0, 0), Vector3.UnitY); Matrix projection = Matrix. PerspectiveFovRH( 0.9f, (float)GraphicsDevice.BackBuffer.Width / GraphicsDevice.BackBuffer.Height, 0.1f, 100.0f);

19 What do those matrices mean?
The world matrix controls how the model is translated, scaled, and rotated with respect to the global coordinate system This code makes a matrix that moves the model 0 units in x, 0 units in y, and 0 units in z In other words, it does nothing Matrix world = Matrix.CreateTranslation(new Vector3(0, 0, 0));

20 And the view matrix? The view matrix sets up the orientation of the camera The easiest way to do so is to give Camera location What the camera is pointed at Which way is up This camera is at (0, 0, 7), looking at the origin, with positive y as up Matrix view = Matrix.CreateLookAt(new Vector3(0, 0, 7), new Vector3(0, 0, 0), Vector3.UnitY);

21 And projection? The projection matrix determines how the scene is projected into 2D It can be specified with Field of view in radians Aspect ratio of screen (width / height) Near plane location Far plane location Matrix projection = Matrix.CreatePerspectiveFieldOfView( .9f, (float)GraphicsDevice.BackBuffer.Width / GraphicsDevice.BackBuffer.Height, 0.1f, 100f);

22 Drawing Drawing the model is done by drawing all the individual meshes that make it up Each mesh has a series of effects Effects are used for texture mapping, visual appearance, and other things They need to know the world, view, and projection matrices foreach (ModelMesh mesh in model.Meshes) { foreach (BasicEffect effect in mesh.Effects) effect.World = world; effect.View = view; effect.Projection = projection; } mesh.Draw();

23 Quiz

24 Upcoming

25 Next time… Rendering pipeline Rasterizer stage

26 Reminders Keep reading Chapter 2


Download ppt "Week 2 - Wednesday CS361."

Similar presentations


Ads by Google