3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program...
-
Upload
jean-morrison -
Category
Documents
-
view
221 -
download
0
Transcript of 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program...
![Page 1: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/1.jpg)
3D Programming and DirectX 3D Programming and DirectX APIAPI
![Page 2: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/2.jpg)
ContentContent
• MathematicsMathematics
• Prepare to Write a 3D programPrepare to Write a 3D program
• Program StructureProgram Structure
• How does the computer calculate 3D How does the computer calculate 3D image?image?
• IllustrationIllustration
• Other Features in DirectX LibraryOther Features in DirectX Library
![Page 3: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/3.jpg)
MathematicsMathematics
• Don’t worry! If you see this chapter in the Don’t worry! If you see this chapter in the book, just skip it, because you’ve learned.book, just skip it, because you’ve learned.
• Importance of “Transform”Importance of “Transform”– TranslationTranslation– RotationRotation– ScalingScaling– …………
• Vector & MatrixVector & Matrix• Other Advanced AlgorithmOther Advanced Algorithm
![Page 4: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/4.jpg)
Prepare to Write a 3D Prepare to Write a 3D programprogram
• Using Direct3DUsing Direct3D• Compiler - VS.NET 2003Compiler - VS.NET 2003• Download DirectX SDKDownload DirectX SDK
– http://http://msdn.microsoft.com/library/default.asp?urlmsdn.microsoft.com/library/default.asp?url=/library/en-us/=/library/en-us/dnanchor/html/anch_directx.aspdnanchor/html/anch_directx.asp
– DirectX 9.0 SDK Update - (February 2005)DirectX 9.0 SDK Update - (February 2005)
• An Easy BookAn Easy Book• MSDN – http://www.msdn.comMSDN – http://www.msdn.com
![Page 5: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/5.jpg)
Program StructureProgram Structure
• Initialize D3D Library – Create DeviceInitialize D3D Library – Create Device
• Loading or Building ModelLoading or Building Model
• Set Light, Material, and TextureSet Light, Material, and Texture
• Calculate Transform Matrix, View Calculate Transform Matrix, View Matrix , and Projection MatrixMatrix , and Projection Matrix
• Render!Render!
![Page 6: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/6.jpg)
Initialize D3D LibraryInitialize D3D Library
• IDirect3D9*IDirect3D9*• Direct3DCreate9(D3D_SDK_VERSION)Direct3DCreate9(D3D_SDK_VERSION)• IDirect3DDevice9*IDirect3DDevice9*• CreateDevice()CreateDevice()
IDirect3D *IDirect3D *CreateDevice()CreateDevice()Direct3DCreate9()Direct3DCreate9()
D3DLibrarD3DLibraryy
IDirect3DDevice9*IDirect3DDevice9*
3D Device( 3D 3D Device( 3D Card)Card)
![Page 7: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/7.jpg)
How does the computer How does the computer calculate 3D image?calculate 3D image?
• CPU and GPU (Graphic Process Unit)CPU and GPU (Graphic Process Unit)
• 3D Library – OpenGL and 3D Library – OpenGL and Direct3DDirect3D
![Page 8: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/8.jpg)
How does the computer How does the computer calculate 3D image? calculate 3D image?
• PipelinePipeline
Data in Model Space World
Space
World Matrix
View Matrix
Projection Matrix
CPU GPU
Camera Space
View Space
(your screen)
Vertex Data
Light, Texture, Material
![Page 9: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/9.jpg)
Loading and Building ModalLoading and Building Modal
• Vertex/Index BufferVertex/Index Buffer
• The Structure of VertexThe Structure of Vertex
V1
V2
V3
V4
V1
V2
V3
V4
1 2 3 1 4 2 …
…
Index Buffer
Vertex Buffer
![Page 10: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/10.jpg)
struct Vertexstruct Vertex{{ float x, y, z;float x, y, z; float nx, ny, nz;float nx, ny, nz; float u, v; // texture coordinatesfloat u, v; // texture coordinates};};#define FVF_VERTEX (#define FVF_VERTEX (D3DFVF_XYZD3DFVF_XYZ | | D3DFVF_NORMALD3DFVF_NORMAL | | D3DFVF_TEX1D3DFVF_TEX1))Demo 1-TexCubeDemo 1-TexCube
Loading and Building ModalLoading and Building Modal
X Y Z nX nY nZ U V …
![Page 11: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/11.jpg)
Loading and Building ModalLoading and Building Modal
• X-fileX-file– When the model is complex, we can’t build When the model is complex, we can’t build
it in our code.it in our code.– Using 3D graphic tool, ex. Maya, 3D studio MUsing 3D graphic tool, ex. Maya, 3D studio M
AX, Lightwave, AX, Lightwave, MilkShakeMilkShake– Direct3D have already provide funcs to load Direct3D have already provide funcs to load
and parse X-fileand parse X-file– Static Model and Animation ModelStatic Model and Animation Model
![Page 12: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/12.jpg)
Set Light, Material, and Set Light, Material, and TextureTexture
• Light - light sourceLight - light sourceD3DLIGHT9 light;D3DLIGHT9 light;light.Type = D3DLIGHT_DIRECTIONAL;light.Type = D3DLIGHT_DIRECTIONAL;light.Ambient = D3DXCOLOR(0.8f, 0.8f, 0.8f, 1.0f);light.Ambient = D3DXCOLOR(0.8f, 0.8f, 0.8f, 1.0f);light.Diffuse = D3DXCOLOR(1.0f, 1.0f, 1.0f, 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.Specular = D3DXCOLOR(0.2f, 0.2f, 0.2f, 1.0f);light.Direction = D3DXVECTOR3(1.0f, -1.0f, 0.0f);light.Direction = D3DXVECTOR3(1.0f, -1.0f, 0.0f);
Demo 2-TexCube 3-TexCube 4-TexCube
![Page 13: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/13.jpg)
Set Light, Material, and Set Light, Material, and TextureTexture
• Material – reflection of light Material – reflection of light
{1.0, 1.0, 0.0, 1.0} {1.0, 0.0, 1.0, 1.0} {0.0, 1.0, 1.0, 1.0}Demo EffetEdit
![Page 14: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/14.jpg)
Set Light, Material, and Set Light, Material, and TextureTexture
• Texture – surface of 3D objectTexture – surface of 3D object
Demo 4-Tex 5-Tex
![Page 15: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/15.jpg)
Calculate World Matrix, View Calculate World Matrix, View Matrix , and Projection MatrixMatrix , and Projection Matrix
• World MatrixWorld Matrix– D3DXMatrixTranslation(…)D3DXMatrixTranslation(…)– D3DXMatrixRotationX(…)D3DXMatrixRotationX(…)– D3DXMatrixIdentity(…)D3DXMatrixIdentity(…)– D3DXMatrixScaling(…)D3DXMatrixScaling(…)
![Page 16: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/16.jpg)
Calculate World Matrix, View Calculate World Matrix, View Matrix , and Projection MatrixMatrix , and Projection Matrix
• View MatrixView Matrix– D3DXMatrixLookAtLH(&V, &position, D3DXMatrixLookAtLH(&V, &position,
&target, &up);&target, &up);
![Page 17: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/17.jpg)
Calculate World Matrix, View Calculate World Matrix, View Matrix , and Projection MatrixMatrix , and Projection Matrix
• Projection MatrixProjection MatrixD3DXMatrixPerspectiveFovLH();D3DXMatrixPerspectiveFovLH();
![Page 18: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/18.jpg)
Demo 7-TexCube 8-TexCube
![Page 19: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/19.jpg)
Render!!Render!!
• Prepare for renderPrepare for renderDevice->SetTransform(Device->SetTransform(D3DTS_VIEWD3DTS_VIEW, &V);, &V);
Device->SetTransform(Device->SetTransform(D3DTS_WORLDD3DTS_WORLD, &V);, &V);
Device->SetTransform(Device->SetTransform(D3DTS_PROJECTIOND3DTS_PROJECTION, &V);, &V);
• Start and Finish RenderStart and Finish RenderDevice->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffDevice->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xff
ffffff, 1.0f, 0);ffffff, 1.0f, 0);
Device->BeginScene();Device->BeginScene();
…………./* render render render !!!! */…../* render render render !!!! */….
Device->EndScene();Device->EndScene();
![Page 20: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/20.jpg)
Render !!Render !!
if( mtrl )if( mtrl )device->SetMaterial(mtrl);device->SetMaterial(mtrl);
if( tex )if( tex )device->SetTexture(0, tex);device->SetTexture(0, tex);
device->SetStreamSource(0, _vb, 0, sizedevice->SetStreamSource(0, _vb, 0, sizeof(Vertex));of(Vertex));device->SetIndices(_ib);device->SetIndices(_ib);device->SetFVF(FVF_VERTEX);device->SetFVF(FVF_VERTEX);device->DrawIndexedPrimitive(device->DrawIndexedPrimitive(
D3DPT_TRIANGLELIST, D3DPT_TRIANGLELIST, 0, 0, 0, 0, 24,24,0,0,12); 12);
Set MaterialSet Texture
Set Index Buffer
Tell D3D your vertex formatJust Draw It!!
![Page 21: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/21.jpg)
More SkillMore Skill
• Terrain – Height MapTerrain – Height Map• ShadowShadow• Other Algorithm…Other Algorithm…• Good website :Good website :
www.gamedev.netwww.gamedev.net
![Page 22: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/22.jpg)
SamplesSamples
• AirplaneAirplane• Walking ManWalking Man• BasicHLSLBasicHLSL • ShadowVolumeShadowVolume
• TerrainTerrain
![Page 23: 3D Programming and DirectX API. Content Mathematics Mathematics Prepare to Write a 3D program Prepare to Write a 3D program Program Structure Program.](https://reader035.fdocuments.in/reader035/viewer/2022062321/56649f295503460f94c42be7/html5/thumbnails/23.jpg)
Other Features in DirectX Other Features in DirectX LibraryLibrary
• DirectPlayDirectPlay– Network GameNetwork Game
• DirectSoundDirectSound– Handle sound effectHandle sound effect