DOC PREVIEW
GT ECE 4893 - Lecture 11: More XNA Basics

This preview shows page 1-2 out of 7 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 7 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

9/28/08 1 Lecture 11: More XNA Basics Prof. Hsien-Hsin Sean Lee School of Electrical and Computer Engineering Georgia Institute of Technology 2 The Big Picture Initialize() LoadContent() Camera setup Update() Game Logic Draw() Initialization phase Texture load Model load Graphics Device Content Pipeline Vertex data, commands 3 VECTOR • Various types – VECTOR2 vec2 = new Vector2(100, 100) – VECTOR3 vec3 = new Vector3(10, 10, 10) – VECTOR4 vec4 = new Vector4(1, 1, 10, 2) • Some Useful common vector functions – float len = v3.Length() – float dp = Vector3.Dot(Vector3, Vector3) – Vector3 cp = Vector3.Cross(Vector3, Vector3) – Vector3 lerp = Vector3.Lerp(Vector3, Vector3, float) – Vector3 dist = Vector3.Distance(Vector3, Vector3) – Vector3 nv = Vector3.Normalize(Vector3) – Check out http://msdn.microsoft.com for more 2nd vector’s weight 4 VECTOR Example Vectors (See Demo in Visual Studio)9/28/08 2 5 MATRIX Related • MATRIX (4x4) • Common matrix manipulations – Vector4 Rmat41= Vector4.Transform (Vector4, Matrix); // [4x1]*[4x4] – Matrix Rmat44 = Matrix.Multiply(Matrix, Matrix); // [4x4]*[4x4] – It is overloaded with operator *, thus Rmat44=M1*M2 – Matrix INV = Matrix.Invet(Matrix); // find its inverse – Matrix TR = Matrix.Transpose(Matrix); // transpose – Matrix IM = Matrix.Identity; // return an identity matrix 6 MATRIX Example SimpleMatrix (See Demo in Visual Studio) 7 Plane • PLANE plane1 = new Plane(Vector3, d) vector3 describes a normal vector d = plane’s distance from the origin • Useful plane function – Plane.intersects(boundingbox box) – Many others, check msdn 8 Difference Between Drect3D and XNA • You always need an “effect file” (.fx) • An effect file is a shader code consisting of – Vertex Shader – Pixel Shader • Need to communicate varibales between your C# code and the shader code, e.g., matrices • Even rendering a simple triangle requiring an effect file – Use a BasicEffect9/28/08 3 9 Specifying an Effect • Either use a BasicEffect or specify a provided .fx file An effect file called effects.fx is given Passes specified in the shader will be processed 10 DrawUserPrimitives Give vertex list Inform the gfx device the type of vertices Declare the type of vertices # of Triangles Offset 11 Use Vertex Buffer (DrawPrimitives) • Create a container Vertex Buffer for allocating vertices Set starting source vertex for gfx device One less argument than DrawUserPrimitives Create VertexBuffer Indicate source of data 12 DrawPrimitves Example FirstTriangle (See Demo in Visual Studio)9/28/08 4 13 Create Indexed Vertex Buffer • To eliminate the repetitive definition of vertices • Use a vertex buffer to store unique vertices • Use an index buffer to store Index Vertex buffer Index buffer V[0] V[1] V[2] V[3] 14 DrawUserIndexedPrimitves Primitive Type T[] vertex data Vertex offset # of Vertices Short[] index data Index Offset # of Primitive to render V[0] V[1] V[2] V[3] 15 Indexed Vertex Structure Define vertices of a Cube VertexPositionNormalTexture In Draw() Texture Coordinates (0,0) (0,1) (1,0) (1,0) 16 Texture Mapping for Sphere • Warping the map could lead to distortion • Geometric calculation involved Globe image source: P. Bourke from uwa.edu.au9/28/08 5 17 MATRIX Method Examples • Translation (by amount to translate) Matrix.CreateTranslation(Vector3 position); • Scaling (by amount to scale in x, y, and z) Matrix.CreateScale(Vector3 scales); • Rotation Matrix.CreateRotationX(float radians); Matrix.CreateRotationY(float radians); Matrix.CreateRotationZ(float radians); • Special function Matrix.CreateShadow(Vector3 lightDir, Plane plane); 18 Movement Control Composite (*) into “one matrix” for effect file Be cautious on operation ordering 19 MATRIX Method for View Transformation • View Transformation Matrix.CreateLookAt(Vector3 cameraPosition, Vector3 cameraTarget, Vector3 cameraUpVector); x -z y CameraTarget(4, -1, 3) cameraTarget(-3, 3, -1) Usually (0, 1, 0)  the world is upward Use Vector3.Up 20 MATRIX Method for Projection Transformation • Build a Look-at Matrix Matrix.CreatePerspectiveFieldOfView( float fieldOfView, // In radians float aspectRatio, float nearPlaneDistance, float farPlaneDistance); • Can use MathHelper.ToRadians(degree) for$fieldOfView Eye fovy/2 far near Width Height aspectRatio = width/height9/28/08 6 21 DrawUserIndexedPrimitves Example DrawIndexedCube (See Demo in Visual Studio) Note that, in this example, all controls move the “Object,” *not* the viewer. 22 Rotate Camera (Looking Around) move +x - z Top view for XNA RHS 23 Moving Camera Example MovingCam (See Demo in Visual Studio) 24 Loading an .X model myDuck = Content.Load<Model>("ducky_highres"); .x model’s Asset name foreach (ModelMesh mesh in myDuck.Meshes) { foreach (BasicEffect effect in mesh.Effects) { effect.EnableDefaultLighting(); effect.View = viewMatrix; effect.Projection = projectionMatrix; effect.World = worldMatrix; } mesh.Draw(); } Draw all the meshes in the model9/28/08 7 25 Ducky Example DuckBasicEffect (See Demo in Visual Studio) 26 Draw a Subset of a Model Draw only MeshPart[0] and [1] Set up mesh IB and VB yourself Use your own Draw call instead of mesh.Draw() 27 Teapot Example TeapotBasicEffect (See Demo in Visual


View Full Document

GT ECE 4893 - Lecture 11: More XNA Basics

Documents in this Course
Load more
Download Lecture 11: More XNA Basics
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecture 11: More XNA Basics and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture 11: More XNA Basics 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?