SlideShare une entreprise Scribd logo
1  sur  36
Tipy a triky
pro vývoj her v XNA




Tomáš Slavíček
MVP XNA/DirectX, MS Student Partner



   @tomasslavicek     http://tomasslavicek.cz
Agenda
• rychlejší načítání textur
• vykreslování ze SpriteSheetů
• renderování do textury
• 3D snadno a rychle
• kamery
• „vektorové“ kreslení

• struktura herního engine
Rychlé opakování XNA
• herní smyčka, Content Pipeline,
  SpriteBatch, SpriteFont…
XNA – situace



 •   desktop PC        •   Windows 8 / RT
 •   Xbox 360          •   Windows Phone 8
 •   Windows Phone 7   •   PS Vita
 •   přehrávače Zune   •   Android
                       •   iOS, Mac…
                       •   Linux…
Zdroje o XNA
• rozcestník na SmartMania.cz
  http://bit.ly/xna_smartmania
Další literatura
•   XNA 3.0 Game Programming Recipes, Riemer
    Grootjans
    http://amzn.to/T9rUn8

•   3D Graphics with XNA Game Studio 4.0, Sean James
    http://amzn.to/QDw8Ir

•   Moderní počítačová grafika, Jiří Žára a kol.
    http://bit.ly/modernigrafika
1/3
Rychlejší načítání textur
• pomocí Content Pipeline
   • převod do .xnb
   • bez komprese, pokud není velikost ^2
     = větší velikost, delší načítání

• nebo přes Stream
   • obrázky přímo kopírovány do /bin
2/3
Příklad: načítání textur
• 50 kB PNG obrázek, 800x480 px
     • převedeno Content Pipeline: 1.5 MB

• 6 obrázků, na Windows Phone:
     • pomocí Content Pipeline: 3000 ms!
     • přes Stream: 550 ms
     • velikost ^2, s Dxt kompresí: 450 ms


zdroj: http://jakepoz.com/jake_poznanski__speeding_up_xna.html
3/3
Rychlejší načítání textur
• BuildAction: none, Copy: if newer
• pomocná komponenta Operations
  • premultiplied alpha!

Texture2D file = null;
using (Stream s = TitleContainer.OpenStream(fileName))
{
      file = Texture2D.FromStream(device, s);
}
1/3
Tiled grafika
• jeden obrázek = SpriteSheet
• hra se skládá z výřezů
   • proč?
2/3
Tiled grafika
• jeden obrázek = SpriteSheet
• hra se skládá z výřezů
   • optimalizace rychlosti vykreslování
3/3
Tiled grafika
• Tiled editor       mapeditor.org
• SpriteSheet packer
  spritesheetpacker.codeplex.com
1/2
Vykreslování do textury
• příklady:
  • generování grafiky za běhu
  • vlastní SpriteSheet packer? 
  • WP7: vykreslení Live tile,
          uložení screenshotu…
2/2
Vykreslování do textury
• XNA 4.0: RenderTarget2D ≅ Texture2D
  • lze přesměrovat vykreslování

RenderTarget2D texture =
      new RenderTarget2D(device, size.X, size.Y);
device.SetRenderTarget(texture);
device.Clear(Color.White);
spriteBatch.Begin();

spriteBatch.End();
device.SetRenderTarget(null);
return texture;
1/2
Zrcadlové převrácení
• jak vykreslit celou hru zrcadlově
  převráceně?

• např. podpora psaní zprava doleva
  v aplikaci na zápisky
2/2
Zrcadlové převrácení
• odpověď:
  • vykreslit vše do jiné textury
  • předat parametr SpriteEffects.FlipHorizontally


spriteBatch.Draw(texture, rectangle, null,
      Color.White, 0f, Vector2.Zero,
      SpriteEffects.FlipHorizontally, 0f);
Zakázání vyhlazování
• nastavení spriteBatch.Begin()
  • parametr SamplerState.PointClamp

spriteBatch.Begin(SpriteSortMode.FrontToBack,
      BlendState.AlphaBlend, SamplerState.PointClamp,
      null, null);
Intermezzo: otázky?
• než se přesuneme ke 3D
Od 2D ke 3D
              x       y




y                         x

                  z
3D grafika
• objekty jsou ve světových souřadnicích
  •   = náš virtuální svět
  •   díváme se na něj kamerou
Typy kamer
• podle pohledu:
  • shora, našikmo, zboku, izometrická…
  • FPS střílečka, strategie…

• podle projekce:
  • perspektivní, ortografická
1/2
Vlastnosti kamer
• pozice, směr pohledu, orientace nahoru…
• blízká a vzdálená ořezová rovina




zdroj: http://db-in.com/blog/2011/04/cameras-on-opengl-es-2-x
2/2
Vlastnosti kamer
• view matrix, projection matrix




zdroj: http://robertokoci.com/world-view-projection-matrix-unveiled/
Vlastnosti každého objektu
• pozice, otočení, zkosení…
• -> world matrix

final = world * view * projection


world = scale * shear * rotation * translation



                                       násobení matic
1/3
Ukázka: jednoduchá kamera
• obecný interface ICamera
interface ICamera
{
    Matrix ViewMatrix { get; }
    Matrix ProjectionMatrix { get; }

    void Initialize();
    void ChangeOrientation(DisplayOrientation orient);
}
2/3
Ukázka: jednoduchá kamera
• nastavení pohledu
viewMatrix = Matrix.CreateLookAt(position,
      position + targetDirection, upVector);



• nastavení projekce
projectionMatrix =
      Matrix.CreatePerspectiveFieldOfView(
            MathHelper.PiOver4,
            device.Viewport.AspectRatio,
            nearPlaneDistance, farPlaneDistance);
3/3
Ukázka: jednoduchá kamera
• viewMatrix = směr
  • nastavit na začátku
  • vždy při změně pozice/směru


• projectionMatrix = zkreslení
  • na začátku
  • při změně orientace displeje / pohledu
Ukázka: objekt pro modely
• načtení modelu: Content Pipeline
• parametry:
  • pozice, otočení…  world matrix

  • osvětlení, průhlednost
    vržený stín…
  • bounding sphere / box
  • ID…
1/2
Screen2DCamera
• skládání geometrie z vertexů a indexů
• 3D kamera jakoby „2D“
2/2
Screen2DCamera
• osa X, Y odpovídá X, Y na obrazovce
• osa Z = hloubka (který objekt je před / za)

viewMatrix = Matrix.Identity;


projectionMatrix =
      Matrix.CreateOrthographicOffCenter(
            0.5f, (float)width - 0.5f,
            (float)height - 0.5f, 0.5f,
            -1000f, 1000f);
1/2
„Vektorové kreslení“
• můžeme objekt poskládat z trojúhelníků
• vertexy, indexy
2/2
„Vektorové kreslení“
• typy:
  • VertexPositionColor
  • VertexPositionNormalTexture …

• vykreslování:
  • DrawPrimitives
  • DrawIndexedPrimitives
  • DrawUserIndexedPrimitives …
Další CZ zdroje ke 3D
•   Seriál na CzechGamer.com, projít si přiložené soubory
    http://bit.ly/V5iJ7x

•   Skládání transformací – záznam semináře
    http://youtu.be/KfGF5-7vydU

•   Moje bakalářka – 3D engine
    http://bit.ly/Svv5Hi

•   Seriál na vbnet.cz (T. Herceg)
    http://www.vbnet.cz/kategorie--16.aspx
Ukázka: 3D engine
Další akce - seminář
• Vývoj her pro Win8 a WP7,
  multiplayer pomocí Windows Azure

  10. prosince 2012, T. Slavíček, T. Herceg
  http://gds2012.ceske-hry.cz/
Děkuji za pozornost!




Tomáš Slavíček
MVP XNA/DirectX, MS Student Partner



   @tomasslavicek     http://tomasslavicek.cz

Contenu connexe

Similaire à Tipy a triky pro vývoj her v XNA (MS Fest)

Rozdeľte veľké územie a mapujte menšie časti. Čo sa deje na strane servera?
Rozdeľte veľké územie a mapujte menšie časti. Čo sa deje na strane servera?Rozdeľte veľké územie a mapujte menšie časti. Čo sa deje na strane servera?
Rozdeľte veľké územie a mapujte menšie časti. Čo sa deje na strane servera?Geokomunita
 
Hands-on-lab Vyvíjíme hry v XNA pro WP7.5
Hands-on-lab Vyvíjíme hry v XNA pro WP7.5Hands-on-lab Vyvíjíme hry v XNA pro WP7.5
Hands-on-lab Vyvíjíme hry v XNA pro WP7.5Tomáš Slavíček
 
Jak zkrotit rastry - 1. díl (Radek Kuttelwascher)
Jak zkrotit rastry - 1. díl (Radek Kuttelwascher)Jak zkrotit rastry - 1. díl (Radek Kuttelwascher)
Jak zkrotit rastry - 1. díl (Radek Kuttelwascher)Jan Novotný
 
Prototypování webových aplikací
Prototypování webových aplikacíPrototypování webových aplikací
Prototypování webových aplikacíJakub Španihel
 
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Kuba Břečka
 
Dagmar Chytková: Grafické obohacení výukových materiálů
Dagmar Chytková: Grafické obohacení výukových materiálůDagmar Chytková: Grafické obohacení výukových materiálů
Dagmar Chytková: Grafické obohacení výukových materiálůKISK FF MU
 
Vyvíjíme hry v XNA pro Windows Phone – Seminář 1
Vyvíjíme hry v XNA pro Windows Phone – Seminář 1Vyvíjíme hry v XNA pro Windows Phone – Seminář 1
Vyvíjíme hry v XNA pro Windows Phone – Seminář 1Tomáš Slavíček
 
Replikace Oracle
Replikace OracleReplikace Oracle
Replikace OracleJan Drozen
 

Similaire à Tipy a triky pro vývoj her v XNA (MS Fest) (14)

Rozdeľte veľké územie a mapujte menšie časti. Čo sa deje na strane servera?
Rozdeľte veľké územie a mapujte menšie časti. Čo sa deje na strane servera?Rozdeľte veľké územie a mapujte menšie časti. Čo sa deje na strane servera?
Rozdeľte veľké územie a mapujte menšie časti. Čo sa deje na strane servera?
 
Hands-on-lab Vyvíjíme hry v XNA pro WP7.5
Hands-on-lab Vyvíjíme hry v XNA pro WP7.5Hands-on-lab Vyvíjíme hry v XNA pro WP7.5
Hands-on-lab Vyvíjíme hry v XNA pro WP7.5
 
2 prz
 2 prz 2 prz
2 prz
 
Jak zkrotit rastry - 1. díl (Radek Kuttelwascher)
Jak zkrotit rastry - 1. díl (Radek Kuttelwascher)Jak zkrotit rastry - 1. díl (Radek Kuttelwascher)
Jak zkrotit rastry - 1. díl (Radek Kuttelwascher)
 
Prototypování webových aplikací
Prototypování webových aplikacíPrototypování webových aplikací
Prototypování webových aplikací
 
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
 
TNPW2-2016-03
TNPW2-2016-03TNPW2-2016-03
TNPW2-2016-03
 
App Engine Kick Start
App Engine Kick StartApp Engine Kick Start
App Engine Kick Start
 
Dagmar Chytková: Grafické obohacení výukových materiálů
Dagmar Chytková: Grafické obohacení výukových materiálůDagmar Chytková: Grafické obohacení výukových materiálů
Dagmar Chytková: Grafické obohacení výukových materiálů
 
Vyvíjíme hry v XNA pro Windows Phone – Seminář 1
Vyvíjíme hry v XNA pro Windows Phone – Seminář 1Vyvíjíme hry v XNA pro Windows Phone – Seminář 1
Vyvíjíme hry v XNA pro Windows Phone – Seminář 1
 
Replikace Oracle
Replikace OracleReplikace Oracle
Replikace Oracle
 
Java 2D a kreslení
Java 2D a kresleníJava 2D a kreslení
Java 2D a kreslení
 
TNPW2-2012-03
TNPW2-2012-03TNPW2-2012-03
TNPW2-2012-03
 
3D svet - Flash a HTML5
3D svet - Flash a HTML53D svet - Flash a HTML5
3D svet - Flash a HTML5
 

Plus de Tomáš Slavíček

Jak prodávat a propagovat mobilní aplikaci
Jak prodávat a propagovat mobilní aplikaciJak prodávat a propagovat mobilní aplikaci
Jak prodávat a propagovat mobilní aplikaciTomáš Slavíček
 
UX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš Slavíček
UX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš SlavíčekUX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš Slavíček
UX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš SlavíčekTomáš Slavíček
 
UX Monday: Easy Phone - telefon pro seniory, Tomáš Slavíček
UX Monday: Easy Phone - telefon pro seniory, Tomáš SlavíčekUX Monday: Easy Phone - telefon pro seniory, Tomáš Slavíček
UX Monday: Easy Phone - telefon pro seniory, Tomáš SlavíčekTomáš Slavíček
 
GDS 2013: MonoGame pro Android a iOS, tipy a triky
GDS 2013: MonoGame pro Android a iOS, tipy a trikyGDS 2013: MonoGame pro Android a iOS, tipy a triky
GDS 2013: MonoGame pro Android a iOS, tipy a trikyTomáš Slavíček
 
Fotografické API a rozšířená realita pro Windows Phone
Fotografické API a rozšířená realita pro Windows PhoneFotografické API a rozšířená realita pro Windows Phone
Fotografické API a rozšířená realita pro Windows PhoneTomáš Slavíček
 
MS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a Android
MS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a AndroidMS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a Android
MS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a AndroidTomáš Slavíček
 
[cz] MonoGame framework, mDevCamp 2013
[cz] MonoGame framework, mDevCamp 2013[cz] MonoGame framework, mDevCamp 2013
[cz] MonoGame framework, mDevCamp 2013Tomáš Slavíček
 
For Mobile 6/2012: Vývoj her pro Windows Phone
For Mobile 6/2012: Vývoj her pro Windows PhoneFor Mobile 6/2012: Vývoj her pro Windows Phone
For Mobile 6/2012: Vývoj her pro Windows PhoneTomáš Slavíček
 
Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone
Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone
Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone Tomáš Slavíček
 
Vyvíjíme hry v XNA pro Windows Phone 7.5
Vyvíjíme hry v XNA pro Windows Phone 7.5Vyvíjíme hry v XNA pro Windows Phone 7.5
Vyvíjíme hry v XNA pro Windows Phone 7.5Tomáš Slavíček
 
Programování her v XNA pro Windows Phone 7
Programování her v XNA pro Windows Phone 7Programování her v XNA pro Windows Phone 7
Programování her v XNA pro Windows Phone 7Tomáš Slavíček
 

Plus de Tomáš Slavíček (12)

Jak prodávat a propagovat mobilní aplikaci
Jak prodávat a propagovat mobilní aplikaciJak prodávat a propagovat mobilní aplikaci
Jak prodávat a propagovat mobilní aplikaci
 
UX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš Slavíček
UX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš SlavíčekUX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš Slavíček
UX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš Slavíček
 
UX Monday: Easy Phone - telefon pro seniory, Tomáš Slavíček
UX Monday: Easy Phone - telefon pro seniory, Tomáš SlavíčekUX Monday: Easy Phone - telefon pro seniory, Tomáš Slavíček
UX Monday: Easy Phone - telefon pro seniory, Tomáš Slavíček
 
Easy phone
Easy phoneEasy phone
Easy phone
 
GDS 2013: MonoGame pro Android a iOS, tipy a triky
GDS 2013: MonoGame pro Android a iOS, tipy a trikyGDS 2013: MonoGame pro Android a iOS, tipy a triky
GDS 2013: MonoGame pro Android a iOS, tipy a triky
 
Fotografické API a rozšířená realita pro Windows Phone
Fotografické API a rozšířená realita pro Windows PhoneFotografické API a rozšířená realita pro Windows Phone
Fotografické API a rozšířená realita pro Windows Phone
 
MS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a Android
MS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a AndroidMS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a Android
MS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a Android
 
[cz] MonoGame framework, mDevCamp 2013
[cz] MonoGame framework, mDevCamp 2013[cz] MonoGame framework, mDevCamp 2013
[cz] MonoGame framework, mDevCamp 2013
 
For Mobile 6/2012: Vývoj her pro Windows Phone
For Mobile 6/2012: Vývoj her pro Windows PhoneFor Mobile 6/2012: Vývoj her pro Windows Phone
For Mobile 6/2012: Vývoj her pro Windows Phone
 
Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone
Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone
Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone
 
Vyvíjíme hry v XNA pro Windows Phone 7.5
Vyvíjíme hry v XNA pro Windows Phone 7.5Vyvíjíme hry v XNA pro Windows Phone 7.5
Vyvíjíme hry v XNA pro Windows Phone 7.5
 
Programování her v XNA pro Windows Phone 7
Programování her v XNA pro Windows Phone 7Programování her v XNA pro Windows Phone 7
Programování her v XNA pro Windows Phone 7
 

Tipy a triky pro vývoj her v XNA (MS Fest)

  • 1. Tipy a triky pro vývoj her v XNA Tomáš Slavíček MVP XNA/DirectX, MS Student Partner @tomasslavicek http://tomasslavicek.cz
  • 2. Agenda • rychlejší načítání textur • vykreslování ze SpriteSheetů • renderování do textury • 3D snadno a rychle • kamery • „vektorové“ kreslení • struktura herního engine
  • 3. Rychlé opakování XNA • herní smyčka, Content Pipeline, SpriteBatch, SpriteFont…
  • 4. XNA – situace • desktop PC • Windows 8 / RT • Xbox 360 • Windows Phone 8 • Windows Phone 7 • PS Vita • přehrávače Zune • Android • iOS, Mac… • Linux…
  • 5. Zdroje o XNA • rozcestník na SmartMania.cz http://bit.ly/xna_smartmania
  • 6. Další literatura • XNA 3.0 Game Programming Recipes, Riemer Grootjans http://amzn.to/T9rUn8 • 3D Graphics with XNA Game Studio 4.0, Sean James http://amzn.to/QDw8Ir • Moderní počítačová grafika, Jiří Žára a kol. http://bit.ly/modernigrafika
  • 7. 1/3 Rychlejší načítání textur • pomocí Content Pipeline • převod do .xnb • bez komprese, pokud není velikost ^2 = větší velikost, delší načítání • nebo přes Stream • obrázky přímo kopírovány do /bin
  • 8. 2/3 Příklad: načítání textur • 50 kB PNG obrázek, 800x480 px • převedeno Content Pipeline: 1.5 MB • 6 obrázků, na Windows Phone: • pomocí Content Pipeline: 3000 ms! • přes Stream: 550 ms • velikost ^2, s Dxt kompresí: 450 ms zdroj: http://jakepoz.com/jake_poznanski__speeding_up_xna.html
  • 9. 3/3 Rychlejší načítání textur • BuildAction: none, Copy: if newer • pomocná komponenta Operations • premultiplied alpha! Texture2D file = null; using (Stream s = TitleContainer.OpenStream(fileName)) { file = Texture2D.FromStream(device, s); }
  • 10. 1/3 Tiled grafika • jeden obrázek = SpriteSheet • hra se skládá z výřezů • proč?
  • 11. 2/3 Tiled grafika • jeden obrázek = SpriteSheet • hra se skládá z výřezů • optimalizace rychlosti vykreslování
  • 12. 3/3 Tiled grafika • Tiled editor mapeditor.org • SpriteSheet packer spritesheetpacker.codeplex.com
  • 13. 1/2 Vykreslování do textury • příklady: • generování grafiky za běhu • vlastní SpriteSheet packer?  • WP7: vykreslení Live tile, uložení screenshotu…
  • 14. 2/2 Vykreslování do textury • XNA 4.0: RenderTarget2D ≅ Texture2D • lze přesměrovat vykreslování RenderTarget2D texture = new RenderTarget2D(device, size.X, size.Y); device.SetRenderTarget(texture); device.Clear(Color.White); spriteBatch.Begin(); spriteBatch.End(); device.SetRenderTarget(null); return texture;
  • 15. 1/2 Zrcadlové převrácení • jak vykreslit celou hru zrcadlově převráceně? • např. podpora psaní zprava doleva v aplikaci na zápisky
  • 16. 2/2 Zrcadlové převrácení • odpověď: • vykreslit vše do jiné textury • předat parametr SpriteEffects.FlipHorizontally spriteBatch.Draw(texture, rectangle, null, Color.White, 0f, Vector2.Zero, SpriteEffects.FlipHorizontally, 0f);
  • 17. Zakázání vyhlazování • nastavení spriteBatch.Begin() • parametr SamplerState.PointClamp spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, SamplerState.PointClamp, null, null);
  • 18. Intermezzo: otázky? • než se přesuneme ke 3D
  • 19. Od 2D ke 3D x y y x z
  • 20. 3D grafika • objekty jsou ve světových souřadnicích • = náš virtuální svět • díváme se na něj kamerou
  • 21. Typy kamer • podle pohledu: • shora, našikmo, zboku, izometrická… • FPS střílečka, strategie… • podle projekce: • perspektivní, ortografická
  • 22. 1/2 Vlastnosti kamer • pozice, směr pohledu, orientace nahoru… • blízká a vzdálená ořezová rovina zdroj: http://db-in.com/blog/2011/04/cameras-on-opengl-es-2-x
  • 23. 2/2 Vlastnosti kamer • view matrix, projection matrix zdroj: http://robertokoci.com/world-view-projection-matrix-unveiled/
  • 24. Vlastnosti každého objektu • pozice, otočení, zkosení… • -> world matrix final = world * view * projection world = scale * shear * rotation * translation násobení matic
  • 25. 1/3 Ukázka: jednoduchá kamera • obecný interface ICamera interface ICamera { Matrix ViewMatrix { get; } Matrix ProjectionMatrix { get; } void Initialize(); void ChangeOrientation(DisplayOrientation orient); }
  • 26. 2/3 Ukázka: jednoduchá kamera • nastavení pohledu viewMatrix = Matrix.CreateLookAt(position, position + targetDirection, upVector); • nastavení projekce projectionMatrix = Matrix.CreatePerspectiveFieldOfView( MathHelper.PiOver4, device.Viewport.AspectRatio, nearPlaneDistance, farPlaneDistance);
  • 27. 3/3 Ukázka: jednoduchá kamera • viewMatrix = směr • nastavit na začátku • vždy při změně pozice/směru • projectionMatrix = zkreslení • na začátku • při změně orientace displeje / pohledu
  • 28. Ukázka: objekt pro modely • načtení modelu: Content Pipeline • parametry: • pozice, otočení…  world matrix • osvětlení, průhlednost vržený stín… • bounding sphere / box • ID…
  • 29. 1/2 Screen2DCamera • skládání geometrie z vertexů a indexů • 3D kamera jakoby „2D“
  • 30. 2/2 Screen2DCamera • osa X, Y odpovídá X, Y na obrazovce • osa Z = hloubka (který objekt je před / za) viewMatrix = Matrix.Identity; projectionMatrix = Matrix.CreateOrthographicOffCenter( 0.5f, (float)width - 0.5f, (float)height - 0.5f, 0.5f, -1000f, 1000f);
  • 31. 1/2 „Vektorové kreslení“ • můžeme objekt poskládat z trojúhelníků • vertexy, indexy
  • 32. 2/2 „Vektorové kreslení“ • typy: • VertexPositionColor • VertexPositionNormalTexture … • vykreslování: • DrawPrimitives • DrawIndexedPrimitives • DrawUserIndexedPrimitives …
  • 33. Další CZ zdroje ke 3D • Seriál na CzechGamer.com, projít si přiložené soubory http://bit.ly/V5iJ7x • Skládání transformací – záznam semináře http://youtu.be/KfGF5-7vydU • Moje bakalářka – 3D engine http://bit.ly/Svv5Hi • Seriál na vbnet.cz (T. Herceg) http://www.vbnet.cz/kategorie--16.aspx
  • 35. Další akce - seminář • Vývoj her pro Win8 a WP7, multiplayer pomocí Windows Azure 10. prosince 2012, T. Slavíček, T. Herceg http://gds2012.ceske-hry.cz/
  • 36. Děkuji za pozornost! Tomáš Slavíček MVP XNA/DirectX, MS Student Partner @tomasslavicek http://tomasslavicek.cz