1 Odwzorowywanie teksturKurs ITA-106 (Grafika i multimedia) – Moduł 4 Jacek Matulewski ( XNA Odwzorowywanie tekstur Wersja: 5 lutego 2009
2 Plan Współrzędne teksturowaniaKlasa werteksu VertexPositionColorNormalTexture Wczytywanie i nakładanie tekstury Zawijanie tekstury Przeźroczystość w teksturach Mipmapy Skybox
3 Współrzędne teksturowania1/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 tekstury3/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
9 Zawijanie tekstur 4/7 Wrap Mirror Clamp Border Clamp w kierunku uWrap w kierunku v
10 Przezroczystość tekstur5/7 Przezroczystość tekstur Ładowanie tekstury efekt.Texture = this.Content.Load
11 Przezroczystość tekstur5/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 cullingiem7/7 Skybox Sześcian obejmujący kamerę z odwróconym cullingiem Teksturujemy jego ściany pejzażem, np.: Źródło: