Wyświetlanie obrazu Techniki wyświetlania obrazu i ich zastosowanie w grach.

Podobne dokumenty
Grafika Komputerowa, Informatyka, I Rok

Wyświetlanie obrazu Techniki wyświetlania obrazu i ich zastosowanie w grach.

Grafika Komputerowa Wykład 3. Wyświetlanie. mgr inż. Michał Chwesiuk 1/24

Bartosz Bazyluk WYŚWIETLANIE OBRAZU Techniki wyświetlania obrazu komputerowego. Grafika Komputerowa, Informatyka, I Rok

Wyświetlanie obrazu Techniki wyświetlania obrazu komputerowego.

Wyświetlanie obrazu Bufor klatki, synchronizacja pionowa, pętla główna gry.

Bartosz Bazyluk SYNTEZA GRAFIKI 3D Grafika realistyczna i czasu rzeczywistego. Pojęcie sceny i kamery. Grafika Komputerowa, Informatyka, I Rok

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

Monitory Opracował: Andrzej Nowak

Plan wykładu. 1. Budowa monitora LCD 2. Zasada działania monitora LCD 3. Podział matryc ciekłokrystalicznych 4. Wady i zalety monitorów LCD

Monitory LCD (ang. Liquid Crystal Display) (1)

Zasada działania, porównanie

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych

Monitory. Rys. 1 Monitor kineskopowy z działem elektronowym (CRT) Rys.2. Monitor ciekłokrystaliczny (LCD)

Plan wykładu. 1. Budowa monitora CRT 2. Zasada działania monitora CRT 3. Maski 4. Wady i zalety monitorów CRT 5. Testowanie monitora

Plan wykładu. 1. Oznaczenia certyfikatów monitorów. 2. Porównanie monitorów CRT z LCD 3. Dobór parametrów monitorów

Animowana grafika 3D. Opracowanie: J. Kęsik.

Radioodbiornik i odbiornik telewizyjny RADIOODBIORNIK

Schemat blokowy monitora CRT

Rodzaje monitorów. CRT kineskopowe. LCD ciekłokrystaliczne. PLASMA plazmowe OLED

Grafika Komputerowa. Wykład 8. Przygotowanie do egzaminu. mgr inż. Michał Chwesiuk 1/32

Technikalia multimedialne. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

Podstawy grafiki komputerowej

MODULATOR CIEKŁOKRYSTALICZNY

Wysoki kontrast i szeroki zakres dynamiki dzięki cechom panelu OLED takim, jak reprodukcja głębokiej czerni i wysoka jasność szczytowa

Schemat blokowy monitora CRT

Bartosz Bazyluk WPROWADZENIE Wstęp do dwuwymiarowej grafiki komputerowej.

GRAFIKA CZASU RZECZYWISTEGO Interakcja, ruch kamery, oświetlenie.

Turbo 240 Rozwiązanie problemu rozmyć w ruchomych obrazach

kod produktu: 1DD114 Monitor ViewSonic XG ,72 zł 850,99 zł netto

Wprowadzenie do grafiki komputerowej

2 Przygotował: mgr inż. Maciej Lasota

Plan wykładu. Akcelerator 3D Potok graficzny

Trójwymiarowa grafika komputerowa rzutowanie

PROJEKTORY DO KINA DOMOWEGO

Rysunek 1: Okno timeline wykorzystywane do tworzenia animacji.

Oświetlenie obiektów 3D

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

WYKŁAD 25 URZĄDZENIA WYŚWIETLAJĄCE SMK 2004 Na podstawie: K. Booth, S. Hill, Optoelektronika, WKŁ, Warszawa Uwagi ogólne A.

Co należy zauważyć Rzuty punktu leżą na jednej prostej do osi rzutów x 12, którą nazywamy prostą odnoszącą Wysokość punktu jest odległością rzutu

Grafika rastrowa (bitmapa)-

Wzmacniacz wizji. Kineskop. Trafopowielacz Działo elektronowe. Cewki

Zaawansowana Grafika Komputerowa

8. TRYGONOMETRIA FUNKCJE TRYGONOMETRYCZNE KĄTA OSTREGO.

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Gry Komputerowe Interaktywna kamera FPP

określone położenie i orientacja cząstek

Grafika komputerowa. Dla DSI II

Problem nr 1: Podświetlenie LED przyczyną męczącego wzrok migotania

Pojęcie Barwy. Grafika Komputerowa modele kolorów. Terminologia BARWY W GRAFICE KOMPUTEROWEJ. Marek Pudełko

Grafika komputerowa i wizualizacja

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.

1 LEKCJA. Definicja grafiki. Główne działy grafiki komputerowej. Programy graficzne: Grafika rastrowa. Grafika wektorowa. Grafika trójwymiarowa

Wyświetlacze ciekłokrystaliczne (LCD)

Mobilne Aplikacje Multimedialne

Podział monitorów w zależności od sposobu generowania obrazu

TRYGONOMETRIA FUNKCJE TRYGONOMETRYCZNE KĄTA SKIEROWANEGO

IRONCAD. TriBall IRONCAD Narzędzie pozycjonujące

Fotometria i kolorymetria

Wyznaczanie stosunku e/m elektronu

Podwójne buforowanie i animacje

MONITOR CRT - działanie

Ustawienia materiałów i tekstur w programie KD Max. MTPARTNER S.C.

Transformacje obiektów 3D

Zmiana rozdzielczości ekranu

MONITOR CRT - działanie

Grafika 3D program POV-Ray - 1 -

3. KINEMATYKA Kinematyka jest częścią mechaniki, która zajmuje się opisem ruchu ciał bez wnikania w jego przyczyny. Oznacza to, że nie interesuje nas

Animowana grafika 3D. Opracowanie: J. Kęsik.

Transformacje. dr Radosław Matusik. radmat

ARRIS VIP Copyright 2015 Grupa MULTIPLAY.

Laboratorium Optyki Falowej

Gniazdo D-Sub. Istnieją takŝe monitory podłączane do gniazda cyfrowego, gdzie sygnał do monitora przesyłany jest w postaci cyfrowej przez gniazdo DVI.

Ćwiczenie 363. Polaryzacja światła sprawdzanie prawa Malusa. Początkowa wartość kąta 0..

GRAFIKA KOMPUTEROWA. Plan wykładu. 1. Początki grafiki komputerowej. 2. Grafika komputerowa a dziedziny pokrewne. 3. Omówienie programu przedmiotu

Bartosz Bazyluk OpenGL Deferred shading. Pętla główna i jej implementacje. Debugowanie i analiza wydajności.

Budowa i zasada działania skanera

Czy można zobaczyć skrócenie Lorentza?

Lekcja 80. Budowa oscyloskopu

Funkcje trygonometryczne w trójkącie prostokątnym

LASERY I ICH ZASTOSOWANIE

Układy współrzędnych GUW, LUW Polecenie LUW

SYSTEMY PROJEKCJI STEREOSKOPOWEJ W ANIMACJACH KOMPUTEROWYCH. Techniki projekcji Generowanie wizyjnego sygnału stereoskopowego Instalacje mobilne

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.

Grafika Komputerowa Wykład 6. Teksturowanie. mgr inż. Michał Chwesiuk 1/23

Wstęp do fotografii. piątek, 15 października ggoralski.com

Monitory LCD, OLED, PDP oraz technologia 3D

Zastosowanie stereowizji do śledzenia trajektorii obiektów w przestrzeni 3D

Temat ćwiczenia: Zasady stereoskopowego widzenia.

Rzutowanie z 4D na 3D

Stereoskopia i holografia

Misja#3. Robimy film animowany.

STEREOSKOPIA. Stereoskopia. Synteza i obróbka obrazu

Wykład 4. Rendering (1) Informacje podstawowe

Model oświetlenia. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY TRZECIEJ NA ROK SZKOLNY 2011/2012 DO PROGRAMU MATEMATYKA Z PLUSEM

POLARYZACJA ŚWIATŁA. Uporządkowanie kierunku drgań pola elektrycznego E w poprzecznej fali elektromagnetycznej (E B). światło niespolaryzowane

Górnicki Mateusz 17681

Transkrypt:

Wyświetlanie obrazu Techniki wyświetlania obrazu i ich zastosowanie w grach. http://bazyluk.net/dydaktyka Gry komputerowe, Informatyka S1, II Rok, 2017 r.

WYŚWIETLANIE OBRAZU Techniki wyświetlania obrazu Wyświetlacze CRT Wyświetlacze LCD Wyświetlacze PDP Wyświetlacze OLED Projektory DLP Inne: wyświetlacze laserowe, wyświetlacze LED, e-ink... Źródła obrazów: http://trustedreviews.com/ http://accad.osu.edu/~elaine/ http://phonearena.com/ 2

WYŚWIETLACZE KINESKOPOWE Wyświetlacze CRT (kineskopowe) Działa elektronowe emitują wiązki elektronów, które pobudzają warstwę luminoforu Pobudzony luminofor emituje światło Cewki elektryczne zmieniając pole magnetyczne odchylają wiązkę elektronów, by trafiała w różne części ekranu Źródła obrazów: http://brainbell.com/ http://obsoletetellyemuseum.blogspot.com/ 3

WYŚWIETLACZE KINESKOPOWE Wyświetlacze CRT (kineskopowe) Szczególny przypadek: oscyloskop Strumień elektronów jest sterowany wyświetlanym sygnałem, zamiast przechodzenia całego rastra przy pomocy cewek odchylania pionowego i poziomego Dawne ekrany radarowe wykorzystywały ograniczony czas emisji światła przez pobudzony luminofor w celu podtrzymywania wizualizacji chwilowej sytuacji, gdy antena radaru dokonywała obrotu. Źródło obrazów: Wikipedia 4

WYŚWIETLACZE WEKTOROWE Korzystając z możliwości odchylania wiązki elektronów, możliwe jest utworzenie na warstwie luminoforu dowolnego kształtu. W latach 80 wiele automatów do gier oferowało ten sposób wyświetlania. Źródło obrazu: Atari Przykład: Battlezone (1980), uznawana za pierwszą grę oferującą środowisko 3D. 5

WYŚWIETLACZE RASTROWE CRT Z uwagi na własności luminoforu, emituje on światło jedynie przez krótką chwilę. Każdy punkt obrazu musi więc być cyklicznie pobudzany. Od momentu pobudzenia będzie stopniowo wygasać. Wyświetlacze CRT (kineskopowe) Sposób odświeżania całego rastra: odchylanie pionowe (m. cz.) służące do przechodzenia kolejnych wierszy i odchylanie poziomie (w. cz.) do przechodzenia kolumn w obrębie każdego z wierszy Zdjęcie obrazu wyświetlanego na ekranie CRT, wykonane z bardzo krótkim czasem otwarcia migawki: Źródła obrazów: http://what-when-how.com/ Wikipedia 6

WYŚWIETLACZE RASTROWE CRT Wyświetlacze CRT (kineskopowe) Kolorowy obraz powstaje dzięki użyciu rodzajów luminoforu emitującego różnokolorowe światło, najczęściej RGB Wiązka elektronów trafia w odpowiednią komórkę z luminoforem po przejściu przez perforowaną maskę Przykład perforowanej maski pozwalającej na kontrolowanie trafienia w odpowiednie komórki filtra barwnego. Źródła obrazów: http://sarcasmeur.free.fr/ http://ttlg.com/ 7

WYŚWIETLACZE RASTROWE CRT Wyświetlacze CRT (kineskopowe) Zalety ekranów CRT: Dobra reprodukcja kolorów Duży kontrast Dobre kąty widzenia Jakość niezależna od rozdzielczości Bardzo duża szybkość Główne wady: Gabaryty Migotanie obrazu Zużycie energii Problemy z ostrością obrazu Szkodliwość dla zdrowia Źródło obrazu: http://www.jestineyong.com 8

POLARYZACJA ŚWIATŁA Liniowa polaryzacja światła Światło jest falą poprzeczną W fali niespolaryzowanej oscylacje odbywają się z jednakową amplitudą w różnych kierunkach prostopadłych do kierunku rozchodzenia się fali Po przejściu przez polaryzator oscylacje odbywają się tylko w jednej płaszczyźnie Źródło obrazu: http://bigshotcamera.com/ 9

Ciekłe kryształy (ang. Liquid Crystals) WYŚWIETLANIE Warstwa ciekłokrystaliczna po przyłożeniu napięcia skręca płaszczyznę polaryzacji OBRAZU Źródło obrazu: http://www.wikipedia.org Źródło obrazu: http://www.wikipedia.org 10

WYŚWIETLACZE LCD Działanie panelu LCD (ang. Liquid Crystal Display) Matryca pasywna schemat wyświetlanego obrazu nie zależy od stanu elektrycznego Źródło światła Polaryzator Ujemna elektroda Komórki z ciekłymi kryształami Dodatnia elektroda Kształt elektrod decyduje o kształtach możliwych do wyświetlenia. Analizator Źródło obrazu: http://www.directindustry.com 11

WYŚWIETLACZE Działanie panelu LCD (ang. Liquid Crystal Display) LCD Drugi polaryzator, zwany często analizatorem, ma na celu nie przepuścić lub ograniczyć przepuszczenie światła dla komórek warstwy ciekłokrystalicznej które odpowiadają ciemnym obszarom wyświetlanego obrazu. Źródło obrazu: http://www.olympusmicro.com 12

WYŚWIETLACZE LCD Działanie kolorowego panelu LCD Matryca pasywna schemat wyświetlanego obrazu nie zależy od stanu elektrycznego Źródło światła Polaryzator Ujemna elektroda Komórki z ciekłymi kryształami Dodatnia elektroda Filtr barwny jest dopasowany do kształtu elektrod. Wciąż nie ma możliwości wyświetlenia dowolnego obrazu. Filtr kolorowy Analizator Źródło obrazu: http://www.tradekorea.com 13

WYŚWIETLACZE LCD Działanie panelu AMLCD (ang. Active Matrix LCD) Komórkami LC steruje aktywna matryca TFT (ang. Thin Film Transistor) Filtr kolorowy jest elementem pasywnym Źródło światła Polaryzator Matryca TFT Komórki z ciekłymi kryształami Filtr kolorowy Tranzystory matrycy TFT przysłaniają źródło światła, są widoczne dla użytkownika. Analizator Źródło obrazu: http://www.wikipedia.org 14

WYŚWIETLANIE OBRAZU Przykład działania technologii Quartz Źródło obrazu: http://www.wikipedia.org 15

WYŚWIETLACZE LCD Technologie budowy i działania paneli AMLCD Panele TN (ang. twisted nematic) Panele IPS (ang. in-plane switching) Ogólne zalety ekranów LCD: Małe gabaryty Brak migotania obrazu Ostrość (w rozdzielczości natywnej ) Tanie, szybkie, małe kąty widzenia S-IPS, E-IPS, *-IPS... Dwa tranzystory na każdy piksel, odwzorowanie kolorów dobre kąty widzenia, większe straty światła, powolne, droższe Panele VA (ang. vertical alignment) Główne wady: MVA, PVA, *VA... Większy kontrast, dobre kąty widzenia, powolne Ograniczone kąty widzenia Wymagane podświetlenie Świecąca czerń Źródło obrazu: http://www.flatscreenexpert.com 16

WYŚWIETLACZE AMOLED Działanie panelu AMOLED (ang. Active Matrix Organic LED) Zbudowane w oparciu o warstwę emisyjną zbudowaną z komórek LED LEDy złożone z polimerów przewodzących Stanem komórek steruje aktywna matryca TFT Matryca TFT Warstwa OLED AMOLED AMLCD Źródło obrazu: http://www.stuff-review.com 17

WYŚWIETLACZE AMOLED Działanie panelu AMOLED (ang. Active Matrix Organic LED) Zalety względem LCD: Kąty widzenia Jasność i kontrast Odwzorowanie barw Giętkie wyświetlacze Prosta budowa Niski koszt Główne wady: Pobór prądu dla jasnych obrazów Ograniczenia patentowe Źródło obrazu: http://www.digitalversus.com 18

WYŚWIETLACZE PDP Zalety względem LCD: Działanie panelu PDP (plazmowego) Emitują wówczas światło ultrafioletowe Pobudzany nim luminofor emituje światło widzialne Wyższy kontrast Głębsza czerń Lepsze kąty widzenia Duże rozmiary ekranu Przyłożenie napięcia do komórek zawierających mieszaninę gazów powoduje doprowadzenie ich do stanu plazmy Zróżnicowanie poziomów jasności uzyskuje się poprzez modulację impulsową PWM (ang. pulse-width modulation) Główne wady: Pobór prądu Wydzielanie ciepła Wypalanie luminoforu Migotanie obrazu Źródło obrazu: Wikipedia 19

WYŚWIETLACZE PDP Działanie panelu PDP (plazmowego) Problem wypalania się luminoforu Wynik działania wysokiej temperatury przez długi czas Powoduje powstanie obrazu-ducha (ang. ghost image) Aby go uniknąć, stosuje się techniki mikroprzesunięć obrazu (ang. pixel orbiting) Źródło obrazu: Wikipedia 20

WYŚWIETLACZE DLP Działanie projektora DLP (ang. Digital Light Processing) Światło emitowane przez silne, wymienne źródło światła, jest odbijane przez matrycę luster DMD (ang. Digital Micromirror Device) w kierunku obiektywu Każdemu pikselowi odpowiada jedno, ruchome lustro Zależnie od położenia lustra, światło jest albo kierowane w stronę obiektywu (jasny piksel), albo na radiator (ciemny) Światło może uprzednio przejść przez obracający się filtr barwny, kolejno barwiący światło na kolory R, G, B Wycinek matrycy DMD złożonej z mikroluster Niektóre projektory wykrozystują inne technologie, np. matryce LCD, trójkolorowe diody LED itp. Po przejściu przez obiektyw światło jest rzucane na ekran, tworząc na nim finalny obraz Źródła obrazów: http://electronicdesign.com http://kubevent.fr 21

WYŚWIETLACZE DLP Działanie projektora DLP Efekt tęczy Artefakt związany ze sposobem uzyskiwania koloru, opartym na mechanicznie poruszającym się filtrze barwnym Oko poruszając się płynnie podczas śledzenia ruchomego obrazu, zauważa stany pośrednie złożone ze składowych kolorystycznych Przy szybkim ruchu wyświetlanej kuli, śledzące ją oko zauważy pośrednie klatki wyświetlane tylko w jednym z kolorów: R, G, B. Źródło obrazu: Wikipedia 22

WYŚWIETLACZE DLP Działanie projektora DLP Efekt tęczy Jeżeli obraz jest wyświetlany przez projektor DLP wyposażony w mechaniczny filtr barwny, wówczas szybko przemieszczając punkt skupienia wzroku ponad czarnym kwadratem powinno się dać zauważyć kolorowe duchy przy jego krawędziach. Źródło obrazu: Wikipedia 23

WYŚWIETLANIE OBRAZU Różnice w sposobie wyświetlania klatki koloru białego w czasie, korzystając z różnych technik Kolor biały Kolor szary (255/255) (10/255) Źródło obrazu: Wikipedia 24

WYŚWIETLANIE OBRAZU Współczesne wyświetlacze komputerowe traktują obraz jako raster Wyświetlacze działają ze stałą częstotliwością odświeżania (dawniej odchylania pionowego) Najczęściej spotykaną częstotliwością odświeżania jest obecnie 60Hz Dla obrazu stereoskopowego, będzie to dwa razy więcej Progresywne wyświetlanie klatki: 1/60s Źródło obrazu: http://www.wikipedia.org 25

WYŚWIETLANIE OBRAZU Karta graficzna odpowiada za stworzenie zawartości obrazu monitora, przechowywanie jej i wysłanie do monitora gdy ten będzie gotowy narysować kolejną klatkę Obraz do wyświetlenia przechowywany jest w buforze klatki (ang. framebuffer) w pamięci graficznej (współcześnie np. GDDR) Bufor klatki posiada takie same cechy, jak zwyczajny obraz: wymiary, liczbę kanałów i rozmiar piksela Obraz Program Obraz (bufor klatki) 26

WYŚWIETLANIE OBRAZU Komponowanie zawartości bufora klatki nie jest natychmiastowe. W grafice czasu rzeczywistego elementy sceny renderowane są jeden po drugim. Zatem dopóki nie zakończy się renderowanie wszystkich elementów sceny, bufor klatki może zawierać nieukończony obraz. Aby uniknąć migotania obrazu podczas jego przerysowywania gdy występuje konieczność jego akutalizacji, stosuje się technikę podwójnego buforowania (ang. double buffering) Mamy wówczas dwa bufory klatki: Bufor "przedni" (ang. front buffer) Bufor "tylny" (ang. back buffer) Jest wyświetlany Jest aktualizowany Gdy zakończy się aktualizacja back buffera, zamieniane są one miejscami (ang. buffer swap) Użycie podwójnego buforowania rozwiązuje ten problem. Dopóki nowa klatka nie zostanie ukończona, wyświetlana będzie poprzednia klatka. Front Front Back 27

WYŚWIETLANIE OBRAZU Komponowanie zawartości bufora klatki nie jest natychmiastowe. W grafice czasu rzeczywistego elementy sceny renderowane są jeden po drugim. Zatem dopóki nie zakończy się renderowanie wszystkich elementów sceny, bufor klatki może zawierać nieukończony obraz. Aby uniknąć migotania obrazu podczas jego przerysowywania gdy występuje konieczność jego akutalizacji, stosuje się technikę podwójnego buforowania (ang. double buffering) Mamy wówczas dwa bufory klatki: Bufor "przedni" (ang. front buffer) Bufor "tylny" (ang. back buffer) Jest wyświetlany Jest aktualizowany Gdy zakończy się aktualizacja back buffera, zamieniane są one miejscami (ang. buffer swap) Użycie podwójnego buforowania rozwiązuje ten problem. Dopóki nowa klatka nie zostanie ukończona, wyświetlana będzie poprzednia klatka. Back Front Front 28

WYŚWIETLANIE OBRAZU Dla zachowania wrażenia płynności wyświetlanego ruchomego obrazu, należy upewnić się że kolejne klatki animacji będą docierać do monitora, gdy ten będzie gotowy je wyświetlić W tym celu stosuje się tzw. synchronizację pionową (ang. vertical synchronisation / VSync) Sterownik karty graficznej lub program czeka z zamianą buforów, aż monitor będzie gotowy wyświetlić kolejną klatkę W innym wypadku pomimo sprzętowej możliwości wygenerowania nawet większej liczby klatek na sekundę niż wyświetla monitor, obraz nie będzie płynny Artefakt nazywany tearing, wyświetlany obraz składający się z więcej niż jednej klatki 29

WYŚWIETLANIE OBRAZU Dla wyświetlaczy oferujących wyższą częstotliwość odświeżania ekranu niż 60Hz, czas cyklu będzie krótszy niż 1/60s. czas renderowania jednej klatki cykl odświeżenia obrazu na wyświetlaczu VSync Off max FPS swap interval = 0 Procesor graficzny czekając na gotowość wyświetlacza nie musi wykonywać operacji, podczas gdy bez użycia synchronizacji od razu zaczynałby renderować kolejną klatkę. VSync On swap interval = 1 VSync On swap interval = 2 (sleep) (sleep) (sleep) 1/60s Użycie synchronizacji pionowej może więc też prowadzić do zmniejszenia zużycia energii. (sleep) 60 FPS (sleep) 30 FPS 1/60s czas 30

WYŚWIETLANIE OBRAZU Synchronizacja pionowa wyłączona Synchronizacja pionowa włączona Artefakt tego rodzaju nazywa się często ang. słowem tearing. 31

WYŚWIETLANIE OBRAZU Technologia NVIDIA G-Sync Synchronizacja wyświetlacza z kartą graficzną czyli podejście odwrotne Wyświetlacz ma adaptacyjną częstotliwość odświeżania, dostosowującą się do aktualnej liczby klatek na sekundę Zakres 30-144 Hz, zależnie od sprzętu Podejście wbrew pozorom nie jest nowe, podobne rozwiązanie Adaptive Sync jest częścią standardu DisplayPort 1.2a zaimplementowane choćby przez AMD w ich FreeSync; różnice: G-Sync duplikuje klatki gdy ich częstotliwość poniżej minimum G-Sync zapobiega nadpisywaniu klatek Źródło obrazu: NVIDIA 32

Kamera w scenie 3D Pojęcie kamery. Implementacja interaktywnej kamery FPP. http://bazyluk.net/dydaktyka Gry komputerowe, Informatyka S1, II Rok, 2017 r.

Kamera Jest to wirtualny koncept opisujący sposób oglądania sceny przez obserwatora, dla którego renderujemy obraz Wyróżnia się dwa podstawowe rodzaje rzutowań: Rzut perspektywiczny Rzut prostokątny (ang. orthographic) 34

Kamera perspektywiczna Kamera musi być opisana w sposób matematyczny, aby możliwe było uwzględnienie jej cech w procesie renderowania Przede wszystkim musi posiadać zdefiniowane: Pozycję (punkt zaczepienia): p Kierunek widzenia: d d p 35

Kamera perspektywiczna Położenie w przestrzeni 3D jest po prostu 3-elementowym wektorem Zmiana położenia powoduje przemieszczenie naszego wirtualnego "aparatu fotograficznego" 36

Kamera perspektywiczna Kierunek w przestrzeni 3D również jest 3-elementowym wektorem Kierunek można rozumieć jako wektor leżący na półprostej łączącej punkt zaczepienia z miejscem, na które kamera ma być skierowana Kierunek zwyczajowo przechowuje się jako wektor jednostkowy ( d = 1 ) 37

Kamera perspektywiczna To jednak nie wystarczy, aby jednoznacznie określić sposób obserwacji sceny Oba poniższe przykłady zostały wyrenderowane z tego samego miejsca, w tym samym kierunku: 38

Kamera perspektywiczna Konieczne jest wprowadzenie dodatkowo wektora pionu (ang. up vector): u Najczęściej jest to (0, 1, 0) jeśli za drugą współrzędną przyjmiemy tę skierowaną ku górze świata u d p 39

Kamera perspektywiczna Dodatkowo kamerę określają: Kąt widzenia (najczęściej w stopniach) fov Jego zmiana odpowiada zmianie ogniskowej obiektywu (popularnie zwanej "zoomem" w aparacie fotograficznym) Nie jest tożsamy z przybliżeniem/oddaleniem kamery! Szeroki kąt Wąski kąt (krótka ogniskowa) (długa ogniskowa) 40

Kamera perspektywiczna Dodatkowo kamerę określają: Odległość płaszczyzn przycinania: bliskiej n i dalekiej f (ang. near/far clipping plane) Określają, od jakiej do jakiej odległości będzie renderowana scena Ma to związek z precyzją bufora głębokości Im większy zakres odległości jest renderowany, tym większa szansa powstania problemów typu z-fighting wartości powinny zostać dobrane odpowiednio do charakterystyki danej sceny f n 41

Test głębokości (ang. depth test) Algorytm malarza (ang. painter's algorithm) Nie jest dokonywany test głębokości Obiekty przykrywają się zgodnie z kolejnością rysowania To, co zostanie narysowane później, zawsze przykryje to, co było narysowane wcześniej Najpierw narysowano fioletowy sześcian Najpierw narysowano niebieski sześcian Źródło obrazu: http://aldream.net 42

Test głębokości (ang. depth test) Algorytm bufora Z Oprócz bufora koloru, tworzony jest też bufor głębokości (bufor Z) o odpowiadającym mu rozmiarze W buforze Z przechowywane są informacje o odległości od kamery tego fragmentu powierzchni obiektu, któremu odpowiada kolor znajdujący się w tym pikselu w buforze koloru Jeśli w wyniku renderowania kolejnego obiektu sceny okaże się, że w danym pikselu bufora już coś się wcześniej znalazło, wykonywany jest test głębokości: Jeśli odległość od kamery nowego fragmentu powierzchni obiektu jest mniejsza niż wartość w buforze głębokości, to nadpisujemy ją nową wartością i nadpisujemy kolor Bo nowy obiekt jest bliżej kamery, więc przysłania to, co wcześniej było w buforze koloru Jeśli odległość od kamery nowego fragmentu jest większa niż wartość w buforze głębokości, to pomijamy nową wartość Bo wcześniej już narysowaliśmy coś, co przysłania nasz nowy obiekt Źródło obrazu: Wikipedia 43

Test głębokości Bufor Z (ang. depth test) Jest jednokanałową mapą bitową, w której każdy na każdy piksel przeznaczono określoną liczbę bitów W związku z tym możliwe jest zapisanie jedynie skończonej liczby różnych wartości odległości od kamery Najczęściej 24 bity lub 32 bity np. wartości całkowite od 0 do 224-1 Prowadzi to do potencjalnych konfliktów d [m] 0 Źródło obrazu: Wikipedia 44

Test głębokości Precyzja bufora Z (ang. depth test) Zbyt mała precyzja prowadzi do konfliktów, które objawiają się artefaktem z-fighting Należy ograniczyć zakres odległości Poprzez użycie płaszczyzn odcinania Stosuje się nieliniowe mapowanie odległości na wartości bufora Z Najczęściej logarytmiczne Większa precyzja dla małych odległości, mniejsza dla dużych Mapowanie liniowe: 0 Źródło obrazu: GeeXLab, JEGX Mapowanie nieliniowe: d [m] 0 d [m] 45

Test widoczności (ang. visibility test) Istotny problem w środowiskach 3D: Renderowanie tylko tych powierzchni, które są widoczne Idea bufora Z przez wiele lat była niemożliwa do użycia w czasie rzeczywistym Podejście oparte na wysyłaniu promieni (ang. ray casting) Jeśli poruszamy się tylko po płaszczyźnie, wystarczy tylko tyle promieni, ile mamy pikseli w poziomie w buforze klatki Perspektywa: na podstawie odległości rysujemy pionową linię o proporcjonalnej wysokości Źródła obrazów: Fabien Sanglard, WIkipedia 46

Test widoczności (ang. visibility test) Podejście oparte na wysyłaniu promieni (ang. ray casting) Za głównego popularyzatora ray castingu jako narzędzia służącego do renderowania ścian pseudo-trójwymiarowej sceny uważa się Johna Carmacka, założyciela id Software. Pierwsze użycie tego podejścia miało miejsce w grze Hovertank 3D. Podejście to, wzbogacone o mapowanie tekstur i proste oświetlenie, zostało użyte w bardzo popularnej w swoich czasach grze Wolfenstein 3D. Źródła obrazów: id Software, Wikipedia 47

Test głębokości (ang. depth test) Można stosować komponowanie klatki za pomocą zarówno testu głębokości, jak i algorytmu malarza. Interfejs użytkownika zwykle nanosimy na wyrenderowaną wizualizację świata bez użycia testu głębokości Kiedyś stosowano uproszczenia w celu przyspieszenia renderowania, np. samochód gracza mógł być rysowany na tle otoczenia, bo rzadko kiedy dochodzi do sytuacji w której miałby być czymś przysłonięty Źródło obrazu: Virgin Interactive 48

Kamera perspektywiczna Dodatkowo kamerę określają: Proporcje boków podstawy ściętego ostrosłupa (ang. frustum) Stosunek szerokości do wysokości 4:3, 16:9, 16:10,... 49

Kamera perspektywiczna Podsumowując, do jednoznacznego opisania kamery potrzebne są wartości następujących atrybutów: Cechy widoku: Położenie Kierunek Wektor pionu Cechy projekcji: Kąt widzenia Odległości płaszczyzn przycinania Proporcje 50

Kamera w OpenGL Aby opisać jednoznacznie położenie kamery, należy określić: Pozycję p Kierunek widzenia d Wektor pionu u Każdy z tych elementów w przestrzeni 3D jest 3-elementowym wektorem u d p 51

Kamera w OpenGL Aby łatwo uzyskać w OpenGL macierz transformacji odpowiadającą kamerze umieszczonej w zadanym punkcie, patrzącą w zadanym kierunku i o zadanym wektorze pionu, najlepiej posłużyć się funkcją: glulookat( eyex, eyey, eyez, lookatx, lookaty, lookatz, upx, upy, upz ) eye* - współrzędne XYZ punktu zaczepienia kamery lookat* - współrzędne XYZ punktu, na który ma spoglądać kamera up* - współrzędne XYZ wektora pionu W dalszych rozważaniach dla uproszczenia przyjmiemy, że wektor pionu zawsze będzie równy (0;1;0) 52

Kamera w OpenGL Należy zwrócić uwagę, że glulookat() nie przyjmuje kierunku widzenia kamery, a punkt na który kamera ma spoglądać Jest to szczególnie istotne, gdy naszym zadaniem jest zaprogramowanie interaktywnej kamery pierwszoosobowej W takim przypadku dużo wygodniej jest przechowywać kierunek widzenia jako wektor jednostkowy Na podstawie pozycji kamery o raz kierunku można łatwo uzyskać współrzędne punktu, który można przekazać do glulookat(). d p 53

Kamera w OpenGL Należy zwrócić uwagę, że glulookat() nie przyjmuje kierunku widzenia kamery, a punkt na który kamera ma spoglądać Jest to szczególnie istotne, gdy naszym zadaniem jest zaprogramowanie interaktywnej kamery pierwszoosobowej W takim przypadku dużo wygodniej jest przechowywać kierunek widzenia jako wektor jednostkowy Na podstawie pozycji kamery o raz kierunku można łatwo uzyskać współrzędne punktu, który można przekazać do glulookat(). d p 54

Kamera w OpenGL Należy zwrócić uwagę, że glulookat() nie przyjmuje kierunku widzenia kamery, a punkt na który kamera ma spoglądać Jest to szczególnie istotne, gdy naszym zadaniem jest zaprogramowanie interaktywnej kamery pierwszoosobowej Punkt o współrzędnych p+d bez wątpienia znajduje się na osi widzenia kamery znajdującej się w punkcie p, skoro wektor d wskazuje jej kierunek widzenia. W takim przypadku dużo wygodniej jest przechowywać kierunek widzenia jako wektor jednostkowy Na podstawie pozycji kamery o raz kierunku można łatwo uzyskać współrzędne punktu, który można przekazać do glulookat(). d p+d p 55

Stan kamery Reprezentacja stanu kamery w pamięci Strukturę/klasę przechowującą dane wektora wygodnie jest rozbudować o przydatne metody (np. długość, normalizacja, iloczyn wektorowy) i przeciążone operatory dla częstych operacji arytmetycznych. Podejść do implementacji kamery jest wiele. Przytoczone tutaj jest wygodne dla prostych scen i stosunkowo łatwe w zrozumieniu. Poszukując rozwiązania bardziej uniwersalnego, warto przyjrzeć się podejściu opartemu na kwaternionach. Wygodne jest zapamiętanie trzech wektorów 3-elementowych: Położenia Kierunku patrzenia Pionu Sugerowane jest utworzenie struktury przechowującej trzy składowe XYZ: struct vec3 { float x, y, z; }; Wówczas stan kamery można przedstawić następująco: struct SCameraState { vec3 pos; vec3 dir; vec3 up; }; 56

Stan kamery Jako że dla uproszczenia przyjęliśmy, że wektor pionu jest stały, możemy go pominąć Przydatne może okazać się przechowanie aktualnej prędkości przesuwania kamery Np. w celu płynnego wygaszania ruchu Zatem struktura stanu kamery może przyjąć następującą postać: struct SCameraState { vec3 pos; vec3 dir; float speed; }; Na potrzeby zadania utworzymy globalną instancję tej struktury i nazwiemy ją player SCameraState player; 57

Stan kamery W takiej sytuacji, możemy każdorazowo zasilać wywołanie glulookat() następującymi danymi: glulookat( player.pos.x, player.pos.y, player.pos.z, player.pos.x + player.dir.x, player.pos.y + player.dir.y, player.pos.z + player.dir.z, 0, 1, 0 ); 58

Ruch kamery w przód/tył Aby zrealizować taki ruch, trzeba zmodyfikować położenie kamery kierunek i pion pozostaną bez zmian "Przód" w danym momencie odpowiada wektorowi kierunku kamery Pozycję po przesunięciu obliczamy w prosty sposób: p ' = p+ speed d d p d p' p p' Mała prędkość (mnożnik) Duża prędkość (mnożnik) 59

Ruch kamery w bok Aby uwzględnić kierunek widzenia kamery, ruszając się na boki należy poruszać się po kierunku prostopadłym W założeniu mamy poruszać się tylko po płaszczyźnie XZ e p' d p p ' = p+ speed e, e d Jak wyznaczyć wektor prostopadły do danego? () ( ) dx d= d y dz d z e= 0 dx 60

Obrót kamery Obrót kamery jest zmianą kierunku jej widzenia, bez wpływu na punkt zaczepienia W założeniu mamy poruszać się tylko po płaszczyźnie XZ Rezultatem jest wektor kierunku obrócony o zadany kąt Jak wyliczyć jego współrzędne? d p d' 61

Obrót wektora kierunku w 2D y Dla uproszczenia sprowadźmy problem do dwóch wymiarów. d Będziemy dokonywać obrotu tylko w obrębie jednej płaszczyzny, którą roboczo nazwiemy x/y. x Chcąc poruszać się po płaszczyźnie x/z układu współrzędnych OpenGL należy odpowiednio zmienić oznaczenie osi! 62

Obrót wektora kierunku w 2D y Chcemy dokonać obrotu kamery o zadany kąt α. α Miara tego kąta może być rozumiana jako krok wykonany podczas tej jednej operacji obracania. d x 63

Obrót wektora kierunku w 2D y d' Naszym wynikiem powinien być nowy wektor kierunku d', uzyskany po obróceniu pierwotnego wektora d wokół początku układu współrzędnych. α d x 64

Obrót wektora kierunku w 2D y d' = (xd'; yd') d = (xd; yd) Można przyjąć, że wektory zaczepione w początku układu współrzędnych to położenia punktów znajdujących się na ich końcach. α x 65

Obrót wektora kierunku w 2D y d' = (xd'; yd') d = (xd; yd) Rozpatrzmy najpierw samą współrzędną x. α Znamy xd xd' xd x Znamy miarę kąta α Nie znamy natomiast xd 66

Obrót wektora kierunku w 2D y d' = (xd'; yd') d = (xd; yd) yd' Analogiczna sytuacja zachodzi dla współrzędnej y. yd Znamy yd α xd' xd x Znamy miarę kąta α Nie znamy natomiast yd 67

Obrót wektora kierunku w 2D y d' = (xd'; yd') yd' Dodatkowo wiemy, że długości wektorów d i d są równe 1 ponieważ przyjęliśmy takie założenie odnośnie wektora d, a także chcemy aby nasz d zachował tę własność. yd 1 α xd' 1 xd d = (xd; yd) x 68

Obrót wektora kierunku w 2D y yd' 1 Warto zwrócić uwagę, że mamy tu do czynienia z dwoma trójkątami prostokątnymi. α xd' 1.. xd yd x { xd, xd, yd, yd } są długościami kolejnych przyprostokątnych, zaś przeciwprostokątne mają długość 1. 69

Obrót wektora kierunku w 2D y yd' 1 Gdyby znać miarę kąta α+β, znając długość przeciwprostokątnej (jest równa 1), możliwe byłoby wyznaczenie długości przyprostokątnej czerwonego trójkąta (czyli xd lub yd ) z pomocą odpowiednich funkcji trygonometrycznych. α xd' 1 yd β xd x 70

Obrót wektora kierunku w 2D y yd' 1 Miarę kąta β możemy znaleźć posługując się znanymi długościami boków zielonego trójkąta. α xd' tan (β)= 1 yd β xd x yd xd 71

Obrót wektora kierunku w 2D y Najwygodniej, z uwagi na możliwość wystąpienia kąta w dowolnej ćwiartce układu współrzędnych, posłużyć się funkcją atan2. Funkcja cyklometryczna atan2 jest dwuargumentową odmianą funkcji arcus tangens, biorącą pod uwagę ćwiartkę układu w której znajduje się zadany kąt. yd' 1 α xd' tan (β)= yd xd 1 yd β xd x β=atan 2( y d, x d ) [http://en.wikipedia.org/wiki/atan2] 72

Obrót wektora kierunku w 2D Kiedy już znamy miarę kąta β, możemy przystąpić do obliczania długości przyprostokątnych czerwonego trójkąta korzystając z funkcji trygonometrycznych sinus i cosinus. y yd' 1 α xd' tan (β)= yd xd 1 yd β xd x β=atan 2( y d, x d ) xd ' =cos(β+α) d ' yd ' =sin (β+α) d ' 73

Obrót wektora kierunku w 2D y d' = (xd'; yd') Pamiętamy, że długość przeciwprostokątnych jest równa 1, co dodatkowo upraszcza obliczenia. W ten sposób otrzymujemy ostateczne współrzędne punktu d po obrocie punktu d o kąt α wokół początku układu współrzędnych. yd' 1 α xd' tan (β)= yd xd 1 d = (xd; yd) yd β xd x β=atan 2( y d, x d ) x d ' =cos(β+α) y d ' =sin (β+α) 74

Kamera w scenie 3D Pojęcie kamery. Implementacja interaktywnej kamery FPP. http://bazyluk.net/dydaktyka Gry komputerowe, Informatyka S1, II Rok, 2017 r.