OpenGL przezroczystość



Podobne dokumenty
Plan wykładu. Akcelerator 3D Potok graficzny

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

OpenGL Światło (cieniowanie)

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

OpenGL model oświetlenia

Oświetlenie obiektów 3D

Podstawy 3D Studio MAX

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

WPROWADZENIE DO GRAFIKI KOMPUTEROWEJ

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

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

Grafika 3D OpenGL część II

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

rgbf<składowa_r,składowa_g,składowa_b,filter>. Dla parametru filter przyjmij kolejno wartości: 0.60, 0.70, 0.80, 0.90, 1.00, np.:

PRZEWODNIK PO PRZEDMIOCIE

Wykład 4. Rendering (1) Informacje podstawowe

ANDROID. OpenGL ES 1.0. Tomasz Dzieniak

CYFROWA SYNTEZA FOTOREALISTYCZNYCH OBRAZÓW W ŚRODOWISKU 3D

Mieszanie kolorów. Dorota Smorawa

Następnie zdefiniujemy utworzony szkic jako blok, wybieramy zatem jak poniżej

Zadanie 1. Ściana. 1. Potrzebne zmienne w dołączonym do zadania kodzie źródłowym

Grafika komputerowa i wizualizacja

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

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

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

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

OpenGL teksturowanie

Podstawy Informatyki Wykład V

Zaawansowana Grafika Komputerowa

WSTĘP DO GRAFIKI KOMPUTEROWEJ

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

Systemy wirtualnej rzeczywistości. Podstawy grafiki 3D

Ćwiczenie 4 - Podstawy materiałów i tekstur. Renderowanie obrazu i animacji

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010 KOMPUTEROWA

GRAFIKA KOMPUTEROWA 8: Konwersja i mieszanie kolorów

OpenGL Światło (cieniowanie)

Marysia Donten Kuba Pochrybniak

Zadanie polega na zbudowaniu i wyświetleniu przykładowej animowanej sceny przedstawiającej robota spawalniczego typu PUMA.

Grafika 3D program POV-Ray

Krystalografia. Analiza wyników rentgenowskiej analizy strukturalnej i sposób ich prezentacji

Mamy co prawda trawiastą powierzchnię ziemi i niebo, ale scena wygląda mało realistycznie. Zmieńmy nieco właściwości tekstury płaszczyzny gruntu:

Autodesk 3D Studio MAX Teksturowanie modeli 3D

Synteza i obróbka obrazu. Modelowanie obiektów 3D

Techniki animacji komputerowej

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

ECDL/ICDL CAD 2D Moduł S8 Sylabus - wersja 1.5

Programowanie: grafika w SciLab Slajd 1. Programowanie: grafika w SciLab

Wprowadzenie do programu 3ds Max THEBRAIN

Autodesk 3D Studio MAX Animacja komputerowa i praca kamery

3 Przygotował: mgr inż. Maciej Lasota

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

IRONCAD. TriBall IRONCAD Narzędzie pozycjonujące

Programy CAD Modelowanie geometryczne

Grafika Komputerowa Materiały Laboratoryjne

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

Modelowanie w projektowaniu maszyn i procesów cz.3

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

Synteza i obróbka obrazu. Tekstury. Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych

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

Grafika 2D. Animacja Zmiany Kształtu. opracowanie: Jacek Kęsik

6 Przygotował: mgr inż. Maciej Lasota

Wstęp Podstawy Pierwszy program Definiowanie sceny 3D Przekształcenia geometryczne... 47

Gry komputerowe: efekty specjalne cz. 2

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

Grafika komputerowa Tekstury

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

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

Obliczenie punktu przecięcia półprostej i płaszczyzny w przestrzeni 3-D wymaga rozwiązania równania liniowego.

Przekształcenia geometryczne. Dorota Smorawa

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Temat: Transformacje 3D

Grafika 3D na przykładzie XNA 3.1

glwindowpos2d void DrawString (GLint x, GLint y, char *string) { glwindowpos2i (x,y); int len = strlen (string); for (int i = 0; i < len; i++)

1. Czym jest rendering? a. Komputerowa analiza modelu danej sceny i utworzenie na jej podstawie obrazu 2D. b. Funkcja umożliwiająca kopiowanie obrazu

Przewodnik po soczewkach

Zatem standardowe rysowanie prymitywów wygląda następująco:

Przygotowanie grafiki 3D do gier komputerowych

Karty graficzne możemy podzielić na:

Migracja z aplikacji ArcMap do ArcGIS Pro

Programy CAD Modelowanie geometryczne

(1,10) (1,7) (5,5) (5,4) (2,1) (0,0) Grafika 3D program POV-Ray

Plan wykładu. Wprowadzenie Program graficzny GIMP Edycja i retusz zdjęć Podsumowanie. informatyka +

KILKA SŁÓW O GRAFICE KOMPUTEROWEJ

Modelowanie krzywych i powierzchni

Projektowanie graficzne. Wykład 2. Open Office Draw

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

Opis przedmiotu zamówienia

Grafika 3D program POV-Ray - 1 -

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

DARMOWA PRZEGLĄDARKA MODELI IFC

CPT-CAD - Program do tworzenia dokumentacji geologicznej i geotechnicznej

Unreal Engine w 24 godziny : nauka tworzenia gier / Aram Cookson, Ryan DowlingSoka, Clinton Crumpler. Gliwice, cop Spis treści.

Janusz Ganczarski. OpenGL Pierwszy program

Efekty dodatkowe w rasteryzacji

Śledzenie promieni w grafice komputerowej

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

Polecenie ŚWIATPUNKT - ŚWIATŁO PUNKTOWE

WASM AppInventor Lab 3. Rysowanie i animacja po kanwie PODSTAWY PRACY Z KANWAMI

Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library. OpenGL składa się z

Transkrypt:

OpenGL przezroczystość W standardzie OpenGL efekty przezroczystości uzyskuje się poprzez zezwolenie na łączenie kolorów: Kolor piksela tworzy się na podstawie kolorów obiektu przesłanianego i przesłaniającego O stopniu przesłonienia decyduje współczynnik Alpha w funkcji ustalania kolorów: glcolor4d(r,g,b,alpha); Im niższa wartość współczynnika, tym większa jest przezroczystość danego obiektu. 1

OpenGL włączenie przezroczystości { glpolygonmode(gl_front_and_back,gl_fill); //Wyrysowanie wszystkich obiektów nieprzezroczystych: glpushmatrix(); gltranslated(0,0,-40); kula(); glpopmatrix(); //Włączenie łączenia kolorów: glenable(gl_blend); //Ustawienie bufora głębokości w tryb odczytu: gldepthmask(gl_false); //Skonfigurowanie sposobu łączenia kolorów: glblendfunc(gl_src_alpha,gl_one_minus_src_alpha); //Określenie koloru obiektu przezroczystego: glcolor4d(0.6,0.7,0.6,0.4); skrzynka(); //Przywrócenie bufora głębokości w pełny tryb zapisu/odczytu: gldepthmask(gl_true); //Wyłączenie łączenia kolorów: gldisable(gl_blend);} 2

OpenGL mgła W standardzie OpenGL wprowadzono możliwość zdefiniowania mgły. Stosuje się ją zwykle w dwu przypadkach: Do naśladowania rzeczywistego zjawiska mgły, Do przesłaniania lub zacierania obiektów znajdujących się dalej na scenie (bardziej realistyczna dal, czy noc), 3

OpenGL definiowanie mgły {float fogcolor[4]={0.5,0.5,0.5,1.0}; // Kolor mgły glfogi(gl_fog_mode, GL_LINEAR); // Typ odwzorowania mgły // GL_LINEAR (koniec z) / (koniec początek) // GL_EXP e (gęstość*głębokość) // GL_EXP2 - e (gęstość*głębokość)*(gęstość*głębokość) glfogfv(gl_fog_color, fogcolor); glfogf(gl_fog_density, 0.0001f); glfogf(gl_fog_start, 50.0f); glfogf(gl_fog_end, 300.0f); // Kolor mgły // Gęstość // Początek // Koniec glenable(gl_fog); // Włączenie mgły //... // Instrukcje rysujące obiekty na scenie } 4

OpenGL mgła objętościowa Zastosowanie standardowej mgły OpenGL przewiduje obliczanie efektu koloru mgły na podstawie tylko odległości względem osi z. W przypadku rozciągniętych wzdłuż innych osi obiektów znajdujących się blisko obserwatora, nie następuje naturalne przesłonięcie. Alternatywnym sposobem reprezentowania mgły jest opisywanie go jako oddzielnego bytu reprezentowanego przez sfery, cząsteczki lub mapy mgły. 5

OpenGL krzywe parametryczne W standardzie OpenGL przewidziano możliwość konstruowania krzywych parametrycznych (krzywe Beziera i Krzywe NURBS) Ogólny wzór na krzywe parametryczne: C(u)=[x(u), y(u)] Krzywe parametryczne opisuje się przez zestaw punktów kontrolnych, które wpływają na ich wygląd: W przypadku krzywych Beziera pierwszy i ostatni punkt kontrolny definiują położenie początku i końca krzywej, pozostałe zaś odginają krzywą. Zwykle dobre efekty uzyskuje się podając od 3 do 4 punktów kontrolnych, jeśli chce się uzyskać krzywą gładką. Bardziej złożone krzywe definiuje się sklejając odcinki opisywane 3-4 punktami kontrolnymi. Krzywe NURBS mają właściwości podobne do krzywych Beziera. Ich przewaga polega na tym, że z definicji podzielone są na segmenty. Na własność każdego z segmentów mają wpływ tylko 4 najbliższe punkty kontrolne. (Można łatwo zapewnić gładkość krzywej). 6

Definiowanie odcinaka krzywej Beziera (zastosowanie ewaluatora) {// 4 punkty kontrolne: float control[4][3]={{ 1.0, -3.0, 0.0 }, { 3.0, 2.5, 0.0 }, { 8.0, -2.0, 0.0}, {7.0, 2.0, 0.0 } }; glmap1f(gl_map1_vertex_3, // Jednowymiarowy ewaluator 0.0, // początkowa wartość par. u 30.0, // końcowa wartość par. u 3, // odległość między punkt. krzywej 4, // ilość punktów kontrolnych &control[0][0]); // dane punktów kontrolnych glenable(gl_map1_vertex_3);// Aktywowanie formatu pkt. kontr. // Wyrysowanie krzywej na podstawie ewaluatora: glmapgrid1d(30,0.0,30.0); glevalmesh1(gl_line,0,30); glcolor3f(1.0, 0.0, 0.0); // Wyrysowanie punktów kontrolnych: glbegin(gl_points); for (i = 0; i < 4; i++) glvertex3fv(&control[i][0]); glend();} 7

OpenGL powierzchnie parametryczne Powierzchnie parametryczne są rozwinięciem pojęcia krzywych parametrycznych. Ogólny wzór na powierzchnie parametryczne: S(u,v)=[x(u,v), y(u,v), z(u,v)] Punkty kontrolne są odpowiedzialne teraz za wyginanie powierzchni. 8

Definiowanie powierzchni Beziera {//punkty kontrolne: float csurface[3][3][3] = { {{-200.0,40.0,200.0}, {-100.0,100.0,200.0},{200.0,0.0,200.0}}, {{-240.0,0.0,0.0},{-150.0,100.0,0.0},{200.0,0.0,0.0 }}, {{-200.0,-80.0,-200.0},{-100.0,100.0,-200.0},{200.0,0.0,-200.0 }}}; // Utworzenie powierzchni Beziera i jej aktywacja glmap2f(gl_map2_vertex_3, 0.0, 10.0, 3, 3, 0.0, 10.0, 9, 3, &csurface[0][0][0]); glenable(gl_map2_vertex_3); // tworzeniw siatki równoodległej: glmapgrid2f(10, 0.0f, 10.0f, 10, 0.0f, 10.0f); // Automatyczna generacja normalnych glenable(gl_auto_normal); // wyznaczenie powierzchni // na podstawie siatki glevalmesh2(gl_fill, 0, 10, 0, 10); glbegin(gl_points); for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) glvertex3fv(&csurface[i][j][0]); glend();} 9

Nakładanie tekstury na powierzchnię Beziera {// punkty kontrolne krzywej i tekstury float csurface[3][3][3] = { {{-200.0,40.0,200.0},{-100.0,100.0,200.0},{200.0,0.0,200.0}}, {{-240.0, 0.0, 0.0},{-150.0,100.0,0.0},{200.0,0.0,0.0}}, {{-200.0,-80.0,-200.0},{-100.0,100.0,-200.0},{200.0,0.0,-200.0 }}}; float stexcoords[2][2][2] = {{{0.0,0.0},{0.0,1.0}}, {{1.0,0.0},{1.0,1.0}}}; // tworzy ewaluator punktów kontrolnych powierzchni glmap2f(gl_map2_vertex_3, 0.0, 1.0, 3, 3, 0.0, 1.0, 9, 3, &csurface[0][0][0]); // tworzy ewaluator współrzędnych tekstury glmap2f(gl_map2_texture_coord_2, 0, 1, 2, 2, 0, 1, 4, 2, &stexcoords[0][0][0]); // aktywuje utworzone ewaluatory glenable(gl_map2_texture_coord_2); glenable(gl_map2_vertex_3); // tworzy siatkę powierzchni glmapgrid2f(10, 0.0f, 1.0f, 10, 0.0f, 1.0f); glevalmesh2(gl_fill, 0, 10, 0, 10);} 10

OpenGL powierzchnie B-sklejane (NURBS) { GLUnurbsObj *mynurb; // Punkty kontrolne: float knots[8] = { 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0 }; float nurb[4][4][3]; // inicjuje obiekt krzywej B-sklejanej mynurb = glunewnurbsrenderer(); glunurbsproperty(mynurb, GLU_SAMPLING_TOLERANCE, 50.0); glunurbsproperty(mynurb, GLU_DISPLAY_MODE, GLU_FILL); // rozpoczyna definiowanie powierzchni B-sklejanej glubeginsurface(mynurb); // rysuje powierzchnię B-sklejaną glunurbssurface(mynurb, 8, knots, 8, knots, 4*3, 3, &nurb[0][0][0], 4, 4, GL_MAP2_VERTEX_3); // skończone gluendsurface(mynurb);} 11

Podsumowanie zasad stosowania OpenGL do tworzenia scen 1. Przygotowanie siatek 2. Zdefiniowanie transformacji przestrzennych i położenia kamery 3. Zdefiniowanie oświetlenia sceny 4. Teksturowanie 5. Zdefiniowanie interfejsu użytkownika 6. Dodatkowe elementy mgła, przezroczystość, mapy oświetlenia itp. 12

Przegląd technik grafiki komputerowej Selekcja elementów sceny (OpenGL): Zastosowanie bufora powielania do tworzenia realistycznego efektu odbicia (OpenGL): 13

Rysowanie cieni (OpenGL): Przegląd technik grafiki komputerowej Systemy cząsteczek: silnik rakietowy śnieżyca 14

Ładowanie obiektów 3DS Przegląd technik grafiki komputerowej Ładowanie plików MD3 15

Ładowanie plików BSP Przegląd technik grafiki komputerowej Zastosowanie modeli fizycznych 16