Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Počítačové hry a animace Cvičení 2. (2) Osnova Vstup od uživatele – –Myš – –Klávesnice – –Joystick Content pipeline – –Assety – –Content processory 3D.

Podobné prezentace


Prezentace na téma: "Počítačové hry a animace Cvičení 2. (2) Osnova Vstup od uživatele – –Myš – –Klávesnice – –Joystick Content pipeline – –Assety – –Content processory 3D."— Transkript prezentace:

1 Počítačové hry a animace Cvičení 2

2 (2) Osnova Vstup od uživatele – –Myš – –Klávesnice – –Joystick Content pipeline – –Assety – –Content processory 3D Modely – –Import/Export – –Zobrazení – –Transformace

3 (3) Input – Klávesnice a Joystick Namespace – –Microsoft.Xna.Framework.Input Stav – –Keyboard.GetState( PlayerIndex ) – –GamePad.GetState( PlayerIndex ) Držet si předchozí a aktuální stav – –Ukládat do KeyboardState a GamePadState – –Konstanty pro tlačítka v Keys a Buttons Stavy – –New press – –Pressed – –New release – –Released Code 1: Klávesnice – –Pohyb spritem pomocí šipek na klávesnici ve ctyřech směrech – –Pomocí stavu „New press“ přidaného do IsKeyState měnit text ON na OFF a zpět při stisknutí Enter

4 (4) Input – Myš Game.IsMouseVisible = true Pozice a tlačítka – –Mouse.GetState() X, Y LeftButton, RightButton, …

5 (5) Input - Kurzor Kurzor bude DrawableGameComponent – –Update načte stav myši (Mouse.GetState) – –Draw vykreslí kurzor na pozici SpriteBatch CustomCursor.cs Zaregistrovat v konstruktoru Game – –Components.Add(new Class(this)); Code 2: Přidat custom kurzor

6 (6) Input – Joystick Mouse Emulace myši přes thumb stick GamePad.GetState(padIndex) gamePadState.ThumbSticks.Left.X gamePadState.ThumbSticks.Left.Y Na rozdíl od myši jen přidáváme Zpomalení/zrychlení na triggeru

7 (7) Content Pipeline Kompilace do assetu pomocí – –Content importerů Konverze do XNA nativních DOM pro content processor – –Content procesorů Zkompiluje do managed code objectu k přímému použití v XNA

8 (8) Content Pipeline II Importéry pro 3D modely – –Autodesk.FBX – –DirectX.X Export FBX – –Maya – Nutno zapnout v pluginech – –Max – Přímo Export X – –http://www.kwxport.org/ pro Maxhttp://www.kwxport.org/

9 (9) Custom Content Importer Můžeme si napsat vlastní – –Namespace Microsoft.Xna.Framework.Content.Pipeline Content Pipeline Extension Library Přetížit fci Import MeshBuilder – –Pomocná třída pro načtení a uložení jednoho meshe Code …. No, to by bylo do rána.. Takže např. Custom Model Importer sample na creators.xna.com

10 (10) Načtení 3D modelů Načtení – –Přidat.FBX nebo.X do Contentu – –Nečtvercové textury jsou problém V nastavení content processoru nastavit „Resize Textures to Power of Two“ – –Načíst pomocí Content.Load – –Uložit transformace pro jednotlivé meshe Matrix[] transforms = new Matrix[Model.Bones.Count]; Model.CopyAbsoluteBoneTransformsTo(transforms);

11 (11) Transformace Homogenní koordináty – –R n => n + 1 Affiní transformace reprezentovány jako maticové operace – –Rotation – –Scale (Shear) – –Translation

12 (12) Rotace – –Matice Matrix.CreateRotationX Matrix.CreateRotationY Matrix.CreateRotationZ

13 (13) Scale – –Škálování daným faktorem – –Matrix.CreateScale Shear – –Zkosení daným faktorem

14 (14) Translace Není lineární transformací – –A => A + t Matrix.CreateTranslation

15 (15) Quaterniony CreateFromRotationMatrix CreateFromYawPitchRoll CreateFromAxisAngle Interpolace - Slerp, Lerp Matrix.CreateFromQuaternion!

16 (16) Zobrazení 3D modelu Pro každý mesh – –Pro každý effect/shader Nastavíme parametry – –Vykreslíme – –Matrix[] transforms = new Matrix[Model.Bones.Count]; – –Model.CopyAbsoluteBoneTransformsTo(transforms); – –foreach (ModelMesh mesh in model.Meshes) – –{ foreach(BasicEffect effect in mesh.Effects) { effect.EnableDefaultLighting(); effect.World = transforms[mesh.ParentBone.Index] * world; effect.View = view; effect.Projection = projection; } – – – –mesh.Draw(); – –}

17 (17) Fixed function pipeline

18 (18) Progammable Pipeline

19 (19) Nastavení matic View – –Matrix.CreateLookAt(odkud, kam, up vektor) World – –Matrix.Identity – –Matrix.CreateScale( scale ); Projection – –Viewport viewport = graphics.GraphicsDevice.Viewport; – –float aspectRatio = (float)viewport.Width / (float)viewport.Height; – –Matrix.CreatePerspectiveFieldOfView(úhel, poměr, near plane, far plane);

20 (20) Code 5 Load – –Content.Load – –Matrix[] transforms = new Matrix[Model.Bones.Count]; – –Model.CopyAbsoluteBoneTransformsTo(transforms); Nastavení matic – –Matrix.CreateLookAt(okud, kam, up vektor) – –Matrix.Identity – –Matrix.CreatePerspectiveFieldOfView(úhel, poměr, near plane, far plane); Vykreslení – –foreach (ModelMesh mesh in model.Meshes) – –foreach(BasicEffect effect in mesh.Effects) – –effect.World = transforms[mesh.ParentBone.Index] * world; Code 3: Načtěte a vykreslete 3D model


Stáhnout ppt "Počítačové hry a animace Cvičení 2. (2) Osnova Vstup od uživatele – –Myš – –Klávesnice – –Joystick Content pipeline – –Assety – –Content processory 3D."

Podobné prezentace


Reklamy Google