Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Odwzorowywanie tekstur
Kurs ITA-106 (Grafika i multimedia) – Moduł 4 Jacek Matulewski ( XNA Odwzorowywanie tekstur Wersja: 5 lutego 2009
2
Plan Współrzędne teksturowania
Klasa werteksu VertexPositionColorNormalTexture Wczytywanie i nakładanie tekstury Zawijanie tekstury Przeźroczystość w teksturach Mipmapy Skybox
3
Współrzędne teksturowania
1/7 Współrzędne teksturowania Teksel (texel = texture element lub texture pixel) piksel tekstury nakładanej na bryłę w grafice 3D Współrzędna teksturowania (texture coordinate) (u,v) współrzędne w jednostkach rozmiaru tekstury wyznaczające położenie obrazu względem figury u v
4
2/7 Nowy typ werteksu Typ werteksu uwzględniający współrzędne teksturowania public struct VertexPositionColorNormalTexture { public Vector3 Position; public Color Color; public Vector3 Normal; public Vector2 TextureCoordinate; public static int SizeInBytes = 8 * sizeof(float) + sizeof(uint); … Element Pozycja Typ XNA Interpretacja Position VertexElementFormat.Vector3 VertexElementUsage.Position Color 3 * sizeof(float) VertexElementFormat.Color VertexElementUsage.Color Normal 3 * sizeof(float) sizeof(uint) VertexElementUsage.Normal Texture Coordinate 6 * sizeof(float) sizeof(uint) VertexElementFormat.Vector2 VertexElementUsage. TextureCoordinate
5
Projekt startowy do lab. podst.
-/7 Projekt startowy do lab. podst. Projekt można pobrać z Plik 4B0 Tekstury (lab. podst.) - Start.zip Obracający się sześcian z normalnymi i oświetleniem Fragment kodu dodający współrzędne teksturowania do pobrania z txt\Zbior werteksow prostopadloscianu ze wspolrzednymi teksturowania.txt
6
Tekstury a karta graficzna
-/7 Tekstury a karta graficzna
7
Labolatorium podstawowe
-/7 Labolatorium podstawowe W pliku Prostopadloscian.cs: Zamienić typ werteksu na VertexPositionColorNormalTexture (Ctrl+H) W konstruktorach werteksów podać współrzędne teksturowania (kod do pobrania) Zdefiniować własność Prostopadloscian.Texture. W pliku Game1.cs: Wczytać teksturę (patrz następne przeźrocza) Powiązać wczytaną teksturę z efektem używanym do rysowania sześcianu.
8
Wczytywanie i nakładanie tekstury
3/7 Wczytywanie i nakładanie tekstury Przygotowujemy plik BMP/DDS, PNG, JPEG lub TGA. Kopiujemy plik obrazu do podkatalogu Content katalogu projektu. Dodajemy plik obrazu do projektu (Add, Existing Item…). Podczas kompilacji konwersja do formatu .xnb. Załadowanie tekstury do pamięci: efekt.Texture = game.Content.Load<Texture2D>("Nefryt"); efekt.TextureEnabled = true;
9
Zawijanie tekstur 4/7 Wrap Mirror Clamp Border Clamp w kierunku u
Wrap w kierunku v
10
Przezroczystość tekstur
5/7 Przezroczystość tekstur Ładowanie tekstury efekt.Texture = this.Content.Load<Texture2D>("Xnalogo16"); int iloscPikseli = efekt.Texture.Width * efekt.Texture.Height; Color[] tabelaPikseli = new Color[iloscPikseli]; efekt.Texture.GetData<Color>(tabelaPikseli); Color kolorPrzezroczysty = tabelaPikseli[0]; //piksel (0,0) for (int i = 0; i < iloscPikseli; i++) if (tabelaPikseli[i] == kolorPrzezroczysty) tabelaPikseli[i].A = 0; efekt.Texture.SetData<Color>(tabelaPikseli); Kopiowanie tekseli do tablicy Color[] Białe bity będą przeźroczyste Zapisanie zmian do tekstury Należy pamiętać o włączeniu alpha blendingu!
11
Przezroczystość tekstur
5/7 Przezroczystość tekstur
12
6/7 Mipmapy 32 x 32 8 x 8 2 x 2 256 x 256 128 x 128 1 x 1 4 x 4 16 x 16 64 x 64 Przygotowanie tekstur w różnych rozmiarach, co ułatwia ich skalowanie (jakość i szybkość)
13
Skybox Sześcian obejmujący kamerę z odwróconym cullingiem
7/7 Skybox Sześcian obejmujący kamerę z odwróconym cullingiem Teksturujemy jego ściany pejzażem, np.: Źródło:
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.