1 / 20

Po čítačové hry a animace

Po čítačové hry a animace. Cvi čení 2. Osnova. Vstup od u živatele Myš Klávesnice Joystick Content pipeline Assety Content processory 3D Modely Import /Export Zobrazen í Transformace. Input – Klávesnice a Joystick. Namespace Microsoft.Xna.Framework.Input Stav

prince
Download Presentation

Po čítačové hry a animace

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 Modely • Import/Export • Zobrazení • Transformace

  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. Input – Myš • Game.IsMouseVisible = true • Pozice a tlačítka • Mouse.GetState() • X, Y • LeftButton, RightButton, …

  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. 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. 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. 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 Max

  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 Importersample na creators.xna.com

  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<Model> • Uložit transformace pro jednotlivé meshe • Matrix[] transforms = new Matrix[Model.Bones.Count]; • Model.CopyAbsoluteBoneTransformsTo(transforms);

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

  12. Rotace • Rotace • Matice • Matrix.CreateRotationX • Matrix.CreateRotationY • Matrix.CreateRotationZ

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

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

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

  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. Fixed function pipeline

  18. Progammable Pipeline

  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. Code 5 • Load • Content.Load<Model> • 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

More Related