230 likes | 380 Vues
3D Programming and DirectX API. Content. Mathematics Prepare to Write a 3D program Program Structure How does the computer calculate 3D image? Illustration Other Features in DirectX Library. Mathematics.
E N D
Content • Mathematics • Prepare to Write a 3D program • Program Structure • How does the computer calculate 3D image? • Illustration • Other Features in DirectX Library
Mathematics • Don’t worry! If you see this chapter in the book, just skip it, because you’ve learned. • Importance of “Transform” • Translation • Rotation • Scaling • …… • Vector & Matrix • Other Advanced Algorithm
Prepare to Write a 3D program • Using Direct3D • Compiler - VS.NET 2003 • Download DirectX SDK • http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/anch_directx.asp • DirectX 9.0 SDK Update - (February 2005) • An Easy Book • MSDN – http://www.msdn.com
Program Structure • Initialize D3D Library – Create Device • Loading or Building Model • Set Light, Material, and Texture • Calculate Transform Matrix, View Matrix , and Projection Matrix • Render!
Initialize D3D Library • IDirect3D9* • Direct3DCreate9(D3D_SDK_VERSION) • IDirect3DDevice9* • CreateDevice() 3D Device( 3D Card) Direct3DCreate9() CreateDevice() IDirect3DDevice9* IDirect3D * D3DLibrary
How does the computer calculate 3D image? • CPU and GPU (Graphic Process Unit) • 3D Library – OpenGL and Direct3D
How does the computer calculate 3D image? • Pipeline CPU GPU Light, Texture, Material Vertex Data Data in Model Space World Space Camera Space World Matrix View Matrix View Space (your screen) Projection Matrix
Loading and Building Modal • Vertex/Index Buffer • The Structure of Vertex V1 V3 V3 V1 V2 V4 … Vertex Buffer V4 1 2 3 1 4 2 … Index Buffer V2
Loading and Building Modal nZ U struct Vertex { float x, y, z; float nx, ny, nz; float u, v; // texture coordinates }; #define FVF_VERTEX (D3DFVF_XYZ | D3DFVF_NORMAL| D3DFVF_TEX1) Demo 1-TexCube X Y Z nX nY V …
Loading and Building Modal • X-file • When the model is complex, we can’t build it in our code. • Using 3D graphic tool, ex. Maya, 3D studio MAX, Lightwave, MilkShake • Direct3D have already provide funcs to load and parse X-file • Static Model and Animation Model
Set Light, Material, and Texture • Light - light source D3DLIGHT9 light; light.Type = D3DLIGHT_DIRECTIONAL; light.Ambient = D3DXCOLOR(0.8f, 0.8f, 0.8f, 1.0f); light.Diffuse = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f); light.Specular = D3DXCOLOR(0.2f, 0.2f, 0.2f, 1.0f); light.Direction = D3DXVECTOR3(1.0f, -1.0f, 0.0f); Demo 2-TexCube 3-TexCube 4-TexCube
Set Light, Material, and Texture • Material – reflection of light {0.0, 1.0, 1.0, 1.0} {1.0, 1.0, 0.0, 1.0} {1.0, 0.0, 1.0, 1.0} Demo EffetEdit
Set Light, Material, and Texture • Texture – surface of 3D object Demo 4-Tex 5-Tex
Calculate World Matrix, View Matrix , and Projection Matrix • World Matrix • D3DXMatrixTranslation(…) • D3DXMatrixRotationX(…) • D3DXMatrixIdentity(…) • D3DXMatrixScaling(…)
Calculate World Matrix, View Matrix , and Projection Matrix • View Matrix • D3DXMatrixLookAtLH(&V, &position, &target, &up);
Calculate World Matrix, View Matrix , and Projection Matrix • Projection Matrix D3DXMatrixPerspectiveFovLH();
Render!! • Prepare for render Device->SetTransform(D3DTS_VIEW, &V); Device->SetTransform(D3DTS_WORLD, &V); Device->SetTransform(D3DTS_PROJECTION, &V); • Start and Finish Render Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff, 1.0f, 0); Device->BeginScene(); ……./* render render render !!!! */…. Device->EndScene();
Render !! if( mtrl ) device->SetMaterial(mtrl); if( tex ) device->SetTexture(0, tex); device->SetStreamSource(0, _vb, 0, sizeof(Vertex)); device->SetIndices(_ib); device->SetFVF(FVF_VERTEX); device->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0, 0, 24, 0, 12); Set Material Set Texture Set Index Buffer Tell D3D your vertex format Just Draw It!!
More Skill • Terrain – Height Map • Shadow • Other Algorithm… • Good website :www.gamedev.net
Samples • Airplane • Walking Man • BasicHLSL • ShadowVolume • Terrain
Other Features in DirectX Library • DirectPlay • Network Game • DirectSound • Handle sound effect