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

Wielkość: px
Rozpocząć pokaz od strony:

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

Transkrypt

1 Bartosz Bazyluk GRAFIKA CZASU RZECZYWISTEGO Interakcja, ruch kamery, oświetlenie. Grafika komputerowa i wizualizacja, Bioinformatyka S1, II Rok

2 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 Bartosz Bazyluk 2

3 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) Bartosz Bazyluk 3

4 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(). p d Bartosz Bazyluk 4

5 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(). p d Bartosz Bazyluk 5

6 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+d p Bartosz Bazyluk 6

7 Ruch kamery Zadanie: Stworzyć interaktywną kamerę pierwszoosobową Możliwości ruchu: Krok w przód/tył Krok w lewo/prawo (prostopadle do kierunku przód/tył) Obrót w jednej płaszczyźnie (wokół osi y) Sterowanie za pomocą klawiatury W/S/A/D ruch Q/E obrót Bartosz Bazyluk 7

8 Stan kamery Reprezentacja stanu kamery w pamięci Konieczne jest zapamiętanie trzech wektorów 3-elementowych: Położenia Kierunku 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; }; Bartosz Bazyluk 8

9 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. płynne wygaszanie 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; Bartosz Bazyluk 9

10 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 ); Bartosz Bazyluk 10

11 Obsługa klawiatury Aktualizacja stanu kamery powinna odbywać się w odpowiedzi na wciśnięcie klawiszy przez użytkownika Jak dowiedzieć się, kiedy użytkownik wciska, a kiedy puszcza dane klawisze? GLUT oferuje dostęp do zdarzeń, które związane są z klawiaturą Poprzez ustawienie własnych callbacków jako obsługi tych zdarzeń, możemy odpowiedzieć na ich wystąpienie Z naszego punktu widzenia istotne będą: glutkeyboardfunc() zachodzi, gdy zostanie wciśnięty klawisz glutkeyboardupfunc() - zachodzi, gdy zostanie puszczony klawisz Funkcje obsługujące oba te zdarzenia powinny przyjmować następujące trzy parametry: unsigned int key kod ASCII klawisza int x, int y położenie kursora myszy w momencie zdarzenia Bartosz Bazyluk 11

12 Obsługa klawiatury glutkeyboardfunc() zachodzi: Natychmiastowo* w momencie wciśnięcia klawisza Jest powtarzane tak długo, jak jest wciśnięty klawisz Pierwsze powtórzenie po opóźnieniu Częstotliwość kontrolowana przez BIOS/system operacyjny Jeśli bezpośrednio użyjemy tego zdarzenia do kontroli ruchu kamery, to w momencie przytrzymania klawisza kamera zrobi skok do przodu, zatrzyma się i później ruszy dalej Opóźnienie po pierwszy kroku jest niedopuszczalne! Częstotliwość ruchów różna na różnych komputerach! glutkeyboardupfunc() - zachodzi: Natychmiastowo* w momencie puszczenia klawisza * Natychmiastowo oznacza najbliższy nadchodzący moment przetwarzania komunikatów. (wciśnięcie) (puszczenie) t Bartosz Bazyluk 12

13 Obsługa klawiatury Jak rozwiązać problem opóźnienia i częstotliwości glutkeyboardfunc()? Tablica przechowująca aktualny stan każdego klawisza (znaku ASCII) Wartości boolowskie: false gdy puszczony, true gdy wciśnięty Gdy glutkeyboardfunc(), wtedy ustawiamy odpowiadający element tablicy na true Gdy glutkeyboardupfunc(), wtedy ustawiamy na false bool keystate[256]; glutkeyboardfunc(onkeypress); glutkeyboardupfunc(onkeyup); void OnKeyPress(unsigned char key, int x, int y) { keystate[key] = true; } void OnKeyUp(unsigned char key, int x, int y) { keystate[key] = false; } Bartosz Bazyluk 13

14 Obsługa klawiatury Problem częstotliwości najłatwiej można rozwiązać wykonując aktualizację stanu ze stałym krokiem czasowym Podczas takiej aktualizacji sprawdzamy w tablicy klawiszy, czy nie są wciśnięte te odpowiedzialne za ruch kamery Jeśli są, dokonujemy zmian ustawienia kamery Krok czasowy w prostej implementacji może być zbliżony do 1/60s, czyli 16,(6)ms GLUT oferuje możliwość ustawienia zdarzenia, które zajdzie za zadany okres czasu gluttimerfunc(unsigned int time, void(*callback) (int), int value) Jedno przypisanie obsługi tego zdarzenia wykona się tylko raz gluttimerfunc(16, OnTimer, 0); void OnTimer(int value) { gluttimerfunc(16, OnTimer, 0); // Tutaj aktualizacja stanu } Bartosz Bazyluk 14

15 Obsługa klawiatury Dodatkowo, przydatne jest wprowadzenie własnego, wirtualnego "zdarzenia" wywoływanego tylko raz gdy zostanie wciśnięty klawisz Nazwijmy je OnKeyDown Będzie wyzwalane w OnKeyPress, ale tylko jeśli wcześniej dany klawisz nie był wciśnięty void OnKeyDown(unsigned char key) { //... } void OnKeyPress(unsigned char key, int x, int y) { if (!keystate[key]) { OnKeyDown(key); } keystate[key] = true; } Takie zdarzenie jest wygodne do obsługi rzeczy, które włącza/wyłącza się danym klawiszem Bartosz Bazyluk 15

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

17 Ruch kamery w przód/tył Aby zrealizować poruszanie się w przód, w funkcji aktualizującej stan kamery, modyfikujemy pozycję: void OnTimer(int value) { gluttimerfunc(16, OnTimer, 0); if (keystate['w']) { player.pos.x += player.dir.x * player.speed; player.pos.y += player.dir.y * player.speed; player.pos.z += player.dir.z * player.speed; } } Ruch do tyłu realizujemy poprzez odejmowanie zamiast dodawania Warto zwrócić uwagę, że 'w' i 'W' to dwa różne klawisze i zdarzenia dla jednego nie pokrywają się ze zdarzeniami drugiego Bartosz Bazyluk 17

18 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? d =(d x d y d z) e=( d z 0 d x ) Bartosz Bazyluk 18

19 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' Bartosz Bazyluk 19

20 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! Bartosz Bazyluk 20

21 Obrót wektora kierunku w 2D y Chcemy dokonać obrotu kamery o zadany kąt α. d α x Bartosz Bazyluk 21

22 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 Bartosz Bazyluk 22

23 Obrót wektora kierunku w 2D y d = (x d ; y d ) 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. d' = (x d '; y d ') x Bartosz Bazyluk 23

24 Obrót wektora kierunku w 2D y d = (x d ; y d ) Inny sposób opisania położenia punktu na płaszczyźnie: współrzędne biegunowe ϕ r d' = (x d '; y d ') Położenie definiuje się jako odległość od bieguna (u nas: pocz. układu współrzędnych) oraz kąt pomiędzy osią biegunową (u nas: +y), a promieniem wodzącym. d =(x d ; y d )=(r ;ϕ) współrzędne kartezjańskie współrzędne biegunowe x Bartosz Bazyluk 24

25 Obrót wektora kierunku w 2D y d = (x d ; y d ) Aby wyliczyć współrzędne biegunowe odpowiadające kartezjańskim, wystarczy posłużyć się dwoma prostymi wzorami. ϕ r d' = (x d '; y d ') x Funkcja cyklometryczna atan2 jest dwuargumentową odmianą funkcji arcus tangens, biorącą pod uwagę ćwiartkę układu w której znajduje się zadany kąt. [ d =( x d ; y d )=(r ;ϕ) r= x 2 + y 2 ϕ=atan2( y, x) Bartosz Bazyluk 25

26 Obrót wektora kierunku w 2D y d = (x d ; y d ) Pamiętamy, że nasz wektor kierunku jest zawsze wektorem jednostkowym. W takim razie długość promienia wodzącego r będzie zawsze równa 1. ϕ r=1 d' = (x d '; y d ') x d =(x d ; y d )=(r ;ϕ)=(1 ;ϕ) r= x 2 + y 2 =1 ϕ=atan2( y, x) Bartosz Bazyluk 26

27 Obrót wektora kierunku w 2D y d = (x d ; y d ) Zwróćmy uwagę, że we współrzędnych biegunowych podczas obracania wektora, ulegnie zmianie tylko jedna współrzędna. ϕ α d' = (x d '; y d ') x Nowy kąt zostanie powiększony o wartość kąta α o który dokonujemy obrotu. d =(x d ; y d )=(r ;ϕ)=(1 ;ϕ) r= x 2 + y 2 =1 ϕ=atan2( y, x) d '=(1 ;ϕ+α) Bartosz Bazyluk 27

28 Obrót wektora kierunku w 2D y d = (x d ; y d ) Mając współrzędne biegunowe wektora po dokonaniu obrotu, wystarczy powrócić do kartezjańskiego układu współrzędnych. ϕ α d' = (x d '; y d ') x Służą do tego dwa proste wzory. d =(x d ; y d )=(r ;ϕ)=(1 ;ϕ) r= x 2 + y 2 =1 ϕ=atan2( y, x) d '=(1 ;ϕ+α) x=r cos(ϕ) y=r sin(ϕ) Bartosz Bazyluk 28

29 Obrót wektora kierunku w 2D y d = (x d ; y d ) Należy pamiętać, że r=1, przez co sprawa jest jeszcze prostsza. ϕ α d' = (x d '; y d ') x d =(x d ; y d )=(r ;ϕ)=(1 ;ϕ) r= x 2 + y 2 =1 ϕ=atan2( y, x) d '=(1 ;ϕ+α)=(cos(ϕ+α);sin(ϕ+α)) x=r cos(ϕ) y=r sin(ϕ) Bartosz Bazyluk 29

30 Oświetlenie Celem symulacji oświetlenia jest taka modyfikacja kolorów obiektów, aby sprawiały wrażenie oświetlonych fizycznymi źródłami światła Należy rozróżnić dwie rzeczy: Oświetlenie model matematyczny pozwalający na wyliczenie koloru z uwzględnieniem wpływu źródeł światła, cech materiału i środowiska Cieniowanie (ang. shading nie shadowing!) sposób dystrybucji koloru pomiędzy miejscami, dla których jest on wyliczony Źródło obrazów: Płaskie Gouraud Phonga Bartosz Bazyluk 30

31 Oświetlenie Najczęściej używanym modelem oświetlenia w grafice czasu rzeczywistego jest model Phonga Niezależnie od tego, czy stosujemy cieniowanie płaskie, Gouraud, czy Phonga model oświetlenia jest czymś osobnym Model Phonga opiera się na rozbiciu światła na trzy komponenty: I A =(i r A i g A i b A) I I D =(ir D i g D i bd) S =(ir S i gs i bs) Źródło obrazów: I=I A + I D + I S Bartosz Bazyluk 31

32 Światło i materiały Komponenty Ambient, Diffuse oraz Specular określamy zarówno dla każdego ze źródeł światła, jak i dla materiału z którego zbudowana jest powierzchnia obiektu L L A =(l r A l g A l ba) L D =(l r D l g D l bd) S =(l r S l g S l bs) M M A =(m r A m g A m ba) M D =(mr D m g D m bd) S =(mrs m g S m bs) Bartosz Bazyluk 32

33 Światło i materiały Komponenty Ambient, Diffuse oraz Specular określamy zarówno dla każdego ze źródeł światła, jak i dla materiału z którego zbudowana jest powierzchnia obiektu L L A =(l r A l g A l ba) L D =(l r D l g D l bd) S =(l r S l g S l bs) M M A =(m r A m g A m ba) M D =(mr D m g D m bd) S =(mrs m g S m bs) Bartosz Bazyluk 33

34 Wektory normalne W celu określenia skierowania punktu na powierzchni bryły, definiuje się tzw. wektory normalne Są to wektory, które są prostopadłe do powierzchni Zazwyczaj są to wektory jednostkowe Bartosz Bazyluk 34

35 Wektory normalne W celu określenia skierowania punktu na powierzchni bryły, definiuje się tzw. wektory normalne Są to wektory, które są prostopadłe do powierzchni Zazwyczaj są to wektory jednostkowe Wektory normalne określa się dla wierzchołków Bartosz Bazyluk 35

36 Wektory normalne W celu określenia skierowania punktu na powierzchni bryły, definiuje się tzw. wektory normalne Są to wektory, które są prostopadłe do powierzchni Zazwyczaj są to wektory jednostkowe Wektory normalne określa się dla wierzchołków Na ich podstawie można określić wpływ światła padającego w zadanym kierunku na kolor powierzchni obiektu Bartosz Bazyluk 36

37 Wektory normalne W celu uzyskania łagodnych krawędzi, wektory normalne powinny być identyczne dla wszystkich ścian zbiegających się w danym wierzchołku Przykład (rzut boczny): W celu przybliżenia gładkiej niebieskiej powierzchni z użyciem czerwonych ścian, należy stosować identyczne wektory normalne w wierzchołkach Źródło obrazów: Bartosz Bazyluk 37

38 Wektory normalne W OpenGL wektory normalne definiujemy w sposób podobny do pozycji wierzchołków glnormal3f(0.0f, 1.0f, 0.0f); Ostatnio określony wektor normalny zostaje powiązany z każdym nowo tworzonym wierzchołkiem glnormal3f(0.0f, 1.0f, 0.0f); glvertex3f(0.0f, 0.0f, 0.0f); // normal = (0;1;0) glnormal3f(0.0f, 0.0f, 1.0f); glvertex3f(1.0f, 0.0f, 0.0f); // normal = (0;0;1) glvertex3f(0.0f, 1.0f, 0.0f); // normal = (0;0;1) glvertex3f(0.0f, 0.0f, 1.0f); // normal = (0;0;1) Bartosz Bazyluk 38

39 Model oświetlenia Phonga W tym wypadku iloczyn dwóch wektorów rozumiemy jako iloczyn ich komponentów! Kolor w danym wierzchołku/fragmencie (zależnie, czy cieniowanie Gouraud, czy Phonga), oblicza się sumując wartości dla wszystkich źródeł światła: lights I = i=1 Dla każdego źródła światła: I i A + I i D +I i S Komponent Ambient to prosty iloczyn wartości RGB światła i wartości RGB materiału I A =L A M A Komponent Diffuse dodatkowo zależy od współczynnika lambertowskiego, zależnego od kąta pomiędzy wektorem normalnym N a wektorem kierunku padania światła L I D =k D L D M D, k D = L N Komponent Specular zależy od spójności wektora odbitego R oraz wektora kierunku obserwacji V; wielkość rozbłysku zależy od parametru shininess α I S =k S L S M S, k S =( R V ) α, R=2( L N ) N L Bartosz Bazyluk 39

40 Światło w OpenGL Model oświetlenia Phonga jest częścią nieprogramowalnego potoku renderowania w OpenGL Włączenie obliczania oświetlenia: glenable(gl_lighting); Nieprogramowalny potok renderowania OpenGL oferuje dwa rodzaje cieniowania Cieniowanie płaskie glshademodel(gl_flat); Cieniowanie Gouraud (domyślne; per-vertex) glshademodel(gl_smooth); Nie ma możliwości włączenia cieniowania Phonga (per-fragment) nie pisząc własnych programów cieniujących Bartosz Bazyluk 40

41 Światło w OpenGL W nieprogramowalnym potoku renderowania OpenGL (ang. fixed pipeline) mamy możliwość zdefiniowania przynajmniej ośmiu źródeł światła (zależy od implementacji) Do źródeł światła odwołujemy się z użyciem stałych: GL_LIGHT0, GL_LIGHT1, GL_LIGHT2,... Można też użyć sposobu: GL_LIGHT Aby dane źródło światła działało, musi zostać włączone: glenable(gl_light1); Domyślnie tylko GL_LIGHT0 jest włączone Poszczególne komponenty źródła źwiatła definiujemy następująco: float l1amb[4] = { 0.0f, 0.0f, 0.0f, 1.0f }; float l1dif[4] = { 1.0f, 0.0f, 1.0f, 1.0f }; float l1spe[4] = { 0.5f, 0.5f, 0.5f, 1.0f }; gllightfv(gl_light1, GL_AMBIENT, l1amb); gllightfv(gl_light1, GL_DIFFUSE, l1dif); gllightfv(gl_light1, GL_SPECULAR, l1spe); Bartosz Bazyluk 41

42 Materiały Materiał jest cechą danego wierzchołka (analogicznie do koloru ustawianego za pomocą glcolor*()) Po ustawienia materiału i włączeniu oświetlenia, kolory wierzchołków domyślnie nie są już brane pod uwagę Oddzielnie ustawia się materiał strony przedniej i tylnej, w praktyce zazwyczaj używa się jedynie przedniej (GL_FRONT) Materiał ustawia się następująco: float mamb[4] = { 0.0f, 0.0f, 0.0f, 1.0f }; float mdif[4] = { 1.0f, 1.0f, 0.0f, 1.0f }; float mspe[4] = { 0.0f, 0.0f, 0.0f, 1.0f }; glmaterialfv(gl_front, GL_AMBIENT, mamb); glmaterialfv(gl_front, GL_DIFFUSE, mdif); glmaterialfv(gl_front, GL_SPECULAR, mspe); Dodatkowo można określić wartość eksponenty związanej z komponentem specular: glmaterialf(gl_front, GL_SHININESS, 20.0f); Im większe shininess, tym mniejszy rozbłysk Bartosz Bazyluk 42

43 Źródła światła Możemy wyróżnić trzy podstawowe rodzaje źródeł światła: Światła kierunkowe Wszystkie promienie są do siebie równoległe Konieczne jest zdefiniowanie kierunku świecenia W OpenGL: float lightpos[4] = { 0.0f, 0.0f, 1.0f, 0.0f }; gllightfv(gl_light0, GL_POSITION, lightpos); Ważne! Ostatni komponent pozycji musi być równy 0, wtedy źródło światła traktowane jest jako kierunkowe. Inaczej jest ono światłem pozycyjnym. Ważne! Podajemy wartości będące przeciwieństwem kierunku świecenia. W przykładzie promienie będą się rozchodzić w kierunku (0;0;-1) Bartosz Bazyluk 43

44 Źródła światła Możemy wyróżnić trzy podstawowe rodzaje źródeł światła: Światła punktowe Światło pozycyjne, promienie rozchodzą się dookólnie Konieczne jest określenie pozycji źródła światła W OpenGL: float lightpos[4] = { 0.0f, 0.0f, 1.0f, 1.0f }; gllightfv(gl_light0, GL_POSITION, lightpos); Ważne! Ostatni komponent pozycji musi być równy 1, wtedy źródło światła traktowane jest jako pozycyjne. Inaczej jest ono światłem kierunkowym Bartosz Bazyluk 44

45 Źródła światła Możemy wyróżnić trzy podstawowe rodzaje źródeł światła: Światła punktowe (c.d.) Dodatkowo można określić tłumienie wraz z odległością Składa się z trzech komponentów: stałego, liniowego i kwadratowego W OpenGL: 1 a(d )= k c +k l d +k q d 2 gllightf(gl_light0, GL_CONSTANT_ATTENUATION, 2.0f); gllightf(gl_light0, GL_LINEAR_ATTENUATION, 1.0f); gllightf(gl_light0, GL_QUADRATIC_ATTENUATION, 0.5f); Tłumienie wpływa na wszystkie komponenty światła Bartosz Bazyluk 45

46 Źródła światła Możemy wyróżnić trzy podstawowe rodzaje źródeł światła (c.d.): Światła stożkowe (ang. spotlights) Skierowane światło punktowe o ograniczonym kącie Oprócz pozycji, określa się także kierunek światła oraz szerokość kąta świecenia: float lightdir[3] = { 0.0f, 0.0f, 1.0f }; gllightfv(gl_light0, GL_SPOT_DIRECTION, lightdir); gllightf(gl_light0, GL_SPOT_CUTOFF, 45.0f); Bartosz Bazyluk 46

47 Źródła światła Zadania: Stworzyć punktowe źródło światła zawieszone nad sceną Stworzyć dwa punktowe źródła światła z tłumieniem, które można niezależnie poruszać za pomocą klawiszy Bartosz Bazyluk 47

48 Bartosz Bazyluk GRAFIKA CZASU RZECZYWISTEGO Interakcja, ruch kamery, oświetlenie. Grafika komputerowa i wizualizacja, Bioinformatyka S1, II Rok

Bartosz Bazyluk POTOK RENDEROWANIA Etapy renderowania w grafice czasu rzeczywistego. Grafika Komputerowa, Informatyka, I Rok

Bartosz Bazyluk POTOK RENDEROWANIA Etapy renderowania w grafice czasu rzeczywistego.   Grafika Komputerowa, Informatyka, I Rok POTOK RENDEROWANIA Etapy renderowania w grafice czasu rzeczywistego. http://bazyluk.net/zpsb Grafika Komputerowa, Informatyka, I Rok POTOK RENDEROWANIA W grafice realistycznej stosuje się zwykle podejścia

Bardziej szczegółowo

Gry komputerowe, Informatyka N1, III Rok

Gry komputerowe, Informatyka N1, III Rok Oświetlenie Potok renderowania. Techniki oświetlenia i cieniowania. http://bazyluk.net/dydaktyka Gry komputerowe, Informatyka N1, III Rok POTOK RENDEROWANIA W grafice realistycznej stosuje się zwykle podejścia

Bardziej szczegółowo

6 Przygotował: mgr inż. Maciej Lasota

6 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 6 1/7 Grafika Komputerowa 3D Instrukcja laboratoryjna Temat: Materiały i oświetlenie 6 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie Specyfikacja biblioteki OpenGL rozróżnia trzy

Bardziej szczegółowo

Grafika Komputerowa, Informatyka, I Rok

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ółowo

Oświetlenie w OpenGL. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 8. Światło otaczajace. Światło rozproszone.

Oświetlenie w OpenGL. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 8. Światło otaczajace. Światło rozproszone. Oświetlenie w OpenGL Oprogramowanie i wykorzystanie stacji roboczych Wykład 8 Dr inż. Tomasz Olas olas@icis.pcz.pl W OpenGL źródło światła w scenie składa się z trzech składowych oświetlenia: otoczenia,

Bardziej szczegółowo

Gry Komputerowe Interaktywna kamera FPP

Gry 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ółowo

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

Grafika 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ółowo

Światło. W OpenGL można rozróżnić 3 rodzaje światła

Światło. W OpenGL można rozróżnić 3 rodzaje światła Wizualizacja 3D Światło W OpenGL można rozróżnić 3 rodzaje światła Światło otaczające (ambient light) równomiernie oświetla wszystkie elementy sceny, nie pochodzi z żadnego konkretnego kierunku Światło

Bardziej szczegółowo

Światła i rodzaje świateł. Dorota Smorawa

Światła i rodzaje świateł. Dorota Smorawa Światła i rodzaje świateł Dorota Smorawa Rodzaje świateł Biblioteka OpenGL posiada trzy podstawowe rodzaje świateł: światło otoczenia, światło rozproszone oraz światło odbite. Dodając oświetlenie na scenie

Bardziej szczegółowo

OpenGL model oświetlenia

OpenGL model oświetlenia Składowe światła OpenGL Światło otaczające (ambient) OpenGL model oświetlenia Nie pochodzi z żadnego określonego kierunku. Powoduje równomierne oświetlenie obiektów na wszystkich powierzchniach i wszystkich

Bardziej szczegółowo

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

Wyś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ółowo

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny Laboratorium grafiki komputerowej i animacji Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny Przygotowanie do ćwiczenia: 1. Zapoznać się ze zdefiniowanymi w OpenGL modelami światła i właściwości materiałów.

Bardziej szczegółowo

Oświetlenie obiektów 3D

Oświetlenie obiektów 3D Synteza i obróbka obrazu Oświetlenie obiektów 3D Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych Rasteryzacja Spłaszczony po rzutowaniu obraz siatek wielokątowych

Bardziej szczegółowo

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

Animowana grafika 3D. Opracowanie: J. Kęsik. Animowana grafika 3D Opracowanie: J. Kęsik kesik@cs.pollub.pl Powierzchnia obiektu 3D jest renderowana jako czarna jeżeli nie jest oświetlana żadnym światłem (wyjątkiem są obiekty samoświecące) Oświetlenie

Bardziej szczegółowo

Gry Komputerowe - laboratorium 2. Kamera FPP / TPP. mgr inż. Michał Chwesiuk 1/11. Szczecin, r

Gry 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ółowo

OpenGL Światło (cieniowanie)

OpenGL Światło (cieniowanie) OpenGL Światło (cieniowanie) 1. Oświetlenie włączanie/wyłączanie glenable(gl_lighting); - włączenie mechanizmu oświetlenia gldisable(gl_lighting); - wyłączenie mechanizmu oświetlenia glenable(gl_light0);

Bardziej szczegółowo

Materiały. Dorota Smorawa

Materiały. Dorota Smorawa Materiały Dorota Smorawa Materiały Materiały, podobnie jak światła, opisywane są za pomocą trzech składowych. Opisują zdolności refleksyjno-emisyjne danej powierzchni. Do tworzenia materiału służy funkcja:

Bardziej szczegółowo

OpenGL Światło (cieniowanie)

OpenGL Światło (cieniowanie) OpenGL Światło (cieniowanie) 1. Oświetlenie włączanie/wyłączanie glenable(gl_lighting); - włączenie mechanizmu oświetlenia gldisable(gl_lighting); - wyłączenie mechanizmu oświetlenia glenable(gl_light0);

Bardziej szczegółowo

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

Model oświetlenia. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Model oświetlenia Radosław Mantiuk Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Obliczenie koloru powierzchni (ang. Lighting) Światło biegnie od źródła światła, odbija

Bardziej szczegółowo

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska OpenGL oświetlenie Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera

Bardziej szczegółowo

GRK 4. dr Wojciech Palubicki

GRK 4. dr Wojciech Palubicki GRK 4 dr Wojciech Palubicki Uproszczony Potok Graficzny (Rendering) Model Matrix View Matrix Projection Matrix Viewport Transform Object Space World Space View Space Clip Space Screen Space Projection

Bardziej szczegółowo

Przekształcenia geometryczne. Dorota Smorawa

Przekształ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ółowo

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

Oś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ółowo

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

Wyświetlanie obrazu Bufor klatki, synchronizacja pionowa, pętla główna gry. Wyświetlanie obrazu Bufor klatki, synchronizacja pionowa, pętla główna gry. http://bazyluk.net/dydaktyka Gry komputerowe, Informatyka S1, II Rok, 2018 r. WYŚWIETLACZE WEKTOROWE Korzystając z możliwości

Bardziej szczegółowo

Temat: Transformacje 3D

Temat: 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ółowo

Wyświetlanie obrazu Techniki wyświetlania obrazu komputerowego.

Wyś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ółowo

Rzutowanie DOROTA SMORAWA

Rzutowanie DOROTA SMORAWA Rzutowanie DOROTA SMORAWA Rzutowanie Rzutowanie jest operacja polegająca na tym, aby odpowiednie piksele na płaskim ekranie były wyświetlane w taki sposób, by sprawiać wrażenie trójwymiarowej głębi (przestrzeni

Bardziej szczegółowo

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

Bartosz 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ółowo

2 Przygotował: mgr inż. Maciej Lasota

2 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ółowo

Plan wykładu. Akcelerator 3D Potok graficzny

Plan 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ółowo

IRONCAD. TriBall IRONCAD Narzędzie pozycjonujące

IRONCAD. 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ółowo

1 Wstęp teoretyczny. Temat: Manipulowanie przestrzenią. Grafika komputerowa 3D. Instrukcja laboratoryjna Układ współrzędnych

1 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ółowo

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

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 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ółowo

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1 Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem

Bardziej szczegółowo

A,B M! v V ; A + v = B, (1.3) AB = v. (1.4)

A,B M! v V ; A + v = B, (1.3) AB = v. (1.4) Rozdział 1 Prosta i płaszczyzna 1.1 Przestrzeń afiniczna Przestrzeń afiniczna to matematyczny model przestrzeni jednorodnej, bez wyróżnionego punktu. Można w niej przesuwać punkty równolegle do zadanego

Bardziej szczegółowo

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie V. Biblioteka OpenGL - oświetlenie sceny

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie V. Biblioteka OpenGL - oświetlenie sceny Laboratorium Grafiki Komputerowej i Animacji Ćwiczenie V Biblioteka OpenGL - oświetlenie sceny Sławomir Samolej Rzeszów, 1999 1. Wstęp Większość tworzonych animacji w grafice komputerowej ma za zadanie

Bardziej szczegółowo

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

Grafika 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ółowo

Etap 1. Rysunek: Układy odniesienia

Etap 1. Rysunek: Układy odniesienia Wprowadzenie. Jaś i Małgosia kręcą się na karuzeli symetrycznej dwuramiennej. Siedzą na karuzeli zwróceni do siebie twarzami, symetrycznie względem osi obrotu karuzeli. Jaś ma dropsa, którego chce dać

Bardziej szczegółowo

Wektory, układ współrzędnych

Wektory, 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ółowo

Mapowanie tekstur Mip-mapy (level of detail) Filtrowanie Multiteksturowanie

Mapowanie tekstur Mip-mapy (level of detail) Filtrowanie Multiteksturowanie Mapowanie tekstur Mip-mapy (level of detail) Filtrowanie Multiteksturowanie Korekcja perspektywy http://en.wikipedia.org/wiki/file:perspective_correct_texture_mapping.jpg GL_TEXTURE_MIN_FILTER Zmniejszanie

Bardziej szczegółowo

Grafika 3D program POV-Ray - 1 -

Grafika 3D program POV-Ray - 1 - Temat 1: Ogólne informacje o programie POV-Ray. Interfejs programu. Ustawienie kamery i świateł. Podstawowe obiekty 3D, ich położenie, kolory i tekstura oraz przezroczystość. Skrót POV-Ray to rozwinięcie

Bardziej szczegółowo

Rysunek 1: Okno timeline wykorzystywane do tworzenia animacji.

Rysunek 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ółowo

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

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 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ółowo

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

W 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ółowo

1. Prymitywy graficzne

1. Prymitywy graficzne 1. Prymitywy graficzne Prymitywy graficzne są elementarnymi obiektami jakie potrafi bezpośrednio rysować, określony system graficzny (DirectX, OpenGL itp.) są to: punkty, listy linii, serie linii, listy

Bardziej szczegółowo

Układy współrzędnych

Układy współrzędnych Układy współrzędnych Układ współrzędnych matematycznie - funkcja przypisująca każdemu punktowi danej przestrzeni skończony ciąg (krotkę) liczb rzeczywistych zwanych współrzędnymi punktu. Układ współrzędnych

Bardziej szczegółowo

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

Grafika Komputerowa Wykład 6. Teksturowanie. mgr inż. Michał Chwesiuk 1/23 Wykład 6 mgr inż. 1/23 jest to technika w grafice komputerowej, której celem jest zwiększenie szczegółowości renderowanych powierzchni za pomocą tekstur. jest to pewna funkcja (najczęściej w formie bitmapy)

Bardziej szczegółowo

OpenGL : Oświetlenie. mgr inż. Michał Chwesiuk mgr inż. Tomasz Sergej inż. Patryk Piotrowski. Szczecin, r 1/23

OpenGL : 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ółowo

Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe

Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe Czym są tekstury? Tekstury są tablicowymi strukturami danych o wymiarze od 1 do 3, których elementami są tzw. teksele.

Bardziej szczegółowo

Mechanika ogólna. Kinematyka. Równania ruchu punktu materialnego. Podstawowe pojęcia. Równanie ruchu po torze (równanie drogi)

Mechanika ogólna. Kinematyka. Równania ruchu punktu materialnego. Podstawowe pojęcia. Równanie ruchu po torze (równanie drogi) Kinematyka Mechanika ogólna Wykład nr 7 Elementy kinematyki Dział mechaniki zajmujący się matematycznym opisem układów mechanicznych oraz badaniem geometrycznych właściwości ich ruchu, bez wnikania w związek

Bardziej szczegółowo

Trójwymiarowa grafika komputerowa rzutowanie

Tró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ółowo

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

GRAFIKA 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ółowo

Dodatek A. Spis instrukcji języka Prophio.

Dodatek A. Spis instrukcji języka Prophio. Dodatek A. Spis instrukcji języka Prophio. Wszystkie bloczki poza bloczkami z palety robot dotyczą obiektów na scenie, bądź samej sceny. Jedynie bloczki palety robot dotyczą rzeczywistego robota, połączonego

Bardziej szczegółowo

System graficzny. Potok graficzny 3D. Scena 3D Zbiór trójwymiarowych danych wejściowych wykorzystywanych do wygenerowania obrazu wyjściowego 2D.

System graficzny. Potok graficzny 3D. Scena 3D Zbiór trójwymiarowych danych wejściowych wykorzystywanych do wygenerowania obrazu wyjściowego 2D. System graficzny scena 3D algorytm graficzny obraz 2D Potok graficzny 3D Radosław Mantiuk Dane wejściowe Algorytm tworzący obraz wyjściowy na podstawie sceny 3D Dane wyjściowe Wydział Informatyki Zachodniopomorski

Bardziej szczegółowo

MECHANIKA 2 KINEMATYKA. Wykład Nr 5 RUCH KULISTY I RUCH OGÓLNY BRYŁY. Prowadzący: dr Krzysztof Polko

MECHANIKA 2 KINEMATYKA. Wykład Nr 5 RUCH KULISTY I RUCH OGÓLNY BRYŁY. Prowadzący: dr Krzysztof Polko MECHANIKA 2 KINEMATYKA Wykład Nr 5 RUCH KULISTY I RUCH OGÓLNY BRYŁY Prowadzący: dr Krzysztof Polko Określenie położenia ciała sztywnego Pierwszy sposób: Określamy położenia trzech punktów ciała nie leżących

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy 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ółowo

Laboratorium 1. Część I. Podstawy biblioteki graficznej OpenGL.

Laboratorium 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ółowo

1. Oświetlenie Materiały i powierzchnie

1. Oświetlenie Materiały i powierzchnie 1. Oświetlenie Rzeczywiste światło emitowane przez określone źródło, odbijane jest na milionach powierzchni obiektów, po czym dociera do naszych oczu powodując, że widzimy dane przedmioty. Światło padające

Bardziej szczegółowo

Modelowanie i wstęp do druku 3D Wykład 1. Robert Banasiak

Modelowanie i wstęp do druku 3D Wykład 1. Robert Banasiak Modelowanie i wstęp do druku 3D Wykład 1 Robert Banasiak Od modelu 3D do wydruku 3D Typowa droga...czasem wyboista... Pomysł!! Modeler 3D Przygotowanie modelu do druku Konfiguracja Programu do drukowania

Bardziej szczegółowo

Krzywe stożkowe Lekcja II: Okrąg i jego opis w różnych układach współrzędnych

Krzywe stożkowe Lekcja II: Okrąg i jego opis w różnych układach współrzędnych Krzywe stożkowe Lekcja II: Okrąg i jego opis w różnych układach współrzędnych Wydział Matematyki Politechniki Wrocławskiej Okrąg Okrąg jest szczególną krzywą stożkową. Wyznacza nam koło, które jest podstawą

Bardziej szczegółowo

GRAKO: ŚWIATŁO I CIENIE. Modele barw. Trochę fizyki percepcji światła. OŚWIETLENIE: elementy istotne w projektowaniu

GRAKO: ŚWIATŁO I CIENIE. Modele barw. Trochę fizyki percepcji światła. OŚWIETLENIE: elementy istotne w projektowaniu GRAKO: ŚWIATŁO I CIENIE Metody oświetlania Metody cieniowania Przykłady OŚWIETLENIE: elementy istotne w projektowaniu Rozumienie fizyki światła w realnym świecie Rozumienie procesu percepcji światła Opracowanie

Bardziej szczegółowo

ALGEBRA Z GEOMETRIĄ ANALITYCZNĄ zadania z odpowiedziami

ALGEBRA Z GEOMETRIĄ ANALITYCZNĄ zadania z odpowiedziami ALGEBRA Z GEOMETRIĄ ANALITYCZNĄ zadania z odpowiedziami Maciej Burnecki opracowanie strona główna Spis treści 1 Wyrażenia algebraiczne indukcja matematyczna 1 Geometria analityczna w R 3 3 Liczby zespolone

Bardziej szczegółowo

Elementy geometrii analitycznej w R 3

Elementy 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ółowo

Co to jest wektor? Jest to obiekt posiadający: moduł (długość), kierunek wraz ze zwrotem.

Co 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ółowo

54. Układy współrzędnych

54. Układy współrzędnych 54 54. Układy współrzędnych Współrzędne punktów i dostępne układy współrzędnych na płaszczyźnie (2D) omówiono w rozdziale 8. Współrzędne 2D. W tym rozdziale podane zostaną informacje dodatkowe konieczne

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których

Bardziej szczegółowo

Mechanika. Wykład 2. Paweł Staszel

Mechanika. Wykład 2. Paweł Staszel Mechanika Wykład 2 Paweł Staszel 1 Przejście graniczne 0 2 Podstawowe twierdzenia o pochodnych: pochodna funkcji mnożonej przez skalar pochodna sumy funkcji pochodna funkcji złożonej pochodna iloczynu

Bardziej szczegółowo

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D Wprowadzenie do rysowania w 3D 13 Praca w środowisku 3D Pierwszym krokiem niezbędnym do rozpoczęcia pracy w środowisku 3D programu AutoCad 2010 jest wybór odpowiedniego obszaru roboczego. Można tego dokonać

Bardziej szczegółowo

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie http://galaxy.agh.edu.pl/~mhojny Prowadzący: dr inż. Hojny Marcin Akademia Górniczo-Hutnicza Mickiewicza 30 30-059 Krakow pawilon B5/p.406 tel. (+48)12 617 46

Bardziej szczegółowo

3 Przygotował: mgr inż. Maciej Lasota

3 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 3 1/5 Grafika Komputerowa 3D Instrukcja laboratoryjna Temat: Rysowanie prymitywów 3 Przygotował: mgr inż. Maciej Lasota 1) Rysowanie prymitywów Podstawową rodziną funkcji wykorzystywanych

Bardziej szczegółowo

GRAFIKA KOMPUTEROWA podstawy matematyczne. dr inż. Hojny Marcin pokój 406, pawilon B5 E-mail: mhojny@metal.agh.edu.pl Tel.

GRAFIKA KOMPUTEROWA podstawy matematyczne. dr inż. Hojny Marcin pokój 406, pawilon B5 E-mail: mhojny@metal.agh.edu.pl Tel. GRAFIKA KOMPUTEROWA podstawy matematyczne dr inż. Hojny Marcin pokój 406, pawilon B5 E-mail: mhojny@metal.agh.edu.pl Tel. (12) 617 46 37 Plan wykładu 1/4 ZACZNIEMY OD PRZYKŁADOWYCH PROCEDUR i PRZYKŁADÓW

Bardziej szczegółowo

Scena 3D. Cieniowanie (ang. Shading) Scena 3D - Materia" Obliczenie koloru powierzchni (ang. Lighting)

Scena 3D. Cieniowanie (ang. Shading) Scena 3D - Materia Obliczenie koloru powierzchni (ang. Lighting) Zbiór trójwymiarowych danych wej$ciowych wykorzystywanych do wygenerowania obrazu wyj$ciowego 2D. Cieniowanie (ang. Shading) Rados"aw Mantiuk Wydzia" Informatyki Zachodniopomorski Uniwersytet Technologiczny

Bardziej szczegółowo

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Systemy 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ółowo

BLENDER- Laboratorium 1 opracował Michał Zakrzewski, 2014 r. Interfejs i poruszanie się po programie oraz podstawy edycji bryły

BLENDER- Laboratorium 1 opracował Michał Zakrzewski, 2014 r. Interfejs i poruszanie się po programie oraz podstawy edycji bryły BLENDER- Laboratorium 1 opracował Michał Zakrzewski, 2014 r. Interfejs i poruszanie się po programie oraz podstawy edycji bryły Po uruchomieniu programu Blender zawsze ukaże się nam oto taki widok: Jak

Bardziej szczegółowo

Gry Komputerowe Laboratorium 4. Teksturowanie Kolizje obiektów z otoczeniem. mgr inż. Michał Chwesiuk 1/29. Szczecin, r

Gry Komputerowe Laboratorium 4. Teksturowanie Kolizje obiektów z otoczeniem. mgr inż. Michał Chwesiuk 1/29. Szczecin, r Gry Komputerowe Laboratorium 4 Teksturowanie Kolizje obiektów z otoczeniem mgr inż. Michał Chwesiuk 1/29 Klasa Stwórzmy najpierw klasę TextureManager, która będzie obsługiwała tekstury w projekcie. 2/29

Bardziej szczegółowo

PODSTAWY RACHUNKU WEKTOROWEGO

PODSTAWY RACHUNKU WEKTOROWEGO Transport, studia niestacjonarne I stopnia, semestr I Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Adam Wosatko Ewa Pabisek Skalar Definicja Skalar wielkość fizyczna (lub geometryczna)

Bardziej szczegółowo

Rachunek wektorowy - wprowadzenie. dr inż. Romuald Kędzierski

Rachunek wektorowy - wprowadzenie. dr inż. Romuald Kędzierski Rachunek wektorowy - wprowadzenie dr inż. Romuald Kędzierski Graficzne przedstawianie wielkości wektorowych Długość wektora jest miarą jego wartości Linia prosta wyznaczająca kierunek działania wektora

Bardziej szczegółowo

Grafika 3D OpenGL część II

Grafika 3D OpenGL część II #include #include #include float kat=0.0f; void renderujscene(void) { glclearcolor(1.0f,1.0f,1.0f,1.0f); glclear(gl_color_buffer_bit); glpushmatrix(); glrotatef(kat,0,0,1);

Bardziej szczegółowo

Aby opisać strukturę krystaliczną, konieczne jest określenie jej części składowych: sieci przestrzennej oraz bazy atomowej.

Aby opisać strukturę krystaliczną, konieczne jest określenie jej części składowych: sieci przestrzennej oraz bazy atomowej. 2. Podstawy krystalografii Podczas naszych zajęć skupimy się przede wszystkim na strukturach krystalicznych. Kryształem nazywamy (def. strukturalna) substancję stałą zbudowaną z atomów, jonów lub cząsteczek

Bardziej szczegółowo

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

Układy współrzędnych GUW, LUW Polecenie LUW Układy współrzędnych GUW, LUW Polecenie LUW 1 Układy współrzędnych w AutoCAD Rysowanie i opis (2D) współrzędnych kartezjańskich: x, y współrzędnych biegunowych: r

Bardziej szczegółowo

1 Temat: Vertex Shader

1 Temat: Vertex Shader Instrukcja Architektura procesorów graficznych 1 Temat: Vertex Shader Przygotował: mgr inż. Tomasz Michno 1 Wstęp 1.1 Czym jest shader Shader jest programem (zazwyczaj krótkim), wykonywanym przez kartę

Bardziej szczegółowo

Algebra z geometrią analityczną zadania z odpowiedziami

Algebra z geometrią analityczną zadania z odpowiedziami Algebra z geometrią analityczną zadania z odpowiedziami Maciej Burnecki Spis treści strona główna 1 Wyrażenia algebraiczne, indukcja matematyczna 2 2 Geometria analityczna w R 2 Liczby zespolone 4 4 Wielomiany

Bardziej szczegółowo

Programowanie Procesorów Graficznych

Programowanie 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ółowo

Algebra z geometrią analityczną zadania z odpowiedziami

Algebra z geometrią analityczną zadania z odpowiedziami Algebra z geometrią analityczną zadania z odpowiedziami Maciej Burnecki opracowanie Spis treści I Wyrażenia algebraiczne, indukcja matematyczna 2 II Geometria analityczna w R 2 4 III Liczby zespolone 5

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

Bardziej szczegółowo

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków ZAWARTOŚCI 3 PLIKOW W WORDZIE: MAIN.CPP: #include #include #include pamięci // Potrzebne do memset oraz memcpy, czyli kopiowania bloków #include "Rysowanie_BMP.h" using

Bardziej szczegółowo

Tworzenie nowego rysunku Bezpośrednio po uruchomieniu programu zostanie otwarte okno kreatora Nowego Rysunku.

Tworzenie nowego rysunku Bezpośrednio po uruchomieniu programu zostanie otwarte okno kreatora Nowego Rysunku. 1 Spis treści Ćwiczenie 1...3 Tworzenie nowego rysunku...3 Ustawienia Siatki i Skoku...4 Tworzenie rysunku płaskiego...5 Tworzenie modeli 3D...6 Zmiana Układu Współrzędnych...7 Tworzenie rysunku płaskiego...8

Bardziej szczegółowo

Grafika 3D program POV-Ray - 94 -

Grafika 3D program POV-Ray - 94 - Temat 12: Polecenie blob parametry i zastosowanie do tworzenia obiektów. Użycie polecenia blob (kropla) jest wygodnym sposobem tworzenia gładkiego przejścia pomiędzy bryłami (kulami lub walcami). Możemy

Bardziej szczegółowo

Politechnika Warszawska Wydział Mechatroniki Instytut Automatyki i Robotyki

Politechnika Warszawska Wydział Mechatroniki Instytut Automatyki i Robotyki Politechnika Warszawska Wydział Mechatroniki Instytut Automatyki i Robotyki Ćwiczenie laboratoryjne 2 Temat: Modelowanie powierzchni swobodnych 3D przy użyciu programu Autodesk Inventor Spis treści 1.

Bardziej szczegółowo

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

Zastosowanie stereowizji do śledzenia trajektorii obiektów w przestrzeni 3D Zastosowanie stereowizji do śledzenia trajektorii obiektów w przestrzeni 3D autorzy: Michał Dajda, Łojek Grzegorz opiekun naukowy: dr inż. Paweł Rotter I. O projekcie. 1. Celem projektu było stworzenie

Bardziej szczegółowo

ALGEBRA Z GEOMETRIĄ ANALITYCZNĄ

ALGEBRA Z GEOMETRIĄ ANALITYCZNĄ ALGEBRA Z GEOMETRIĄ ANALITYCZNĄ Maciej Burnecki opracowanie strona główna Spis treści I Zadania Wyrażenia algebraiczne indukcja matematyczna Geometria analityczna na płaszczyźnie Liczby zespolone 4 Wielomiany

Bardziej szczegółowo

Geometria w R 3. Iloczyn skalarny wektorów

Geometria w R 3. Iloczyn skalarny wektorów Geometria w R 3 Andrzej Musielak Str 1 Geometria w R 3 Działania na wektorach Wektory w R 3 możemy w naturalny sposób dodawać i odejmować, np.: [2, 3, 1] + [ 1, 2, 1] = [1, 5, 2] [2, 3, 1] [ 1, 2, 1] =

Bardziej szczegółowo

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje: Program 6 Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje: Funkcja pobierz_osobe wczytuje dane osoby podanej jako argument. Funkcja wypisz_osobe

Bardziej szczegółowo

Zad. 6: Sterowanie robotem mobilnym

Zad. 6: Sterowanie robotem mobilnym Zad. 6: Sterowanie robotem mobilnym 1 Cel ćwiczenia Utrwalenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas, czynności oraz przypadków użycia. Wykorzystanie dziedziczenia

Bardziej szczegółowo

Misja#3. Robimy film animowany.

Misja#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ółowo

Janusz Ganczarski. OpenGL Definiowanie sceny 3D

Janusz Ganczarski. OpenGL Definiowanie sceny 3D Janusz Ganczarski OpenGL Definiowanie sceny 3D Spis treści Spis treści..................................... 1 1. Definiowanie sceny 3D........................... 1 1.1. Obszar renderingu............................

Bardziej szczegółowo

Obraz jako funkcja Przekształcenia geometryczne

Obraz jako funkcja Przekształcenia geometryczne Cyfrowe przetwarzanie obrazów I Obraz jako funkcja Przekształcenia geometryczne dr. inż Robert Kazała Definicja obrazu Obraz dwuwymiarowa funkcja intensywności światła f(x,y); wartość f w przestrzennych

Bardziej szczegółowo

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

Wyś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ółowo

Układ współrzędnych dwu trój Wykład 2 "Układ współrzędnych, system i układ odniesienia"

Układ współrzędnych dwu trój Wykład 2 Układ współrzędnych, system i układ odniesienia Układ współrzędnych Układ współrzędnych ustanawia uporządkowaną zależność (relację) między fizycznymi punktami w przestrzeni a liczbami rzeczywistymi, czyli współrzędnymi, Układy współrzędnych stosowane

Bardziej szczegółowo

OPISY PRZESTRZENNE I PRZEKSZTAŁCENIA

OPISY 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ółowo