week 2 wednesday
Download
Skip this Video
Download Presentation
CS361

Loading in 2 Seconds...

play fullscreen
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