Week 2 wednesday
Download
1 / 26

CS361 - PowerPoint PPT Presentation


  • 125 Views
  • Uploaded on

Week 2 - Wednesday. CS361. What did we talk about last time?. More XNA examples Graphics rendering pipeline Application stage Geometry stage Rasterizer stage Application stage Input and non-graphical output Texture animation Animation via transforms Collision detection

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' CS361' - rufus


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

What did we talk about last time
What did we talk about last time?

  • More XNA examples

  • Graphics rendering pipeline

    • Application stage

    • Geometry stage

    • Rasterizer stage

  • Application stage

    • Input and non-graphical output

    • Texture animation

    • Animation via transforms

    • Collision detection

    • Updating the state of the world in general

    • Outputs geometric primitives




Graphics rendering pipeline
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:




Geometry stage1
Geometry stage

  • The output of the Application Stage is polygons

  • The Geometry Stage processes these polygons using the following pipeline:


Model transform
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


Model and view transform
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 XNA (but not in older DirectX)


Vertex shading
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


Projection
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


Clipping
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


Screen mapping
Screen mapping

  • Screen-mapping transforms the x and y coordinates of each polygon from the unit cube to screen coordinates

  • A few oddities:

    • XNA has weird coordinate systems for pixels where the location is the center of the pixel

    • XNA 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



Drawing a model
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 XNA content, the easiest way to manage it is to add it to your Content project

    • XNA can load .x and .fbx files

  • I'm using Helicopter.fbx and HelicopterTexture.png

    • http://rbwhitaker.wdfiles.com/local--files/model-library/Helicopter.zip


Loading a model
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>("Helicopter");


Setting up the matrices
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(newVector3(0, 0, 0));

Matrix view =

Matrix.CreateLookAt(new Vector3(0, 0, 10), new Vector3(0, 0, 0), Vector3.UnitY);

Matrix projection = Matrix.CreatePerspectiveFieldOfView( MathHelper.ToRadians(45), 800f / 480f, 0.1f, 100f);


What do those matrices mean
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(newVector3(0, 0, 0));


And the view matrix
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, 10), looking at the origin, with positive y as up

Matrix view =

Matrix.CreateLookAt(new Vector3(0, 0, 10), new Vector3(0, 0, 0), Vector3.UnitY);


And projection
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( MathHelper.ToRadians(45), 800f / 480f, 0.1f, 100f);


Drawing
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 inmodel.Meshes)

{

foreach(BasicEffect effect inmesh.Effects)

{

effect.World= world;

effect.View= view;

effect.Projection= projection;

}

mesh.Draw();

}




Next time
Next time…

  • Rendering pipeline

    • Rasterizer stage


Reminders
Reminders

  • Keep reading Chapter 2


ad