1 / 31

XNA 4.0 Wprowadzenie do grafiki 3D

Jacek Matulewski (e-mail: jacek@fizyka.umk.pl ) ZMK, Instytut Fizyki, WFAiIS, UMK. XNA 4.0 Wprowadzenie do grafiki 3D. 28 stycznia 2012. Zapowiedź. Sentymentalne wspomnienia o historii grafiki 3D Kilka pojęć grafiki 3D: werteks, model Phonga, efekty Wprowadzenie do XNA

faris
Download Presentation

XNA 4.0 Wprowadzenie do grafiki 3D

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. Jacek Matulewski (e-mail: jacek@fizyka.umk.pl) ZMK, Instytut Fizyki, WFAiIS, UMK XNA 4.0Wprowadzenie do grafiki 3D 28 stycznia 2012

  2. Zapowiedź • Sentymentalne wspomnienia o historii grafiki 3D • Kilka pojęć grafiki 3D: werteks, model Phonga, efekty • Wprowadzenie do XNA • Co nowego w XNA 4.0?

  3. Historia grafiki • 1960s – projektowanie komp. (Boeing, Peugot, Renault) • 1970s – pojawiają się PC, pierwsze gry 2D, SIGGRAPH • 1980s – Amiga, gry 2D stają się powszechne, SGI (GL), Luxo Jr. (1986), Flight Simulator (1982-2006) • 1990s – OpenGL (1992), Wolfenstein 3-D (1992), Doom (1993), DirectX w Windows 95 (1994),Voodoo (1996), Quake (1996), Unreal (1998),Toy Story (1996) z Pixar (dawniej w IL&M) • 2000s – Shrek (2001) i inne => śmierć kreskówkiDirectX 9.0c (2004) => gry 3D są powszechne Managed DirectX (MDX, 2002), XNA (2006)

  4. Historia grafiki 1992, id Software

  5. Historia grafiki Quake (1996) Quake II (1997) Quake III Arena (1999) Quake 4 (2005) Źródło: http://www.club3d.nl/index.php/thema/subject/index/6

  6. Historia grafiki Tron (1982) – Disney Luxo, Jr (1986) – Pixar Toy Story (1996) – Pixar Shrek (2001) Dreamworks

  7. Grafika w nowej perspektywie

  8. XNA Idea 1: dostęp do Direct3D i DirectDraw z języków .NET Idea 2: przenośność (PC z Windows, Xbox 360, WP7, Zune) skupienie na grze, a nie na platformie sprzętowej Idea 3: pełne wykorzystanie obecnych kart graficznych (programowalne jednostki kart graficznych)

  9. Architektura XNA edytor, debuger, IntelliSense (IDE) Framework Matrix, Vector3 klasy opakow. DX GC, VC# wątki (TPL), IO DirectXGamepad Źródło: Mitch Walker, prezentacja na Gamefest 2008

  10. Prymitywy Podstawowe pojęcia grafiki 3D: • Prymityw – figura zbudowane z werteksów, dwustronna Prim..Type.TriangleList Pri..Type.TriangleStrip Prim..Type.TriangleFan PrimitiveType.PointList PrimitiveType.LineList PrimitiveType.LineStrip zbiór wierzchołków inna jest ilość werteksów używanych do narysowania linii i ciągu linii Brakuje czworokątów (quad) i wielokątów – trzeba je samodzielnie budować z trójkątów

  11. Aplikacja XNA Strumień werteksów Shader werteksów Współrzędne werteksów w układzie ekranu Kolor, normalne, współrzędne tekstury Rasteryzator Interpolator Shader pikseli Test bufora głębi Bufor ramki Monitor Potok Geometry shader? Strumieńpikseli

  12. Profile (XNA 4.0) Zbiór cech charakteryzujących karty graficzne, ich możliwości wyświetlania (nie ma już diagnostyki).Upraszcza tworzenie projektów przenaszalnychi na platformy o zunifikowanych specyfikacjach. poza WP7

  13. Efekt (klasa Effect i BasicEffect) Klasa reprezentująca Pixel i VertexShadery w kodzie C#. Dostęp do własności wyświetlania (GraphicDevice). Bez przygotowywania własnych shaderów można używać klasy BasicEffect (we wszystkich wersjach XNA): • macierze świata i widoku: własności World i View • macierz rzutowania: własność Projection • domyślne oświetlenie: DirectionalLight0-2, światło tła + efekt mgła (nie można zmieniać położenia źródeł św.) • teksturowanie: własność Texture

  14. Nowe efekty w XNA 4.0 • DualTextureEffect – nałożenie dwóch tekstur • EnvironmentMapEffect – mapowanie środowiskowena bazie kubicznej tekstury (użytej też do skyboxa).Dodatkowo: jej kanał alpha to obraz świateł rozbłysku. • AlphaTestEffect – kanał alfa używany jako „zamiennik” testu głębokości (raczej w 2D).Piksele nie są rysowane tam, gdzie A < ustalony próg • SkinnedEffect –rigging i skinning modeli • IEffectMatrices, IEffectLights (3), IEffectFog Wszystkie efekty są konfigurowalne (jak BasicEffect)

  15. EnvironmentMapEffect • Tekstura kubiczna http://blogs.msdn.com/b/shawnhar/archive/2010/08/09/environmentmapeffect.aspx

  16. EnvironmentMapEffect http://blogs.msdn.com/b/shawnhar/archive/2010/08/09/environmentmapeffect.aspx

  17. DualTextureEffect output.rgb = Texture1.rgb * Texture2.rgb * 2; output.a = Texture1.a * Texture2.a; http://blogs.msdn.com/b/shawnhar/archive/2010/08/04/dualtextureeffect.aspx

  18. Nowe efekty w XNA 4.0 Demo

  19. Wbudowane obiekty stanów Wcześniej umieszczone w GraphicsDevice(teraz nie można ich tam edytować) Wbudowane stany: • RasterizedState (por. nieistniejący już RenderState)odpowiada za potok renderowania (m.in. CullMode). • DepthStencilState – test głębokości i test szablonowy • BlendState – blending, mieszanie kolorów (przezrocz.) • SamplerState – reprezentuje próbnik (sampler) tekstury

  20. Konwersja z XNA 3.x do 4.0 • Typowa postać metody Draw (XNA 3.0) protected override void Draw(GameTime gameTime) { GraphicsDevice gd = graphics.GraphicsDevice; gd.Clear(Color.Black); gd.RenderState.CullMode=CullMode.None; gd.Vertices[0].SetSource(buforWerteksowTrojkata,0,VertexPositionColor.SizeInBytes); gd.VertexDeclaration = new VertexDeclaration(gd, VertexPositionColor.VertexElements); efekt.Begin(); foreach (EffectPass pass in efekt.CurrentTechnique.Passes) { pass.Begin(); gd.DrawPrimitives(PrimitiveType.TriangleList, 0, 1); pass.End(); } efekt.End(); base.Draw(gameTime); } pass.Apply(); gd.RasterizerState = RasterizerState.CullNone; gd.SetVertexBuffer(buforWerteksowTrojkata);

  21. Transformacje Podstawowe pojęcia grafiki 3D: • Transformacje – określane we współrzędnych sceny 3Dtranslacja (Matrix.CreateTranslation, macierz 4x4!), obrót (Matrix.CreateRotationXYZ, z osi obrotu i kąta, yaw+pitch+roll, klasa Quaternion)skalowanie (Matrix.CreateScale), pochyleniezłożenie – dowolna macierz 4x4 (Matrix.Multiply) • Rozdzielenie macierzy świata i widoku (wygoda!) • Transformacje są wykonywane „od końca”(post-multiplication)

  22. Transformacje • We współrzędnych kartezjańskich (2D) obrót i translacja mogą być zapisane: • We współrzędnych jednorodnych: Wprowadzone w 1946 przez E. Maxwella (rzutowanie). W 1965 L. Roberts użył ich do zunifikowania zapisu wszystkich transformacji: obrotów, translacji, skalowanie i pochylania + rzutowania.

  23. Światło (cieniowanie) Fizyczny model oświetlenia – na efekt końcowy (tj. kolor piksela) wpływają „własności emisyjne” źródła światła, „własności absorpcyjne” materiału, który jest oświetlany i własności ewentualnych ciał półprzezroczystych + + = • Typy źródeł oświetlenia: • Światło otoczenia (ambient) – bez źródła i kierunku – rozświetla jednorodnie całą scenę, także wewnątrz figur) – nie daje cieni na obiekcie (nie ma złudzenia 3D) • Typy źródeł oświetlenia: • Światło otoczenia (ambient) • Rozproszone (diffuse) – posiada źródło, ale jest jednorodne we wszystkich kierunkach • Generalnie: Jasność proporcjonalna do kosinusa kąta padania (normalna) • Typy źródeł oświetlenia: • Światło otoczenia (ambient) • Rozproszone (diffuse) • Rozbłysk (specular) – źródło i kierunek • reflektor, efekt „zajączka” – rozbłysku na gładkich pow. • Typy źródeł oświetlenia: • Światło otoczenia (ambient) – światło słoneczne w białym pomieszczeniu • Rozproszone (diffuse) – mleczna żarówka, świeca • Rozbłysk (specular) – reflektor, odbicie od lustra • Dla każdego typu parametry materiału ustalane są osobno

  24. Model oświetlenia Phonga + + = • Opracowany w 1975 przez Phong Bui-Tuonga • Jest jedynie zgrubnym przybliżeniem praw optyki • Zakłada trzy niezależne komponenty odbitego światła • Światło rozproszone – prawo Lamberta (1760) • Model cieniowania Phonga (coś innego niż model ośw.) = interpolacja normalnych (uśrednianie normalnych)

  25. Model oświetlenia Phonga + + = • W XNA i Direct3D model Phonga jest uzupełniony o światło emisji (emission) • Imitacja źródła światła (jednak nie oświetla innych aktorów na scenie!) • Realizowane podobnie jak światło otoczenia

  26. Model oświetlenia Phonga Demo

  27. Czego potrzebujemy… • Karta graficzna zgodna z DirectX 9.0/10.0 (Shader 2.0) • Visual Studio 2010 lub Visual C# 2010 Express • Platforma .NET 4.0 (instalowana razem z VS/VC#) • Windows Phone 7 Developer Tools zawiera XNA 4.0 • XNA Game Studio 4.0 • NVidia FX Composer 2.5 – narzędzie bardzo pomocnedo programowania shaderów

  28. Czego nie musimy… • Znać algorytmów cieniowania (shading), chyba, że programujemy procesory strumieniowe • Zajmować się algorytmami kreślenia linii z pikseli • (programowaniem antyaliasingu, itp.) • Algorytmy optymalnego rysowania trójkątów, • zapełniania wielokątów, rysowania krzywych • Usuwać niewidocznych na scenie werteksów, • powierzchni przesłoniętych przez innych aktorów To robią karty graficzne i biblioteka XNA!

  29. Nie musimy także… • Znać algebry wektorów i macierzy (Vector34, Matrix)(w tym macierz translacji, obrotu, rzutowania itd.) • Tworzyć pętli głównej, dbać o timery inicjującerenderowanie sceny i „odświeżanie” logiki aplikacji • Wiedzieć, czym są współrzędne jednorodne, w których pracują karty graficzne • Obsługiwać sterowników urządzeń wejścia (sterowników gier) i wyjścia (karty dźwiękowej) To robią biblioteki platformy XNA!

  30. Co musimy zrobić sami… • Cienie rzucane na podłoże i inne przedmioty rzutowanie cieni, shadow mapping, volumetric shadows • Fizyka: rozwiązywanie równań ruchu, detekcja kolizji są biblioteki komercyjne i rozwiązania sprzętowe (GPU) • Wszelkie odstępstwa od domyślnego oświetleniai teksturowania wymagają programowania shaderów(w tym już zmiana pozycji źródeł światła) • Programowanie logiki w C# 4.0Zaplecze w XNA 4.0: .NET Framework 4.0 (TPL)

  31. XNA 4.0 + .NET 4.0 • Ciekawe nowości w .NET 4.0: • TPL (Parallel Extensions)np. zrównoleglenie silnika fizyki • MEF – zarządzanie wtyczkami (plugins) • System.Numerics.Complex, BigInteger • Lazy<>, argumenty domyślne • Dynamic (DLR)

More Related