XNA 4.0 Wprowadzenie do grafiki 3D

Slides:



Advertisements
Podobne prezentacje
ALLEGRO PIERWSZA GRA: WYŚCIG
Advertisements

Implementacja algorytmów na procesory kart graficznych
Tadeusz Janasiewicz IT Group, Tadeusz Janasiewicz, WSUS, IT Group, r.
Współrzędne jednorodne
Najpopularniejsze aplikacje ASP.NET i PHP.
XNA Szybki start Kurs ITA-106 (Grafika i multimedia) – Moduł 1
Download the latest version at This message wont show up when youre presenting Windows Phone 7.
Symulacje komputerowe
Damian Wojdan Kraków,
Australia.
Czyli jak zrobić prezentację komputerową?
Zastosowanie osi symetrii i wielokątów w przyrodzie
Nasza parafia Nasza wieś Kaszów w liczbach Nasza szkoła.
Zespół Szkół w Ostrowie Daniel Maliczowski & Paweł Wróbel.
FIZYKA na służbie b’Rowersa ...krótki kurs.
Zastosowanie Internetu
ODYSEJA UMYSŁU.
Analiza matematyczna III. Funkcje Funkcje II – własności podstawowe
III. Proste zagadnienia kwantowe
Propozycja siatki godzin Specjalność: Modelowanie i Programowanie Systemów Informatycznych.
Grafika Trójwymiarowa
PROJEKT WEDŁUG DILBERTA
AUTOR :WOJTEK NOWIK REPORTER : LUK SMIS PATRYK SORMAN PIOTREK COLO (KOLO)
Kolejna gra mająca na celu pokazanie świata kierowców ścigających się w nielegalnych ulicznych wyścigach podrasowanymi do granic możliwości samochodami.
Zastanówmy Się…...
Lekcja nr 1 Temat: Lekcja organizacyjna. Bhp w pracowni komputerowej i przy pracy z komputerem.
Waluta Unii Europejskiej - euro
Autorzy: Agnieszka Kuraj Natalia Gałuszka Kl. III c.
Prezentacja z przedmiotu „systemy wizyjne”
Szkoła w chmurze.
fotografie - Marcel Cohen
Takie liczby to: {... -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5,... }
Plan warsztatów „Grafika 3D w XNA”
Przegląd podstawowych pojęć
Analiza stanu naprężenia
Wykonała Sylwia Kozber
Cz.8 Zdarzenia. Refleksja – przypomnienie Event Programowanie zdarzeniowe Do dzieła!
Antonie de Saint-Exupery
1 Oddziaływanie grawitacyjne. 2 Eliminując efekty związane z oporem powietrza możemy stwierdzić, że wszystkie ciała i lekkie i ciężkie spadają z tym samym.
Jeżdżę z głową.
Powrót do sukcesu Analiza przypadku Princessy (rola badań marketingowych podczas rozwoju produktu: ) Powrót do sukcesu Analiza przypadku Princessy.
Instalacja serwera WWW na komputerze lokalnym
Prezentacja dla klasy III gimnazjum Przedmiot: matematyka Dział: Funkcje Temat: Graficzna ilustracja układów równań (lekcja pierwsza)
Ruch jednostajny po okręgu Ciało porusza się ruchem jednostajnym oraz torem tego ruchu jest okrąg.
Dual Paraboloid Mapping Michał Drobot Technical Art Director Reality Pump.
WPROWADZENIE DO PROBLEMATYKI PSYCHOLOGII UCZENIA SIĘ
SZKO Ł A PODSTAWOWA IM. JANA PAW Ł A II W BIELINACH.
Warsztaty C# Część 2 Grzegorz Piotrowski Grupa.NET PO
Warsztaty C# Część 3 Grzegorz Piotrowski Grupa.NET PO
KINECT – czyli z czym to się je?. Damian Zawada
SKALA MAPY Skala – stosunek odległości na mapie do odpowiadającej jej odległości w terenie. Skala najczęściej wyrażona jest w postaci ułamka 1:S, np. 1:10.
Sieci komputerowe. Nowe technologie komputerowe
Bazy danych.
Realistyczny rendering dla potrzeb gier komputerowych
To popularny portal internetowe. Pisząc blog informujemy internautów o swoich zainteresowaniach np. o modzie lub gotowaniu. Niestety czasem zapominamy.
PolGIS jako nowoczesny system do paszportyzacji sieci
Prostokątny układ współrzędnych na płaszczyźnie
Łamana Anna Gadomska S.P. 79 Łódź.
Narzędzie wspomagające projektowanie aplikacji Proficy iFIX
ZŁUDZENIA OPTYCZNE Większe, mniejsze? Jest czy nie ma? Wygięte! ..?
Temat 1: Umieszczanie skryptów w dokumencie
Temat 6: Elementy podstawowe
Temat 4: Znaki diakrytyczne i definiowanie języka dokumentu
Prezentacja powstała w ramach projektu „Etno-projekt dla najmłodszych” realizowanego przez Stowarzyszenie Pracownia Etnograficzna.
Komtech Sp. z o.o. Magic Janusz ROŻEJ.
TYPY KOBIET WEDŁUG INTERNAUTÓW.
dla programistów Windows Phone
1.
Najlepsi czytelnicy w historii szkoły 1965/66 - Mirosław Twardy VIII g 1966/67 - Katarzyna Gąsior VIII 1967/68 - Marta Ziarko I a 1968/69 - Elżbieta Sarek.
Podsumowanie omówionych zagadnień
Zapis prezentacji:

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 Co nowego w XNA 4.0?

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ówki DirectX 9.0c (2004) => gry 3D są powszechne Managed DirectX (MDX, 2002), XNA (2006)

Historia grafiki 1992, id Software

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

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

Grafika w nowej perspektywie

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)

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

Prymitywy Podstawowe pojęcia grafiki 3D: Prymityw – figura zbudowane z werteksów, dwustronna zbiór wierzchołków Prim..Type.TriangleList PrimitiveType.PointList PrimitiveType.LineList Pri..Type.TriangleStrip Prim..Type.TriangleFan PrimitiveType.LineStrip 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

Potok Aplikacja XNA Shader werteksów Shader pikseli Monitor Rasteryzator Interpolator 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?

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. Profil Reach HiDef Platformy WP7, Xbox 360, PC z DX9 Xbox 360, PC z DX10 Vertex Shader 1.0, 1.1, 2.0 1.0, 1.1, 2.0, 3.0 Pixel Shader 2.0 2.0 3.0 Tekstury 2^n, 2048 dowolne, 4096 Index buffer 16 bit 16 bit i 32 bit poza WP7

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

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)

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

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

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

Nowe efekty w XNA 4.0 Demo

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

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();

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)

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.

Ś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) – ś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 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) – 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) Rozbłysk (specular) – źródło i kierunek reflektor, efekt „zajączka” – rozbłysku na gładkich pow.

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)

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

Model oświetlenia Phonga Demo

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 pomocne do programowania shaderów

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!

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!

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ś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)

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)