Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

XNA 4.0 Wprowadzenie do grafiki 3D Jacek Matulewski ( ZMK, Instytut Fizyki, WFAiIS, UMK 28 stycznia 2012.

Podobne prezentacje


Prezentacja na temat: "XNA 4.0 Wprowadzenie do grafiki 3D Jacek Matulewski ( ZMK, Instytut Fizyki, WFAiIS, UMK 28 stycznia 2012."— Zapis prezentacji:

1 XNA 4.0 Wprowadzenie do grafiki 3D Jacek Matulewski ( ZMK, Instytut Fizyki, WFAiIS, UMK 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 1970s – pojawiają się PC, pierwsze gry 2D, SIGGRAPH 1980s – Amiga, gry 2D stają się powszechne, SGI (GL), Luxo Jr. (1986), Flight Simulator ( ) 1960s – projektowanie komp. (Boeing, Peugot, Renault) 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ówki DirectX 9.0c (2004) => gry 3D są powszechne Managed DirectX (MDX, 2002), XNA (2006)

4 Historia grafiki 1992, id Software

5 Historia grafiki Quake (1996) Źródło: Quake II (1997)Quake III Arena (1999) Quake 4 (2005)

6 Tron (1982) – Disney Historia grafiki 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 (programowalne jednostki kart graficznych) Idea 3: pełne wykorzystanie obecnych kart graficznych

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

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

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

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 przenaszalnych i na platformy o zunifikowanych specyfikacjach. ProfilReachHiDef PlatformyWP7, Xbox 360, PC z DX9 Xbox 360, PC z DX10 Vertex Shader1.0, 1.1, , 1.1, 2.0, 3.0 Pixel Shader Tekstury2^n, 2048dowolne, 4096 Index buffer16 bit16 bit i 32 bit poza WP7

13 Efekt (klasa Effect i BasicEffect) Klasa reprezentująca Pixel i Vertex Shadery 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 środowiskowe na 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

16 EnvironmentMapEffect

17 DualTextureEffect output.rgb = Texture1.rgb * Texture2.rgb * 2; output.a = Texture1.a * Texture2.a;

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); } gd.RasterizerState = RasterizerState.CullNone; gd.SetVertexBuffer(buforWerteksowTrojkata); pass.Apply();

21 Transformacje Podstawowe pojęcia grafiki 3D: Transformacje – określane we współrzędnych sceny 3D translacja (Matrix.CreateTranslation, macierz 4x4!), obrót (Matrix.CreateRotationXYZ, z osi obrotu i kąta, yaw+pitch+roll, klasa Quaternion) skalowanie (Matrix.CreateScale), pochylenie zł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: 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. We współrzędnych jednorodnych:

23 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 Światło (cieniowanie) 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… 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 pomocne do programowania shaderów Karta graficzna zgodna z DirectX 9.0/10.0 (Shader 2.0)

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ące renderowanie 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 Wszelkie odstępstwa od domyślnego oświetlenia i teksturowania wymagają programowania shaderów (w tym już zmiana pozycji źródeł światła) Programowanie logiki w C# 4.0 Zaplecze w XNA 4.0:.NET Framework 4.0 (TPL) są biblioteki komercyjne i rozwiązania sprzętowe (GPU)

31 XNA 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)


Pobierz ppt "XNA 4.0 Wprowadzenie do grafiki 3D Jacek Matulewski ( ZMK, Instytut Fizyki, WFAiIS, UMK 28 stycznia 2012."

Podobne prezentacje


Reklamy Google