Wyświetlanie obrazu Bufor klatki, synchronizacja pionowa, pętla główna gry.
|
|
- Wiktor Witek
- 5 lat temu
- Przeglądów:
Transkrypt
1 Wyświetlanie obrazu Bufor klatki, synchronizacja pionowa, pętla główna gry. Gry komputerowe, Informatyka S1, II Rok, 2018 r.
2 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. 2
3 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: Wikipedia 3
4 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: 4
5 WYŚWIETLANIE KLATEK Karta graficzna odpowiada za przygotowanie zawartości klatki, przechowywanie jej i wysłanie do monitora gdy ten będzie gotowy wyświetlić kolejną klatkę Obraz do wyświetlenia przechowywany jest w buforze klatki Proces generowania zawartości bufora klatki i proces przesyłania jej do wyświetlacza są niezależne Program Renderowanie Bufor klatki Wyświetlanie KARTA GRAFICZNA 5
6 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 6
7 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 7
8 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 8
9 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 9
10 WYŚWIETLANIE OBRAZU Synchronizacja pionowa wyłączona Synchronizacja pionowa włączona Artefakt tego rodzaju nazywa się często ang. słowem tearing. 10
11 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 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 11
12 GAME LOOP Nieskończona pętla Warunkiem stopu jest wystąpienie żądania zakończenia działania programu Postać podstawowej wersji pętli: while (użytkownik nie chce wyjść) { sprawdź urządzenia wejścia; wykonaj zadania AI; przemieść przeciwników; sprawdź kolizje; renderuj świat; odtwórz dźwięki; prześlij dane do serwera;... } 12
13 GAME LOOP W dalszych rozważaniach przyjmiemy uproszczenie, że podstawowy game loop ma postać: while (użytkownik nie chce wyjść) { aktualizuj stan gry; renderuj świat gry; } Zatem zdefiniujmy następujące określenia: Aktualizacja stanu gry Wszystkie operacje wpływające na stan świata, wynik rozgrywki, pozycję obiektów, obsługa wejścia i zdarzeń,... Renderowanie świata gry Wybór obiektów do renderowania, wyznaczenie ich macierzy przekształceń, zlecenie renderowania karcie graficznej, zamiana buforów,... 13
14 GAME LOOP Najprostsza forma: IMPLEMENTACJE while (użytkownik nie chce wyjść) { aktualizuj stan gry; renderuj świat gry; } Podstawowy game loop Aktualizacja występuje ze stałym krokiem. Absolutnie nie jest to podejście zalecane! Zalety: Prostota (?) Problemy: Szybkość rozgrywki zależna od wydajności sprzętu Szybkość rozgrywki może się zmieniać w trakcie gry 14
15 GAME LOOP IMPLEMENTACJE Stały krok gry Podejście może być korzystne w przypadku gier na urządzenia mobilne. Może bowiem redukować zużycie energii. Określamy, co ile czasu ma wykonać się aktualizacja stanu gry. Każda aktualizacja stanu zawsze oznacza następujące po nim renderowanie obrazu. Zalety: Stałe tempo gry (o ile wystarczający sprzęt) Oszczędność baterii Problemy: Sprzęt nie daje rady osiągnąć tyle FPS => gra zwalnia. Wydajny sprzęt => i tak mamy tyle FPS, co update'ów. 15
16 GAME LOOP IMPLEMENTACJE Krok gry uzależniony od FPS Pozwalamy na renderowanie tak szybko, jak to jest możliwe. Każdemu renderowaniu towarzyszy aktualizacja stanu ze zmiennym krokiem. Podejście na pierwszy rzut oka bardzo dobre, ale ma istotne słabe strony. Zalety: Maksymalna liczba FPS Problemy: Niedeterminizm rozgrywki Konieczność aktualizacji zależnej od zmiennego czynnika 16
17 GAME LOOP IMPLEMENTACJE Stały krok gry i maksimum FPS Podejście w podstawowej postaci prowadzi do marnowania mocy obliczeniowej. Rozwinięcie koncepcji stałego kroku aktualizacji Jeśli mamy opóźnienie, to wykonujemy dodatkową aktualizację ze stałym krokiem żeby nadrobić stratę. Zalety: Jeśli mamy jeszcze czas do zaplanowanej, następnej aktualizacji, to renderujemy dodatkową klatkę. Rozwiązuje problem wpływu długiego czasu renderowania na częstotliwość aktualizacji. Eliminuje zbędne oczekiwanie (czasem to minus). Problemy: Jeśli mamy odpowiednio wydajny sprzęt, renderujemy wiele takich samych klatek. 17
18 GAME LOOP IMPLEMENTACJE Stały krok gry i maksimum FPS + interpolacja Aby nie renderować identycznych klatek pomiędzy aktualizacjami, można dokonać interpolacji. Wprowadza opóźnienie o wielkości jednego cyklu. Innym, pokrewnym podejściem jest predykcja. Szczególnie dla wartości kontrolowanych przez gracza może wywołać niepożądane efekty. Podejście zalecane dla jednowątkowej architektury. Zalety: Stały krok aktualizacji, maksimum FPS. Każda klatka jest inna. Problemy: Nieznaczne opóźnienie. 18
19 GAME LOOP IMPLEMENTACJE Zrównoleglony game loop Rozdzielenie aktualizacji i renderowania na dwa osobne wątki, które mogą być wykonywane równolegle przez np. procesor wielordzeniowy. Konieczne jest korzystanie z interpolacji bądź predykcji. Schemat w przykładzie jest tutaj uproszczony. Wątków może być znacznie więcej. Zalety: Współbieżne renderowanie i aktualizacja, niezależne od siebie. Stały krok aktualizacji i maksymalna liczba FPS. Problemy: Konieczność uważnego planowania architektury silnika. 19
20 GAME LOOP IMPLEMENTACJE Wielowątkowość w grach możliwości i problemy Nie warto uciekać od wielowątkowości w nowoczesnych silnikach. Współczesny sprzęt daje ogromne możliwości. Należy je wykorzystać. Jeden kontekst OpenGL może w danym momencie być używany tylko przez jeden wątek. Komunikacja CPU -> karta graficzna nie może być traktowana jako możliwa do zrównoleglenia. Można stworzyć kilka kontekstów, które współdzielą dane nie jest to jednak podejście wydajne ani zalecane. Inne możliwości wykorzystania wielowątkowości: Odczyt tekstur i zasobów z dysku odbywający się "w tle". Dysk nie jest urządzeniem pozwalającym na odczyt równoległy (z wyłączeniem macierzy dyskowych i wewnętrznego przetwarzania w dyskach SSD)! Wydajna, zrównoleglona aktualizacja stanu: Obliczenia AI podzielone na kilka wątków. Symulacja fizyki. Systemy cząsteczkowe. Odtwarzanie dźwięku. 20
21 GAME LOOP IMPLEMENTACJE Należy rozważyć przede wszystkim dwa podstawowe podejścia: Użycie w GLUT Implementacja pętli głównej w GLUT (i freeglut) nie należy do elastycznych. Chcąc mieć większą kontrolę nad działaniem pętli głównej warto sięgnąć po inną bibliotekę, np. GLFW. Stały krok aktualizacji i dowolna liczba klatek Ograniczona precyzja timera możliwe przeskoki co sekundę z powodu tego, że 17ms to nie 1/60. Można też uwzględnić "nadganianie" sytuacji gdy od ostatniej aktualizacji świata minie faktycznie znacznie więcej czasu, niż zakładano. // main: gluttimerfunc(17, OnTimer, 0); glutdisplayfunc(onrender); void OnTimer(int id) { gluttimerfunc(17, OnTimer, 0); // aktualizacja świata } void OnRender() { // renderowanie świata } 21
22 GAME LOOP IMPLEMENTACJE Należy rozważyć przede wszystkim dwa podstawowe podejścia: Użycie w GLUT Implementacja pętli głównej w GLUT (i freeglut) nie należy do elastycznych. Chcąc mieć większą kontrolę nad działaniem pętli głównej warto sięgnąć po inną bibliotekę, np. GLFW. Zmienny krok aktualizacji, zależny od liczby klatek Pełna płynność animacji Trzeba uważać na sytuacje, w których z jakiegoś powodu dt jest nienaturalnie duży (warto wtedy rozważyć limit i/lub wykonanie kilku podkroków aby "nadgonić" czas) int lasttime = 0; // main: glutdisplayfunc(onrender); void OnRender() { int currenttime = glutget(glut_elapsed_time); float dt =.001f * (currenttime lasttime); // [s] lasttime = currenttime; // aktualizacja świata z krokiem dt // renderowanie świata } 22
23 Kamera w scenie 3D Pojęcie kamery. Implementacja interaktywnej kamery FPP. Gry komputerowe, Informatyka S1, II Rok, 2018 r.
24 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) 24
25 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 25
26 Kamera perspektywiczna Położenie w przestrzeni 3D jest po prostu 3-elementowym wektorem Zmiana położenia powoduje przemieszczenie naszego wirtualnego "aparatu fotograficznego" 26
27 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 ) 27
28 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: 28
29 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 29
30 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) 30
31 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 31
32 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: 32
33 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 33
34 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 Prowadzi to do potencjalnych konfliktów d [m] 0 Źródło obrazu: Wikipedia 34
35 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] 35
36 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 36
37 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 37
38 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 38
39 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,... 39
40 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 40
41 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 41
42 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) 42
43 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 43
44 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 44
45 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 45
46 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; }; 46
47 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; 47
48 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 ); 48
49 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) 49
50 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 50
51 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' 51
52 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! 52
53 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 53
54 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 54
55 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 55
56 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 56
57 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 57
58 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 58
59 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. 59
60 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 60
61 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 61
62 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 ) [ 62
63 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 ' 63
64 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 (β+α) 64
65 Kamera w scenie 3D Pojęcie kamery. Implementacja interaktywnej kamery FPP. Gry komputerowe, Informatyka S1, II Rok, 2018 r.
Grafika Komputerowa, Informatyka, I Rok
KAMERA W SCENIE 3D Pojęcie kamery. Implementacja interaktywnej kamery FPP. Test i bufor głębokości. Grafika Komputerowa, Informatyka, I Rok Kamera Jest to wirtualny koncept opisujący sposób oglądania sceny
Bardziej szczegółowoWyświetlanie obrazu Techniki wyświetlania obrazu i ich zastosowanie w grach.
Wyświetlanie obrazu Techniki wyświetlania obrazu i ich zastosowanie w grach. http://bazyluk.net/dydaktyka Gry komputerowe, Informatyka N1, III Rok, 2018 r. WYŚWIETLANIE OBRAZU Współczesne wyświetlacze
Bardziej szczegółowoBartosz Bazyluk SYNTEZA GRAFIKI 3D Grafika realistyczna i czasu rzeczywistego. Pojęcie sceny i kamery. Grafika Komputerowa, Informatyka, I Rok
SYNTEZA GRAFIKI 3D Grafika realistyczna i czasu rzeczywistego. Pojęcie sceny i kamery. Grafika Komputerowa, Informatyka, I Rok Synteza grafiki 3D Pod pojęciem syntezy grafiki rozumiemy stworzenie grafiki
Bardziej szczegółowoWyświetlanie obrazu Techniki wyświetlania obrazu i ich zastosowanie w grach.
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
Bardziej szczegółowoWyświetlanie obrazu Techniki wyświetlania obrazu komputerowego.
Wyświetlanie obrazu Techniki wyświetlania obrazu komputerowego. http://bazyluk.net/dydaktyka Grafika Komputerowa i Wizualizacja, Informatyka S1, II Rok WYŚWIETLANIE OBRAZU Techniki wyświetlania obrazu
Bardziej szczegółowoGrafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30
Wykład 4 mgr inż. 1/30 Synteza grafiki polega na stworzeniu obrazu w oparciu o jego opis. Synteza obrazu w grafice komputerowej polega na wykorzystaniu algorytmów komputerowych do uzyskania obrazu cyfrowego
Bardziej szczegółowoGRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych
GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych Grafika komputerowa i wizualizacja, Bioinformatyka S1, II Rok Synteza grafiki 3D Pod pojęciem syntezy grafiki rozumiemy
Bardziej szczegółowoGrafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38
Wykład 5 Potok Renderowania Oświetlenie mgr inż. 1/38 Podejście śledzenia promieni (ang. ray tracing) stosuje się w grafice realistycznej. Śledzone są promienie przechodzące przez piksele obrazu wynikowego
Bardziej szczegółowoBartosz Bazyluk GAME LOOP Podstawowy element silnika gry komputerowej. Programowanie Gier Komputerowych, Informatyka S1, III Rok
Bartosz Bazyluk GAME LOOP Podstawowy element silnika gry komputerowej Programowanie Gier Komputerowych, Informatyka S1, III Rok INFORMACJE ORGANIZACYJNE: Prezentacje z wykładów, materiały, informacje można
Bardziej szczegółowoAnimowana grafika 3D. Opracowanie: J. Kęsik.
Animowana grafika 3D Opracowanie: J. Kęsik kesik@cs.pollub.pl Rzutowanie Równoległe Perspektywiczne Rzutowanie równoległe Rzutowanie równoległe jest powszechnie używane w rysunku technicznym - umożliwienie
Bardziej szczegółowoBartosz Bazyluk WYŚWIETLANIE OBRAZU Techniki wyświetlania obrazu komputerowego. Grafika Komputerowa, Informatyka, I Rok
Techniki wyświetlania obrazu komputerowego. http://bazyluk.net/zpsb Grafika Komputerowa, Informatyka, I Rok Techniki wyświetlania obrazu Wyświetlacze CRT Wyświetlacze LCD Wyświetlacze PDP Wyświetlacze
Bardziej szczegółowoBartosz Bazyluk OpenGL Deferred shading. Pętla główna i jej implementacje. Debugowanie i analiza wydajności.
OpenGL Deferred shading. Pętla główna i jej implementacje. Debugowanie i analiza wydajności. Algorytmy grafiki komputerowej czasu rzeczywistego, Informatyka S2 FORWARD W klasycznym podejściu (ang. forward
Bardziej szczegółowoGRAFIKA CZASU RZECZYWISTEGO Interakcja, ruch kamery, oświetlenie.
Bartosz Bazyluk GRAFIKA CZASU RZECZYWISTEGO Interakcja, ruch kamery, oświetlenie. Grafika komputerowa i wizualizacja, Bioinformatyka S1, II Rok Kamera w OpenGL Aby opisać jednoznacznie położenie kamery,
Bardziej szczegółowo0. 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
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 obserwatora f) w kierunku od obserwatora 1. Obrót dookoła osi
Bardziej szczegółowo2 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 2 1/6 Grafika Komputerowa 3D Instrukcja laboratoryjna Temat: Manipulowanie przestrzenią 2 Przygotował: mgr inż. Maciej Lasota 1) Manipulowanie przestrzenią Istnieją dwa typy układów współrzędnych:
Bardziej szczegółowoGrafika Komputerowa Wykład 3. Wyświetlanie. mgr inż. Michał Chwesiuk 1/24
Wykład 3 Wyświetlanie mgr inż. 1/24 Techniki wyświetlania obrazu Obraz w grafice komputerowej jest to zbiór informacji o zawartości obrazu w pamięci komputera. Należy dokonać rekonstrukcji obrazu w taki
Bardziej szczegółowoGrafika komputerowa i wizualizacja
Grafika komputerowa i wizualizacja Radosław Mantiuk ( rmantiuk@wi.zut.edu.pl, p. 315 WI2) http://rmantiuk.zut.edu.pl Katedra Systemów Multimedialnych Wydział Informatyki, Zachodniopomorski Uniwersytet
Bardziej szczegółowoGrafika Komputerowa. Wykład 8. Przygotowanie do egzaminu. mgr inż. Michał Chwesiuk 1/32
Grafika Komputerowa Wykład 8 Przygotowanie do egzaminu mgr inż. 1/32 Obraz Grafika Rastrowa Grafika Wektorowa Obraz przechowywany w pamięci w postaci próbki opisane za pomocą macierzy pikseli Każdy piksel
Bardziej szczegółowoTrójwymiarowa grafika komputerowa rzutowanie
Trójwymiarowa grafika komputerowa rzutowanie Mirosław Głowacki Wydział Inżynierii Metali i Informatyki Przemysłowej Rzutowanie w przestrzeni 3D etapy procesu rzutowania określenie rodzaju rzutu określenie
Bardziej szczegółowoTransformacje obiektów 3D
Synteza i obróbka obrazu Transformacje obiektów 3D Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych Lokalny układ współrzędnych Tworząc model obiektu, zapisujemy
Bardziej szczegółowoPodstawy grafiki komputerowej
Podstawy grafiki komputerowej Krzysztof Gracki K.Gracki@ii.pw.edu.pl tel. (22) 6605031 Instytut Informatyki Politechniki Warszawskiej 2 Sprawy organizacyjne Krzysztof Gracki k.gracki@ii.pw.edu.pl tel.
Bardziej szczegółowoGry Komputerowe Interaktywna kamera FPP
Gry Komputerowe Interaktywna kamera FPP Michał Chwesiuk Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Wydział Informatyki 28 Marzec 2018 Michał Chwesiuk Laboratorium 2 28 Marzec 2018 1/ 11
Bardziej szczegółowoBartosz Bazyluk WPROWADZENIE Wstęp do dwuwymiarowej grafiki komputerowej.
WPROWADZENIE Wstęp do dwuwymiarowej grafiki komputerowej http://bazyluk.net/dydaktyka Grafika komputerowa i wizualizacja, Bioinformatyka S1, II Rok O MNIE mgr inż. Pokój 322/WI2 bbazyluk@wi.zut.edu.pl
Bardziej szczegółowoZaawansowana Grafika Komputerowa
Zaawansowana Komputerowa Michał Chwesiuk Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Wydział Informatyki 28 Luty 2017 Michał Chwesiuk Zaawansowana Komputerowa 28 Luty 2017 1/11 O mnie inż.
Bardziej szczegółowoStruktury Danych i Złożoność Obliczeniowa
Struktury Danych i Złożoność Obliczeniowa Zajęcia 1 Podstawowe struktury danych Tablica Najprostsza metoda przechowywania serii danych, zalety: prostota, wady: musimy wiedzieć, ile elementów chcemy przechowywać
Bardziej szczegółowoMonitory Opracował: Andrzej Nowak
Monitory Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz PC Format, nr 3 2008r. Kineskop ogólna budowa Monitory CRT Zasada działania monitora Monitory służą do
Bardziej szczegółowoProgramowanie Procesorów Graficznych
Programowanie Procesorów Graficznych Wykład 1 9.10.2012 Prehistoria Zadaniem karty graficznej było sterowanie sygnałem do monitora tak aby wyświetlić obraz zgodnie z zawartościa pamięci. Programiści pracowali
Bardziej szczegółowoRysunek 1: Okno timeline wykorzystywane do tworzenia animacji.
Ćwiczenie 5 - Tworzenie animacji Podczas tworzenia prostej animacji wykorzystywać będziemy okno Timeline domyślnie ustawione na dole okna Blendera (Rys. 1). Proces tworzenia animacji polega na stworzeniu
Bardziej szczegółowoCo 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
Oznaczenia A, B, 1, 2, I, II, punkty a, b, proste α, β, płaszczyzny π 1, π 2, rzutnie k kierunek rzutowania d(a,m) odległość punktu od prostej m(a,b) prosta przechodząca przez punkty A i B α(1,2,3) płaszczyzna
Bardziej szczegółowoAutomatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych
Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych autor: Robert Drab opiekun naukowy: dr inż. Paweł Rotter 1. Wstęp Zagadnienie generowania trójwymiarowego
Bardziej szczegółowoOświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.
Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania. Chcąc osiągnąć realizm renderowanego obrazu, należy rozwiązać problem świetlenia. Barwy, faktury i inne właściwości przedmiotów postrzegamy
Bardziej szczegółowo3. KINEMATYKA Kinematyka jest częścią mechaniki, która zajmuje się opisem ruchu ciał bez wnikania w jego przyczyny. Oznacza to, że nie interesuje nas
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 oddziaływanie między ciałami, ani też rola, jaką to
Bardziej szczegółowo8. TRYGONOMETRIA FUNKCJE TRYGONOMETRYCZNE KĄTA OSTREGO.
WYKŁAD 6 1 8. TRYGONOMETRIA. 8.1. FUNKCJE TRYGONOMETRYCZNE KĄTA OSTREGO. SINUSEM kąta nazywamy stosunek przyprostokątnej leżącej naprzeciw kąta do przeciwprostokątnej w trójkącie prostokątnym : =. COSINUSEM
Bardziej szczegółowoPodstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Bardziej szczegółowoZ ostatniego wzoru i zależności (3.20) można obliczyć n6. Otrzymujemy (3.23) 3.5. Transformacje geometryczne
46 III. Przekształcenia w przestrzeni trójwymiarowej Z ostatniego wzoru i zależności (3.20) można obliczyć n6. Otrzymujemy (3.23) 3.5. Transformacje geometryczne Złożone obiekty trójwymiarowe można uważać,
Bardziej szczegółowoJulia 4D - raytracing
i przykładowa implementacja w asemblerze Politechnika Śląska Instytut Informatyki 27 sierpnia 2009 A teraz... 1 Fraktale Julia Przykłady Wstęp teoretyczny Rendering za pomocą śledzenia promieni 2 Implementacja
Bardziej szczegółowoMisja#3. Robimy film animowany.
Po dzisiejszej lekcji będziesz: tworzyć programy animujące obiekty na ekranie komputera określać położenie i orientację obiektu w kartezjańskim układzie współrzędnych Zauważ że... Ludzkie oko charakteryzuje
Bardziej szczegółowoGRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego.
GRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego. http://bazyluk.net/zpsb Grafika Komputerowa, Informatyka, I Rok PROGRAMOWANIE GRAFIKI KOMPUTEROWEJ CZASU RZECZYWISTEGO Grafika
Bardziej szczegółowoProgramowanie współbieżne Wykład 2. Iwona Kochańska
Programowanie współbieżne Wykład 2 Iwona Kochańska Miary skalowalności algorytmu równoległego Przyspieszenie Stały rozmiar danych N T(1) - czas obliczeń dla najlepszego algorytmu sekwencyjnego T(p) - czas
Bardziej szczegółowoWykład 4. Rendering (1) Informacje podstawowe
Wykład 4. Rendering (1) Informacje podstawowe Z punktu widzenia dzisiejszego programowania gier: Direct3D jest najczęściej wykorzystywanym przez profesjonalnych deweloperów gier API graficznym na platformie
Bardziej szczegółowoPlan wykładu. Akcelerator 3D Potok graficzny
Plan wykładu Akcelerator 3D Potok graficzny Akcelerator 3D W 1996 r. opracowana została specjalna karta rozszerzeń o nazwie marketingowej Voodoo, którą z racji wspomagania procesu generowania grafiki 3D
Bardziej szczegółowoFunkcje trygonometryczne w trójkącie prostokątnym
Funkcje trygonometryczne w trójkącie prostokątnym Oznaczenia boków i kątów trójkąta prostokątnego użyte w definicjach Sinus Sinusem kąta ostrego w trójkącie prostokątnym nazywamy stosunek przyprostokątnej
Bardziej szczegółowoIRONCAD. TriBall IRONCAD Narzędzie pozycjonujące
IRONCAD IRONCAD 2016 TriBall o Narzędzie pozycjonujące Spis treści 1. Narzędzie TriBall... 2 2. Aktywacja narzędzia TriBall... 2 3. Specyfika narzędzia TriBall... 4 3.1 Kula centralna... 4 3.2 Kule wewnętrzne...
Bardziej szczegółowoW naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.
1. Podstawy matematyki 1.1. Geometria analityczna W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora. Skalarem w fizyce nazywamy
Bardziej szczegółowoGrafika komputerowa Wykład 4 Geometria przestrzenna
Grafika komputerowa Wykład 4 Geometria przestrzenna Instytut Informatyki i Automatyki Państwowa Wyższa Szkoła Informatyki i Przedsiębiorczości w Łomży 2 0 0 9 Spis treści Spis treści 1 Geometria 3D - podstawowe
Bardziej szczegółowoTemat: Transformacje 3D
Instrukcja laboratoryjna 11 Grafika komputerowa 3D Temat: Transformacje 3D Przygotował: dr inż. Grzegorz Łukawski, mgr inż. Maciej Lasota, mgr inż. Tomasz Michno 1 Wstęp teoretyczny Bardzo często programując
Bardziej szczegółowoKRYTERIA OCENIANIA Z MATEMATYKI W OPARCIU O PODSTAWĘ PROGRAMOWĄ I PROGRAM NAUCZANIA MATEMATYKA 2001 DLA KLASY DRUGIEJ
KRYTERIA OCENIANIA Z MATEMATYKI W OPARCIU O PODSTAWĘ PROGRAMOWĄ I PROGRAM NAUCZANIA MATEMATYKA 2001 DLA KLASY DRUGIEJ TREŚCI KSZTAŁCENIA WYMAGANIA PODSTAWOWE WYMAGANIA PONADPODSTAWOWE Liczby wymierne i
Bardziej szczegółowoPrzekształcenia geometryczne. Dorota Smorawa
Przekształcenia geometryczne Dorota Smorawa Przekształcenia geometryczne Na poprzednich laboratoriach już dowiedzieliśmy się, na czym polegają podstawowe przekształcenia geometryczne. Trzy podstawowe przekształcenia
Bardziej szczegółowoWektory, układ współrzędnych
Wektory, układ współrzędnych Wielkości występujące w przyrodzie możemy podzielić na: Skalarne, to jest takie wielkości, które potrafimy opisać przy pomocy jednej liczby (skalara), np. masa, czy temperatura.
Bardziej szczegółowoPodwójne buforowanie i animacje
www.math.uni.lodz.pl/ radmat Cel wykładu Celem wykładu jest prezentacja koncepcji podwójnego buforowania w grach 2D oraz animacja oparta na sprite ach. Gry 2D Może wydawać się to dziwne, ale gry 2D są
Bardziej szczegółowoProgramowanie Współbieżne. Algorytmy
Programowanie Współbieżne Algorytmy Sortowanie przez scalanie (mergesort) Algorytm :. JEŚLI jesteś rootem TO: pobierz/wczytaj tablice do posortowania JEŚLI_NIE to pobierz tablicę do posortowania od rodzica
Bardziej szczegółowoCo to jest wektor? Jest to obiekt posiadający: moduł (długość), kierunek wraz ze zwrotem.
1 Wektory Co to jest wektor? Jest to obiekt posiadający: moduł (długość), kierunek wraz ze zwrotem. 1.1 Dodawanie wektorów graficzne i algebraiczne. Graficzne - metoda równoległoboku. Sprowadzamy wektory
Bardziej szczegółowoTEMAT :Animacja Komputerowa. Projekt współfinansowany w ramach Europejskiego Funduszu Społecznego
TEMAT :Animacja Komputerowa Projekt współfinansowany w ramach Europejskiego Funduszu Społecznego Animacja komputerowa: Animacja komputerowa jest generalnie rzecz biorąc cyfrowym spadkobiercą sztuki animacji
Bardziej szczegółowo1 Wstęp teoretyczny. Temat: Manipulowanie przestrzenią. Grafika komputerowa 3D. Instrukcja laboratoryjna Układ współrzędnych
Instrukcja laboratoryjna 9 Grafika komputerowa 3D Temat: Manipulowanie przestrzenią Przygotował: dr inż. Grzegorz Łukawski, mgr inż. Maciej Lasota, mgr inż. Tomasz Michno 1 Wstęp teoretyczny 1.1 Układ
Bardziej szczegółowoMobilne Aplikacje Multimedialne
Mobilne Aplikacje Multimedialne Technologie rozszerzonej rzeczywistości Krzysztof Bruniecki Rozszerzona rzeczywistość W odróżnieniu od rzeczywistości wirtualnej użytkownik NIE jest całkowicie zanurzony
Bardziej szczegółowoFUNKCJA LINIOWA - WYKRES
FUNKCJA LINIOWA - WYKRES Wzór funkcji liniowej (Postać kierunkowa) Funkcja liniowa jest podstawowym typem funkcji. Jest to funkcja o wzorze: y = ax + b a i b to współczynniki funkcji, które mają wartości
Bardziej szczegółowo3. Macierze i Układy Równań Liniowych
3. Macierze i Układy Równań Liniowych Rozważamy równanie macierzowe z końcówki ostatniego wykładu ( ) 3 1 X = 4 1 ( ) 2 5 Podstawiając X = ( ) x y i wymnażając, otrzymujemy układ 2 równań liniowych 3x
Bardziej szczegółowoKMO2D. Kolizje między-obiektowe w 2D
KMO2D Kolizje między-obiektowe w 2D I. Wstęp 3 lata temu na temat kolizji nie miałem żadnego pojęcia. Przyszedł jednak czas, gdy postanowiłem napisać pierwszą porządną grę i pojawił się, wtedy problem.
Bardziej szczegółowoTurbo 240 Rozwiązanie problemu rozmyć w ruchomych obrazach
Turbo 240 Rozwiązanie problemu rozmyć w ruchomych obrazach Spis treści Wstęp...2 Czas reakcji...2 Wyświetlacze typu Hold-Type i Impulse-Type...3 Sygnał wejściowy 120 Hz...4 EIZO Turbo 240...5 Wygaszanie
Bardziej szczegółowoWYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY TRZECIEJ NA ROK SZKOLNY 2011/2012 DO PROGRAMU MATEMATYKA Z PLUSEM
WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY TRZECIEJ NA ROK SZKOLNY 2011/2012 DO PROGRAMU MATEMATYKA Z PLUSEM LICZBY, WYRAŻENIA ALGEBRAICZNE umie obliczyć potęgę o wykładniku naturalnym; umie obliczyć
Bardziej szczegółowoOPISY PRZESTRZENNE I PRZEKSZTAŁCENIA
OPISY PRZESTRZENNE I PRZEKSZTAŁCENIA Wprowadzenie W robotyce przez pojęcie manipulacji rozumiemy przemieszczanie w przestrzeni przedmiotów i narzędzi za pomocą specjalnego mechanizmu. W związku z tym pojawia
Bardziej szczegółowoMATEMATYKA 8. Funkcje trygonometryczne kąta ostrego (α < 90 ). Stosunki długości boków trójkąta prostokątnego nazywamy funkcjami trygonometrycznymi.
INSTYTUT MEDICUS Kurs przygotowawczy do matury i rekrutacji na studia medyczne Rok 017/018 www.medicus.edu.pl tel. 501 38 39 55 MATEMATYKA 8 FUNKCJE TRYGONOMETRYCZNE. Funkcje trygonometryczne kąta ostrego
Bardziej szczegółowoMetody numeryczne Wykład 4
Metody numeryczne Wykład 4 Dr inż. Michał Łanczont Instytut Elektrotechniki i Elektrotechnologii E419, tel. 4293, m.lanczont@pollub.pl, http://m.lanczont.pollub.pl Zakres wykładu Metody skończone rozwiązywania
Bardziej szczegółowoĆwiczenia nr 7. TEMATYKA: Krzywe Bézier a
TEMATYKA: Krzywe Bézier a Ćwiczenia nr 7 DEFINICJE: Interpolacja: przybliżanie funkcji za pomocą innej funkcji, zwykle wielomianu, tak aby były sobie równe w zadanych punktach. Poniżej przykład interpolacji
Bardziej szczegółowoTechniki animacji komputerowej
Techniki animacji komputerowej 1 Animacja filmowa Pojęcie animacji pochodzi od ożywiania i ruchu. Animować oznacza dawać czemuś życie. Słowem animacja określa się czasami film animowany jako taki. Animacja
Bardziej szczegółowoLaboratorium Komputerowe Systemy Pomiarowe
Jarosław Gliwiński, Łukasz Rogacz Laboratorium Komputerowe Systemy Pomiarowe ćw. Programowanie wielofunkcyjnej karty pomiarowej w VEE Data wykonania: 15.05.08 Data oddania: 29.05.08 Celem ćwiczenia była
Bardziej szczegółowoGry Komputerowe - laboratorium 2. Kamera FPP / TPP. mgr inż. Michał Chwesiuk 1/11. Szczecin, r
Gry Komputerowe - laboratorium 2 FPP / TPP mgr inż. Michał Chwesiuk 1/11 a model 2/11 Stwórz nową klasę Player a model Do stworzonej klasy Player w pliku player.h dodaj trzy pola (trzeba dodać #include
Bardziej szczegółowoPrzekształcenia widmowe Transformata Fouriera. Adam Wojciechowski
Przekształcenia widmowe Transformata Fouriera Adam Wojciechowski Przekształcenia widmowe Odmiana przekształceń kontekstowych, w których kontekstem jest w zasadzie cały obraz. Za pomocą transformaty Fouriera
Bardziej szczegółowoSieciowe Technologie Mobilne. Laboratorium 2
Sieciowe Technologie Mobilne Laboratorium 2 Tworzenie wieloplatformowych aplikacji mobilnych przy użyciu biblioteki PhoneGap. Łukasz Kamiński Laboratorium 2 Na dzisiejszym laboratorium skupimy się na implementacji
Bardziej szczegółowoROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH
Transport, studia I stopnia Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Ewa Pabisek Adam Wosatko Postać ogólna równania nieliniowego Często występującym, ważnym problemem obliczeniowym
Bardziej szczegółowoSIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa
SIMR 06/07, Analiza, wykład, 07-0- Przestrzeń wektorowa Przestrzeń wektorowa (liniowa) - przestrzeń (zbiór) w której określone są działania (funkcje) dodawania elementów i mnożenia elementów przez liczbę
Bardziej szczegółowoPRZEDSTAWIAMY TECHNOLOGIĘ AMD FREESYNC
PRZEDSTAWIAMY TECHNOLOGIĘ AMD FREESYNC 1H2015 CELE SZKOLENIA Po ukończeniu tego szkolenia: Będziesz wiedzieć, czym jest technologia AMD FreeSync oraz jakie problemy rozwiązuje z punktu widzenia graczy
Bardziej szczegółowoBudowa systemów komputerowych
Budowa systemów komputerowych Krzysztof Patan Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski k.patan@issi.uz.zgora.pl Współczesny system komputerowy System komputerowy składa
Bardziej szczegółowoWydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.
Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle Krzysztof Banaś, Obliczenia wysokiej wydajności. 1 Organizacja pamięci Organizacja pamięci współczesnych systemów komputerowych
Bardziej szczegółowoTRYGONOMETRIA FUNKCJE TRYGONOMETRYCZNE KĄTA SKIEROWANEGO
TRYGONOMETRIA Trygonometria to dział matematyki, którego przedmiotem badań są związki między bokami i kątami trójkątów oraz tzw. funkcje trygonometryczne. Trygonometria powstała i rozwinęła się głównie
Bardziej szczegółowo2) R stosuje w obliczeniach wzór na logarytm potęgi oraz wzór na zamianę podstawy logarytmu.
ZAKRES ROZSZERZONY 1. Liczby rzeczywiste. Uczeń: 1) przedstawia liczby rzeczywiste w różnych postaciach (np. ułamka zwykłego, ułamka dziesiętnego okresowego, z użyciem symboli pierwiastków, potęg); 2)
Bardziej szczegółowoManipulatory i roboty mobilne AR S1 semestr 5
Manipulatory i roboty mobilne AR S semestr 5 Konrad Słodowicz MN: Zadanie proste kinematyki manipulatora szeregowego - DOF Położenie manipulatora opisać można dwojako w przestrzeni kartezjańskiej lub zmiennych
Bardziej szczegółowoWybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki
Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu Mirosław Głowacki Zagadnienia Jak rozumiemy fotorealizm w grafice komputerowej Historyczny rozwój kart graficznych Przekształcenia
Bardziej szczegółowoPlan wykładu. Wykład 3. Rzutowanie prostokątne, widoki, przekroje, kłady. Rzutowanie prostokątne - geneza. Rzutowanie prostokątne - geneza
Plan wykładu Wykład 3 Rzutowanie prostokątne, widoki, przekroje, kłady 1. Rzutowanie prostokątne - geneza 2. Dwa sposoby wzajemnego położenia rzutni, obiektu i obserwatora, metoda europejska i amerykańska
Bardziej szczegółowoZad. 3: Rotacje 2D. Demonstracja przykładu problemu skończonej reprezentacji binarnej liczb
Zad. 3: Rotacje 2D 1 Cel ćwiczenia Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich struktur
Bardziej szczegółowoĆwiczenie 6 Animacja trójwymiarowa
Animacja trójwymiarowa Wstęp Jedną z nowości Flasha CS4 i wyższych wersji jest tworzenie animacji 3D. Są do tego przeznaczone narzędzia Obrót 3D (W) i Translacja 3D (G). Narzędzia te działają na klipach
Bardziej szczegółowoGRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej
GRAFIKA RASTROWA WYKŁAD 1 Wprowadzenie do grafiki rastrowej Jacek Wiślicki Katedra Informatyki Stosowanej Grafika rastrowa i wektorowa W grafice dwuwymiarowej wyróżnia się dwa rodzaje obrazów: rastrowe,
Bardziej szczegółowoSystemy wirtualnej rzeczywistości. Komponenty i serwisy
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Komponenty i serwisy Wstęp: W trzeciej części przedstawione zostaną podstawowe techniki
Bardziej szczegółowoRuch jednostajnie zmienny prostoliniowy
Ruch jednostajnie zmienny prostoliniowy Przyspieszenie w ruchu jednostajnie zmiennym prostoliniowym Jest to taki ruch, w którym wektor przyspieszenia jest stały, co do wartości (niezerowej), kierunku i
Bardziej szczegółowoAnimacje z zastosowaniem suwaka i przycisku
Animacje z zastosowaniem suwaka i przycisku Animacja Pole równoległoboku Naukę tworzenia animacji uruchamianych na przycisk zaczynamy od przygotowania stosunkowo prostej animacji, za pomocą, której można
Bardziej szczegółowoOpenGL : Oświetlenie. mgr inż. Michał Chwesiuk mgr inż. Tomasz Sergej inż. Patryk Piotrowski. Szczecin, r 1/23
OpenGL : mgr inż. Michał Chwesiuk mgr inż. Tomasz Sergej inż. Patryk Piotrowski 1/23 Folder z plikami zewnętrznymi (resources) Po odpaleniu przykładowego projektu, nie uruchomi się on poprawnie. Powodem
Bardziej szczegółowoTRYGONOMETRIA. 1. Definicje i własności funkcji trygonometrycznych
TRYGONOMETRIA. Definicje i własności funkcji trygonometrycznych Funkcje trygonometryczne kąta ostrego można zdefiniować przy użyciu trójkąta prostokątnego: c a α b DEFINICJA. Sinusem kąta ostrego α w trójkącie
Bardziej szczegółowogdzie (4.20) (4.21) 4.3. Rzut równoległy
4.3. Rzut równoległy 75 gdzie (4.20) Punkt zbiegu, określony wzorami (4.19) (4.20), leży na prostej przechodzącej przez środek rzutowania i równoległej do wektora u. Zauważmy, że gdy wektor u jest równoległy
Bardziej szczegółowoRozwiązywanie układów równań liniowych
Rozwiązywanie układów równań liniowych Marcin Orchel 1 Wstęp Jeśli znamy macierz odwrotną A 1, to możęmy znaleźć rozwiązanie układu Ax = b w wyniku mnożenia x = A 1 b (1) 1.1 Metoda eliminacji Gaussa Pierwszy
Bardziej szczegółowoGRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL
GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL Grafika komputerowa i wizualizacja, Bioinformatyka S1, II Rok OpenGL Open Graphics Library Jest to API pozwalające na renderowanie grafiki w czasie rzeczywistym,
Bardziej szczegółowoWidoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?
Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz
Bardziej szczegółowoBadanie ruchu złożenia
Badanie ruchu złożenia W wersji Standard programu SolidWorks mamy do dyspozycji dwie aplikacje: Podstawowy ruch symulacja ruchu z użyciem grawitacji, sprężyn, napędów oraz kontaktu między komponentami.
Bardziej szczegółowoElementy geometrii analitycznej w R 3
Rozdział 12 Elementy geometrii analitycznej w R 3 Elementy trójwymiarowej przestrzeni rzeczywistej R 3 = {(x,y,z) : x,y,z R} możemy interpretować co najmniej na trzy sposoby, tzn. jako: zbiór punktów (x,
Bardziej szczegółowoPlan 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. Budowa monitora CRT 2. Zasada działania monitora CRT 3. Maski 4. Wady i zalety monitorów CRT 5. Testowanie monitora Monitor CRT CRT (Cathode-Ray Tube) Kineskopowy Budowa monitora CRT [1]
Bardziej szczegółowoLaboratorium 1. Część I. Podstawy biblioteki graficznej OpenGL.
Laboratorium 1 Część I Podstawy biblioteki graficznej OpenGL. I. Konfiguracja środowiska 1. Ściągamy bibliotekę freeglut i rozpakujemy do głównego folderu dysku systemowego np. C:\freeglut 2. Uruchamiamy
Bardziej szczegółowoZakres na egzaminy poprawkowe w r. szk. 2013/14 /nauczyciel M.Tatar/
Zakres na egzaminy poprawkowe w r. szk. 2013/14 /nauczyciel M.Tatar/ MATEMATYKA Klasa III ZAKRES PODSTAWOWY Dział programu Temat Wymagania. Uczeń: 1. Miara łukowa kąta zna pojęcia: kąt skierowany, kąt
Bardziej szczegółowoGrafika 2D. Animacja Zmiany Kształtu. opracowanie: Jacek Kęsik
Grafika 2D Animacja Zmiany Kształtu opracowanie: Jacek Kęsik Wykład przedstawia podstawy animacji zmiany kształtu - morfingu Animacja zmiany kształtu Podstawowe pojęcia Zlewanie (Dissolving / cross-dissolving)
Bardziej szczegółowo1. PODSTAWY TEORETYCZNE
1. PODSTAWY TEORETYCZNE 1 1. 1. PODSTAWY TEORETYCZNE 1.1. Wprowadzenie W pierwszym wykładzie przypomnimy podstawowe działania na macierzach. Niektóre z nich zostały opisane bardziej szczegółowo w innych
Bardziej szczegółowoRzutowanie z 4D na 3D
Politechnika Wrocławska Instytut Informatyki Automatyki i Robotyki Wizualizacja danych sensorycznych Rzutowanie z 4D na 3D Autor: Daniel Piłat Opiekun projektu: dr inż. Bogdan Kreczmer 15 czerwca 2010
Bardziej szczegółowoProgram V-SIM tworzenie plików video z przebiegu symulacji
Program V-SIM tworzenie plików video z przebiegu symulacji 1. Wprowadzenie Coraz częściej zdarza się, że zleceniodawca opinii prosi o dołączenie do opracowania pliku/ów Video z zarejestrowanym przebiegiem
Bardziej szczegółowo