Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Grafika 3D Przegląd podstawowych pojęć Kurs ITA-106 (Grafika i multimedia) - Wstęp Jacek Matulewski (

Podobne prezentacje


Prezentacja na temat: "Grafika 3D Przegląd podstawowych pojęć Kurs ITA-106 (Grafika i multimedia) - Wstęp Jacek Matulewski ("— Zapis prezentacji:

1 Grafika 3D Przegląd podstawowych pojęć Kurs ITA-106 (Grafika i multimedia) - Wstęp Jacek Matulewski ( Wersja: 7 listopada 2009

2 Zagadnienia grafiki 3D Podstawowe zagadnienia grafiki 3D: Modelowanie – budowanie modeli obiektów (ze świata realnego) za pomocą przestrzennych figur geometrycznych (trójkątów, wielokątów). Ilość trójkątów – jakość modelowania (realizm) – wymagany sprzęt Animacja – ruch obiektów – zmiana położenia w poszczególnych kadrach (renderowanych statycznych scenach) Renderowanie – techniczne aspekty przygotowania sceny (alg. rys. linii, bufor głębii, antyaliasing itp.)

3 Zagadnienia grafiki 3D Podstawowe zagadnienia grafiki 3D: Grafika czasu rzeczywistego programy korzystające z OpenGL, DirectX lub XNA do tworzenia sterowanych animacji tj. gier, programy do projektowania i wizualizacji Animacja komputerowa tworzenie obrazów techniką ray tracing, tworzenie filmów animowanych (Toy Story, Shrek) W tle funkcjonują Autodesk Maya i 3ds Max (modele)

4 Przykład modelowania (niestety to nie XNA, OpenGL lub DirectX, a ray tracing)

5 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 2D (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)

6 Historia grafiki 1992, id Software

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

8 Historia grafiki Flight Simulator 1.0 (1982) Flight Simulator 2.0 (1984)Flight Simulator 3.0 (1988)Flight Simulator 4.0 (1989)FS 5.1 ( ) MDA HGC CGA EGA VGA SVGA Flight Simulator X (2006)

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

10 Historia grafiki Kung-Fu Panda Dreamworks Wall-e Disney/Pixar Piorun Disney Zeszłoroczne nominacje do oskara w kategorii animacja

11 Modelowanie: wierzchołki Podstawowe pojęcia grafiki 3D: Vertex – wierzchołek figury 2D lub 3D, element siatki rozpiętej w 3D, która jest bazą renderowanej sceny Z werteksem mogą być wiązane własności, m.in: - pozycja i kolor (VertexPositionColor), - normalna (VertexPositionNormalTexture), - współrzędna tekstury (VertexPositionTexture) - inne wybrane przez programistę

12 Podstawowe pojęcia grafiki 3D: Primitiwy – figury zbudowane z vertexów, dwustronny obiekt modelowany jest z tysięcy trójkątów Modelowanie: primitiwy OpenGL: glBegin(typ prymitiwu); glVertex3f(współrzędne); glColor3f(składowe); glVertex3f(współrzędne); … glEnd(); XNA: werteksyTrójkąta = new VertexPositionColor[3]{ new VertexPositionColor(położenie, kolor), new VertexPositionColor(new Vector3(-0.5f, -0.5f, 0), Color.Yellow), new VertexPositionColor(new Vector3(0, 0.5f, 0), Color.Magenta) }; gd.DrawUserPrimitives (PrimitiveType.TriangleList, werteksyTrojkata, 0, 1);

13 Podstawowe pojęcia grafiki 3D: Primitiwy – figury zbudowane z vertexów, dwustronny obiekt modelowany jest z tysięcy trójkątów zbiór wierzchołków Modelowanie: primitiwy Używanie trójkątów (i pasów): najbardziej wydajne numerycznie, zmniejsza artefakty 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

14 Modelowanie: potok Podstawowe pojęcia grafiki 3D: Potok (ang. pipeline) – ciąg przekształceń macierzy (sprzętowo zrównoleglone) dane wejściowe: wierzchołki (vertices) w 3D transformacje: translacje, obroty (m. model-widok), obcięcia: frustum (ograniczenie ilości wierzchołków) rzutowanie: macierz rzutowania + mieszanie kolorów wynik: piksele obrazu 2D (współrzędne ekranu) Operacje na wierzchołkach i pikselach wykonywane są w procesorach strumieniowych karty graficznej (shadery)!

15 Modelowanie: 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

16 Efekt (klasa Effect) 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: 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

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

18 Transformacje Współrzędne jednorodne (homogenous coordinates) Wprowadzone w 1946 przez E. Maxwella (rzutowanie) W 1965 L. Roberts użył ich do zunifikowania zapisu wszystkich transformacji: translacji, obrotów, skalowanie i pochylania Opis punktów n-wymiarowej przestrzeni za pomocą n+1 współrzędnych Obcinanie we współrzędnych jednorodnych może odbywać się w prostopadłościanie zamiast w ściętym ostrosłupie (znacznie efektywniejsze numerycznie)

19 Transformacje We współrzędnych kartezjańskich (2D) obrót i translacja mogą być zapisane: O korzystaniu ze współrzędnych jednorodnych w osobnej prezentacji! We współrzędnych jednorodnych:

20 Kolor Składowe RGB + A (atrybut figury), alternatywa HSB R = 650 nm, G = 530 nm, B = 450 nm Możliwość cieniowania wewnątrz figury (atrybut wierzchołków)

21 Kolor Inne układy wsp. kolorów nie są wspierane w XNA: CMY(K), HSB, YPbPr, CIE xyY, CIE LUV, CIE Lab Klasa Microsoft.Xna.Framework.Graphics.Color RGB – dobre dla monitorów, TV (emisja światła), odpowiada fizjologii oka CMY(K) = 1 – RGB – drukarki (absorpcja światła)

22 Kolor HSB (HSV, HSL) – hue, saturation, brightness (value, lightness, luminance) Bardziej intuicyjne, używane w interakcji z człowiekiem

23 Fizyka i biologia koloru Składowe RGB + A (atrybut figury), alternatywa HSB R = 650 nm, G = 530 nm, B = 450 nm

24 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

25 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 – model Lamberta (1760) Model cieniowania Phonga (coś innego niż model ośw.) = interpolacja normalnych (uśrednianie normalnych)

26 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

27 Model Lamberta Model światła rozproszonego Jasność przedmiotu (natężenie światła) równa jest I i. Jest ono jakąś funkcją natężenia światła padającego na powierzchnię i kąta odbicia (= padania) Model zakłada, że natężenie światła odbitego I d jest proporcjonalne do efektywnej powierzchni widzianej przez obserwatora Acos( ). I d = I i cos( ) Obliczanie cos( ) jest szybkie: cos( ) = N x L x +N y L y +N z L z N – wektor normalny, L – promień św. odbitego NL

28 Model Phonga Model światła specular (zajączek) Wprowadzony przez Phonga – nie ma podstaw fizycznych I s = I i cos n ( ) Parametr n kontroluje ostrość zależności od kąta pod którym oglądamy fragment powierzchni n = 1, 5, 10, 20, 50, 100 n ~ B..Effect.SpecularPower N – wektor normalny L – promień św. odbitego V – kierunek do obserwatora N L V

29 + + = I Model oświetlenia Phonga Trójkomponentowy model oświetlenia ++= IaIa IdId IsIs kaka kdkd ksks kaka kdkd ksks I i cos( )I i cos n ( ) IaIa ambientdiffusespecular W rzeczywistości (tj. w XNA, Direct3D) takie obliczenia prowadzone są osobno dla każdej składowej koloru (RGB)

30 Modele cieniowania Cieniowanie płaskie – jasność określana jest wzorem Phonga dla całej płaskiej powierzchni trójkąta w modelu. W przypadku powierzchni płaskich efekt jest kanciasty Jak kolorować powierzchnie zaokrąglone? Dodatkowo niekorzystny efekt pasm Macha

31 Modele cieniowania Cieniowanie Phonga – obliczenia koloru dla każdego punktu trójkąta z wektorem normalnym wyznaczonym na podstawie interpolacji na bazie trzech wektorów normalnych przypisanych do każdego wierzchołka trójkąta płaskiePhong

32 Modele cieniowania Cieniowanie Gourauda – kolor punktu na prymitywie uzyskiwany jest przez interpolację składowych koloru jego wierzchołków (tylko te wyznaczane są np. wzorem Phonga) Mniej wymagający numerycznie, ale też mniej realistyczny Model to żona Henri Gourauda, Sylvie. Wada: wyraźnie widać granicę użytych figur (wymaga gęstszej sieci niż met. Phonga)

33 Obliczenia rekurencyjne Używane w metodzie śledzenia promieni (ray tracing) Powoli wchodzi do silników graficznych działających w czasie rzeczywistym Automatycznie generuje także cienie obiektów rzucane na inne powierzchnie Modele cieniowania Cieniowanie globalne Jim Kajiya, 1986 (Microsoft) Przy obliczaniu składowych światła odbitego uwzględnia nie tylko światło pochodzące ze źródeł, ale również odbite od innych pow. I(x, x') – sumaryczna intensywność (składowe koloru) w punkcie x z punktu x' g(x, x') = 0 jeśli x i x są przesłonięte, = 1/d 2 w przeciwnym wypadku, d = odl. między punktami x i x' (x, x') – intensywność emitowana przez x' do x (x, x ',x'') – intensywność światła odbitego z x'' do x przez x' S – wszystkie punkty na wszystkich powierzchniach odbijających światło

34 Źródło: Przykłady użycia ray tracing

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

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

37 Czego potrzebujemy… Visual Studio 2008 lub Visual C# 2008 Express Edition Platforma.NET 3.5 (instalowana razem z VS/VC#) XNA Game Studio 3.0 NVidia FX Composer 2.5 – narzędzie bardzo pomocne do programowania shaderów Karta graficzna zgodna z DirectX 9.0 (Shader 1.1) (XNA = XNA Not Acronymed)

38 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!

39 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 biblioteka XNA!

40 Co musimy zrobić sami… Cienie rzucane na podłoże i inne przedmioty rzutowanie cieni, shadow mapping, volumetric shadows Wykrywanie kolizji, rozwiązywanie równań ruchu, rigid 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# Zaplecze w XNA 3.0:.NET Framework 3.5 (LINQ) Możliwość przygotowania wizualizacji danych z b.d. są biblioteki komercyjne i rozwiązania sprzętowe (GPU)

41 Co dalej? Struktura projektu XNA (Visual C# 2008/XNA GS 3.0) Definiowanie figur w przestrzeni trójwymiarowej Transformacje, animacja, współrzędne jednorodne Oświetlenie i teksturowanie Dźwięk Obsługa kontrolerów gier Jutro: Pixel Shader i Vertex Shader (Tomasz Dziubak) Wkrótce w skrypcie: cienie (shadow mapping), fizyka

42 Pokazy T:\Wydawnictwa\XNA dla ITA (Microsoft)\JM\materialy z Internetu\Gry z CreatorsClub\EXE Minjie (Reversi, Othello) Simple Animation, Skinning Sample, Shatter Effect Particle 3D, Shadow Mapping, Normal Mapping Space War (Starter Kit, 2D) Racing Game (Starter Kit, 3D) Więcej:

43 Co dalej? Witryny oferujące kursy XNA (j. ang.): XNA Creators Club (http://creators.xna.com) oficjalna witryna Microsoft poświęcona technologii XNA, zawiera także kurs tworzenia gier dwu- i trójwymiarowych RB Whitaker's Wiki (http://rbwhitaker.wikidot.com/xna-tutorials) kurs zawierający wiele prostych i krótkich lekcji, w sam raz na początek znajomości z XNA XNA Resources (http://xnaresources.com, j. ang.) – spora witryna z tutorialami i innymi zasobami przeznaczonymi dla programistów XNA Riemers XNA Tutorials (http://www.riemers.net, j. ang.) witryna autora bardzo dobrej książki o XNA (zob. niżej), układ witryny nieco nieprzejrzysty Brakuje dobrych (i jakichkolwiek) materiałów w języku polskim!

44 Co dalej? Książki o XNA 2.0: Riemer Grootjans, XNA 2.0 Game Programming Recipes: A Problem- Solution Approach (Books for Professionals by Professionals), Apress Alexandre Santos Lobao, Bruno Pereira Evangelista, José Antonio Leal de Farias, Beginning XNA 2.0 Game Programming: From Novice to Professional (Expert's Voice in Game Programming), Apress James Silva, John Sedlak, Building XNA 2.0 Games: A Practical Guide for Independent Game Development (Books for Professionals by Professionals), Apress Jim Perry, Allen Sherrod, Essential XNA Game Studio 2.0 Programming, Wordware Publishing Benjamin Nitschke, Professional XNA Programming: Building Games for Xbox 360 and Windows with XNA Game Studio 2.0, Wrox Na razie nie ma książek o XNA 3.0! Nie ma żadnych książek po polsku.


Pobierz ppt "Grafika 3D Przegląd podstawowych pojęć Kurs ITA-106 (Grafika i multimedia) - Wstęp Jacek Matulewski ("

Podobne prezentacje


Reklamy Google