Difference between revisions of "Game Programming Class12"
(→Homework) |
m (Jeff moved page XNA Programming Class12 to Game Programming Class12) |
(No difference)
|
Revision as of 03:24, 4 September 2013
Safe Cropping zones
Show safe zones for XBox
Billboards
Billboards are basically textured squares (two triangles) that point towards the camera and appear to be a 3D model. They are cheaper and easier to work with than models many early 3D games consisted mainly of billboards. Billboards are still used to fake 3D objects.
The XNA 3DAudio example from
http://creators.xna.com/en-US/sample/3daudio
has a good example of using billboards. This example also demonstrates 3D audio.
Quad Drawer Class
- SpriteEntity/Quad Sprite I changed the name
I've added these two classes to our IntroGameLibrary Project. Here's an example. I did change the projection view size and some of the scales of the billboards.
IntroQuad Project <csharp> /// <summary>
/// Constructs a new quadrilateral drawing worker. /// </summary> public QuadDrawer(GraphicsDevice device) { graphicsDevice = device;
effect = new AlphaTestEffect(device);
effect.AlphaFunction = CompareFunction.Greater; effect.ReferenceAlpha = 128;
// Preallocate an array of four vertices. vertices = new VertexPositionTexture[4];
vertices[0].Position = new Vector3(2, 2, 0); vertices[1].Position = new Vector3(-2, 2, 0); vertices[2].Position = new Vector3(2, -2, 0); vertices[3].Position = new Vector3(-2, -2, 0); }
/// <summary> /// Draws a quadrilateral as part of the 3D world. /// </summary> public void DrawQuad(Texture2D texture, float textureRepeats, Matrix world, Matrix view, Matrix projection) { // Set our effect to use the specified texture and camera matrices. effect.Texture = texture;
effect.World = world; effect.View = view; effect.Projection = projection;
// Update our vertex array to use the specified number of texture repeats. vertices[0].TextureCoordinate = new Vector2(0, 0); vertices[1].TextureCoordinate = new Vector2(textureRepeats, 0); vertices[2].TextureCoordinate = new Vector2(0, textureRepeats); vertices[3].TextureCoordinate = new Vector2(textureRepeats, textureRepeats);
// Draw the quad. effect.CurrentTechnique.Passes[0].Apply();
graphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, vertices, 0, 2); }
</csharp>
integrated in to QuadSprite
https://iam.colum.edu:8443/svn/XNAProg4/trunk/XNA4Jeff/IntoGameLibrary/ThreeD/QuadSprite.cs
Meshes
A mesh is a collection of vertices, faces and edges that define a 3d shape. XNA can import .X or .Fbx files. .X files are Files created for DirectX, while FBX is an platform independent 3D mesh file type.
FBX is now a platform and has its own API and SDK from Autodesk
http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=6837478
Mesh Class
https://iam.colum.edu:8443/svn/XNAProg4/trunk/XNA4Jeff/IntoGameLibrary/ThreeD/Mesh.cs
IntroMesh
You can get some free models from TurboSquid, or you can make your own models with Blender.
Blender
Blender is a free 3D program. It can export fbx models for xna.
- Installing Blender
- Getting Started with Blender 3D and XNA
- Blender Manual
- Blender_3D:_Noob_to_Pro
- Beginner_Tutorials/Print_version
Homework
Try out blender. Make a model and load it into XNA and draw a picture with models. The take a screenshot of your picture and post it on your site.