Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilMax Kadlec
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
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.