Dual Paraboloid Mapping Michał Drobot Technical Art Director Reality Pump.

Slides:



Advertisements
Podobne prezentacje
Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu
Advertisements

DIRECT &INDIRECT QUESTIONS
Wyk. Michał Liszkowski kl. 6a Moje gimnazjum- KSO Edukator.
Figury Płaskie.
Czyli jak zrobić prezentację komputerową?
Zastosowanie osi symetrii i wielokątów w przyrodzie
Małgorzata Pietroczuk
Prezentację przygotowała Bożena Piekar
FUNKCJA L I N I O W A Autorzy: Jolanta Kaczka Magdalena Wierdak
DYFRAKCJA ŚWIATŁA NA SIATCE DYNAMICZNEJ
← KOLEJNY SLAJD →.
← KOLEJNY SLAJD →.
Irina Svichenyuk Valeria Poligova Skąd biorą się motywy dla podróży? Skąd biorą się motywy dla podróży? Każdy człowiek ma jakieś własne potrzeby. To.
Analiza matematyczna III. Funkcje Funkcje I – własności podstawowe
Analiza matematyczna III. Funkcje Funkcje II – własności podstawowe
III. Proste zagadnienia kwantowe
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.
PREZENTACJA WYKORZYSTANA PODCZAS DEBATY W SALI PATRONA SZKOŁY.
Podstawy programowania
Szkoła w chmurze.
Pilots monument in Go ś ciniec Katarzyna Woś Natalia Wawrzaszek.
The Grumpy Test If at least one of these pictures does not make you smile, then you are grumpy and need to go back to bed. Test na ponuraka Jak nie usmiechniesz.
Symetria osiowa i środkowa
KONSTRUKCJE TRÓJKĄTÓW
Materiał edukacyjny wytworzony w ramach projektu „Scholaris - portal wiedzy dla nauczycieli” współfinansowanego przez Unię Europejską w ramach Europejskiego.
1.
Analiza stanu naprężenia
Szkolnictwo w Wielkiej Brytanii
Wykonała Sylwia Kozber
Antonie de Saint-Exupery
Pęd Wielkością charakteryzującą ruch ciała jest prędkość. Zmiana ruchu, tzn. zmiana prędkości, wymaga pokonania oporu bezwładności. Miarą bezwładności.
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.
xHTML jako rozszerzenie HTML
Krótka historia kina.
HTML Podstawy języka hipertekstowego Damian Urbańczyk.
Ruch niejednostajny Wykres zależności Wykres w zależności od prędkości susającego zająca (1) i poruszającego się żółwia (2) od czasu trwania ruchu.
Ruch jednostajny po okręgu Ciało porusza się ruchem jednostajnym oraz torem tego ruchu jest okrąg.
Optimization Michał Drobot Technical Art Director Reality Pump.
Architektury Deferred Michał Drobot Technical Art Director Reality Pump.
Optyka Widmo Światła Białego Dyfrakcja i Interferencja
Prawo lokalne w Internecie Jakub Kasprzycki
TWORZYMY HIPERBOLĘ Z PŁASZCZYZNY STOŻKOWEJ TWORZYMY HIPERBOLĘ
Kiedy Siergiej dzwoni do George`a…
„Musicie być mocni mocą miłości, która jest potężniejsza niż śmierć”
Planowanie strategiczne w ośrodkach innowacji i przedsiębiorczości Marzena Mażewska SOOIPP.
Opracowała: Iwona Kowalik
Opracowała: Iwona Kowalik
Opracowała: Iwona Kowalik
ZANIECZYSZCZENIA POWIETRZA
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.
Liczba “fi” Prezentację przygotowali:
Objawienie Pańskie Oto dzisiaj jest Objawienie Pańskie, sam Jezus chce ukazać się nam po to, abyśmy oświeceni przez Niego i pełni Jego Miłości, stali się.
Metody geometrycznego dodawania wektorów. Metoda trójkątaMetoda równoległoboku Dane są dwa wektory: Szukamy wektora c : b a a a c c bb 1.Przerysuj pierwszy.
Marcin Nielipiński kl. ITR
BRYŁY OBROTOWE.
A. Jędryczkowski – 2006 ©. Tablica to struktura danych zawierająca zbiór obiektów tego samego typu i odpowiada matematycznemu pojęciu wektora (tablica.
Piotr Michałowski Listopad 2011
Są w życiu chwile, kiedy tak bardzo odczuwamy brak obecności innych,
KOŁA I OKRĘGI Autorzy: Konrad Z. Kacper M. Sebastian K.
Szymon Murawski, 4 rok nanotechnologii1 Misja kosmiczna GAIA Czyli cały wszechświat w twoim domu.
ZŁUDZENIA OPTYCZNE Większe, mniejsze? Jest czy nie ma? Wygięte! ..?
Zadanie: przy pomocy algorytmu simplex rozwiązać następujące zadanie programowania liniowego: przy ograniczeniach: Autor: Michał KĘPIEŃ (I4X2S0)
Prezentacja Szkoły Podstawowej w Święcięńcu Nasze rady na odpady Sprzątanie Świata 20 września 2008r.
Temat 4: Znaki diakrytyczne i definiowanie języka dokumentu
Świat na główce od szpilki Odkrywcy mikroskopijnego świata.
Instrukcja switch switch (wyrażenie) { case wart_1 : { instr_1; break; } case wart_2 : { instr_2; break; } … case wart_n : { instr_n; break; } default.
ZESPÓŁ SZKÓŁ NR3 WE WŁOCŁAWKU IX. ROZWÓJ WYKSZTAŁCENIA I KOMPETENCJI W REGIONACH. 9.2.PODNIESIENIE ATRAKCYJNOŚCI I JAKOŚCI SZKOLNICTWA ZAWODOWEGO pt.:
Komtech Sp. z o.o. Magic Janusz ROŻEJ.
Elektroniczny rozdział siły hamowania
BVMS 3.0 Moduł 13: Opcje zapisu iSCSI
Zapis prezentacji:

Dual Paraboloid Mapping Michał Drobot Technical Art Director Reality Pump

Mapowanie dookolneMapowanie dookolne Parametryzacja matematycznaParametryzacja matematyczna ImplementacjaImplementacja ZastosowanieZastosowanie Plan wykładu

SześcienneSześcienne Wymaga 6 tekstur – cubemapaWymaga 6 tekstur – cubemapa Wspierane hardwareowoWspierane hardwareowo Wymaga 6 krotnego przerenderowania scenyWymaga 6 krotnego przerenderowania sceny SferyczneSferyczne Wymaga 1 teksturyWymaga 1 tekstury 1 krotne przerenderowanie1 krotne przerenderowanie Zależne od widokuZależne od widoku Mało stabilneMało stabilne Słaba jakośćSłaba jakość Brak obiektów centralnie za kuląBrak obiektów centralnie za kulą Mapowanie dookolne

Dual paraboloid mappingDual paraboloid mapping Wymaga 2 teksturWymaga 2 tekstur 2 przebiegi renderowania sceny2 przebiegi renderowania sceny Niezależne od kąta patrzeniaNiezależne od kąta patrzenia Zawiera cała scenęZawiera cała scenę Niski poziom artefaktów i dystorsjiNiski poziom artefaktów i dystorsji Paraboloid mapping

Dzielimy przestrzeń na dwie półkuleDzielimy przestrzeń na dwie półkule Każdy promień padający na półkule jest odbity równolegle w kierunku półkuliKażdy promień padający na półkule jest odbity równolegle w kierunku półkuli Jest to istota mapowania paraboloidalnegoJest to istota mapowania paraboloidalnego

Szukamy wektora normalnego dowolnego punktu płaszczyzny zadanej przez równanie paraboloidySzukamy wektora normalnego dowolnego punktu płaszczyzny zadanej przez równanie paraboloidy Używamy do tego wektorów tangentowych z pierwszej pochodnej oraz ich iloczynu wektorowegoUżywamy do tego wektorów tangentowych z pierwszej pochodnej oraz ich iloczynu wektorowego Paraboloid mapping

Musimy odnaleźć punkt przecięcia promienia padającego z płaszczyznąMusimy odnaleźć punkt przecięcia promienia padającego z płaszczyzną W tym celu musimy znać wektor padający jak i odbityW tym celu musimy znać wektor padający jak i odbity Obserwacja : przy parametryzacji paraboloidy wszystkie wektory odbite są równoległe i równe bądź dla tylnej połówkiObserwacja : przy parametryzacji paraboloidy wszystkie wektory odbite są równoległe i równe bądź dla tylnej połówki Suma wektora padającego i odbitego powinna równać się normalnej płaszczyzny o która nastąpiła refleksjaSuma wektora padającego i odbitego powinna równać się normalnej płaszczyzny o która nastąpiła refleksja Paraboloid mapping

Ostatnie równanie stanowi podstawę implementacjiOstatnie równanie stanowi podstawę implementacji Zaczynamy od generacji map paraboloidalnychZaczynamy od generacji map paraboloidalnych Zapisujemy w nich kolor do mapowania odbić, bądź głębie do mapowania cieniZapisujemy w nich kolor do mapowania odbić, bądź głębie do mapowania cieni Paraboloid mapping

Potrzebujemy trzech macierzyPotrzebujemy trzech macierzy World – normalna macierz świataWorld – normalna macierz świata View – tworzymy normalnie traktując za kamere punkt P (środek paraboloidy – miejsce światła, bądź źródła refleksji)View – tworzymy normalnie traktując za kamere punkt P (środek paraboloidy – miejsce światła, bądź źródła refleksji) Używamy położenia punktu P w świecie jako translacjiUżywamy położenia punktu P w świecie jako translacji Rotacja wyznacza orientacje hemisfer paraboloidRotacja wyznacza orientacje hemisfer paraboloid Projekcja – używamy identyczności, z racji ręcznej projekcjiProjekcja – używamy identyczności, z racji ręcznej projekcji Implementacja

Szukamy wektora padającegoSzukamy wektora padającego float L = length( output.Position.xyz ); output.Position = output.Position / L;float L = length( output.Position.xyz ); output.Position = output.Position / L; Wyliczamy koordynaty miejsca przecięciaWyliczamy koordynaty miejsca przecięcia output.Position.z = output.Position.z + 1; output.Position.x = output.Position.x / output.Position.z; output.Position.y = output.Position.y / output.Position.z;output.Position.z = output.Position.z + 1; output.Position.x = output.Position.x / output.Position.z; output.Position.y = output.Position.y / output.Position.z; Implementacja

Skalujemy wartość Z i ustawiamy WSkalujemy wartość Z i ustawiamy W output.Position.z = (L - NearPlane) / (FarPlane - NearPlane); output.Position.w = 1;output.Position.z = (L - NearPlane) / (FarPlane - NearPlane); output.Position.w = 1; Skalujemy wartość Z i ustawiamy WSkalujemy wartość Z i ustawiamy W W pixel shaderze wycinamy pixele znajdujące się ZA hemisfera poprzez clip()W pixel shaderze wycinamy pixele znajdujące się ZA hemisfera poprzez clip() Implementacja

Implementacja

Podczas odczytu mapy paraboloidalnejPodczas odczytu mapy paraboloidalnej Generujemy koordynaty w sposób analogiczny do generowania mapyGenerujemy koordynaty w sposób analogiczny do generowania mapy Dla refleksji tworzymy je jak w enviromental mappinguDla refleksji tworzymy je jak w enviromental mappingu Paraboloid mapping

// Wyliczamy koordynaty przedniej hemisfery float2 front; front.x = R.x / (R.z + 1); front.y = R.y / (R.z + 1); front.x =.5f * front.x +.5f; //bias and scale to correctly sample a d3d texture front.y = -.5f * front.y +.5f; // Wyliczamy koordynaty tylnej hemisfery float2 back; back.x = R.x / (1 - R.z); back.y = R.y / (1 - R.z); back.x =.5f * back.x +.5f; //bias and scale to correctly sample a d3d texture back.y = -.5f * back.y +.5f;// Wyliczamy koordynaty przedniej hemisfery float2 front; front.x = R.x / (R.z + 1); front.y = R.y / (R.z + 1); front.x =.5f * front.x +.5f; //bias and scale to correctly sample a d3d texture front.y = -.5f * front.y +.5f; // Wyliczamy koordynaty tylnej hemisfery float2 back; back.x = R.x / (1 - R.z); back.y = R.y / (1 - R.z); back.x =.5f * back.x +.5f; //bias and scale to correctly sample a d3d texture back.y = -.5f * back.y +.5f; // Samplujemy mapy float4 forward = tex2D( FrontTex, front ); // sample the front paraboloid map float4 backward = tex2D( BackTex, back ); // sample the back paraboloid map// Samplujemy mapy float4 forward = tex2D( FrontTex, front ); // sample the front paraboloid map float4 backward = tex2D( BackTex, back ); // sample the back paraboloid map Paraboloid mapping

Wybieramy właściwy sampel poprzez sprawdzenie wartości ZWybieramy właściwy sampel poprzez sprawdzenie wartości Z Dla shadow mappingu szukamy wektora od vertexa do centrum paraboloidyDla shadow mappingu szukamy wektora od vertexa do centrum paraboloidy Paraboloid mapping

Podsumowanie For more information contact me Slides will be available at Drobot.org

Questions ?