Grafika 3D OpenGL część II

Podobne dokumenty
Elementarne obiekty geometryczne, bufory. Dorota Smorawa

Temat: Transformacje 3D

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 6

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

OPENGL PRZEKSZTAŁCENIA GEOMETRYCZNE

3 Przygotował: mgr inż. Maciej Lasota

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

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

Temat: Wprowadzenie do OpenGL i GLUT

Grafika komputerowa INSTRUKCJA DO LABORATORIUM 2: operacje przestrzenne oraz obsługa klawiatury i myszki

Przekształcenia geometryczne. Dorota Smorawa

Janusz Ganczarski. OpenGL Pierwszy program

Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL. Dorota Smorawa

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

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

Bufor koloru cd. Czyszczenie bufora koloru glclearcolor( )

OpenGL model oświetlenia

Rzutowanie DOROTA SMORAWA

MAZOWIECKI PROGRAM STYPENDIALNY DLA UCZNIÓW SZCZEGÓLNIE UZDOLNIONYCH NAJLEPSZA INWESTYCJA W CZŁOWIEKA 2016/2017

Prosty program- cpp. #include <GL/glut.h>

Stereometria bryły. Wielościany. Wielościany foremne

OpenGL przezroczystość

TWORZENIE SZEŚCIANU. Sześcian to trójwymiarowa bryła, w której każdy z sześciu boków jest kwadratem. Sześcian

Materiały. Dorota Smorawa

GRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego.

Maskowanie i selekcja

1. Prymitywy graficzne

OpenGL - charakterystyka

Wprowadzenie do klas w C++ oraz biblioteki opengl

GEOMETRIA PRZESTRZENNA (STEREOMETRIA)

OpenGL teksturowanie

6 Przygotował: mgr inż. Maciej Lasota

TWORZENIE SZEŚCIANU. Sześcian to trójwymiarowa bryła, w której każdy z sześciu boków jest kwadratem. Sześcian

Programowanie Procesorów Graficznych

2 Przygotował: mgr inż. Maciej Lasota

Rysowanie precyzyjne. Polecenie:

Janusz Ganczarski. OpenGL Definiowanie sceny 3D

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

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012

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

STEREOMETRIA CZYLI GEOMETRIA W 3 WYMIARACH

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

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

Grafika Komputerowa, Informatyka, I Rok

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

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

Z przestrzeni na płaszczyznę

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

Dziedziczenie w klasach

Zegary. Zegary (timers) umożliwiają cykliczne w danych odstępach czasu wykonać określone operacje.

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

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

DesignCAD 3D Max 24.0 PL

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

Trójwymiarowa grafika komputerowa rzutowanie

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

Rysunek map Wstęp do AutoCada. Elżbieta Lewandowicz

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

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

Logo Komeniusz. Gimnazjum w Tęgoborzy. Mgr Zofia Czech

AUTOCAD MIERZENIE I PODZIAŁ

Studium podyplomowe. Programowanie w OpenGL. Michał Turek, AGH Kraków

Szablony klas, zastosowanie szablonów w programach

FIGURY I BRYŁY JEDNOSTKI MIARY KĄTY POLE I OBWÓD OBJĘTOŚĆ I POWIERZCHNIA TRÓJKĄT PROSTOKĄTNY

Efekt lustra 3D w OpenGL z wykorzystaniem bufora szablonowego (stencil buffer)

ROZSZERZANIE MOŻLIWOŚCI...

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

OpenGL - maszyna stanu. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 7. Grupy atrybutów. Zmienne stanu.

Programowanie Równoległe wykład, CUDA, przykłady praktyczne 1. Maciej Matyka Instytut Fizyki Teoretycznej

Mieszanie kolorów. Dorota Smorawa

Biblioteka OpenGL: Wprowadzenie

OpenGL. Silicon Graphics (IRIS GL stacje graficzne)

Matematyka z plusem dla szkoły ponadgimnazjalnej. ZAŁOŻENIA DO PLANU RALIZACJI MATERIAŁU NAUCZANIA MATEMATYKI W KLASIE III (zakres podstawowy)

Praktyczne przykłady wykorzystania GeoGebry podczas lekcji na II etapie edukacyjnym.

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

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

ZADANIE 1 (5 PKT) ZADANIE 2 (5 PKT) Oblicz objętość czworościanu foremnego o krawędzi a.

Grafika inżynierska geometria wykreślna. 4. Wielościany. Budowa. Przekroje.

Kod źródłowy programu: program Grafika1; uses crt, graph; (1) var sterownik, tryb:smallint; (2)

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

Część 4 życie programu

Plan wykładu. Akcelerator 3D Potok graficzny

Microsoft Visual C++

SCENARIUSZ ZAJĘĆ KOŁA NAUKOWEGO z MATEMATYKI prowadzonego w ramach projektu Uczeń OnLine

Obliczenie azymutów ze współrzędnych punktów tablica struktur punktów, tablica struktur azymutów

Planimetria 1 12 godz.

Księgarnia PWN: Andrzej Jaskulski - AutoCAD 2010/LT Podstawy projektowania parametrycznego i nieparametrycznego

Funkcja (podprogram) void

Przedmiotowe Zasady Oceniania

SPRAWDZIAN NR 1. Suma długości krawędzi prostopadłościanu o wymiarach 4 cm x 6 cm x 10 cm jest równa. A. 20 cm B. 40 cm C. 60 cm D.

8 Przygotował: mgr inż. Maciej Lasota

Siatki i sklejanie wielościanów Praca konkursowa Matematyka dla Młodych

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Rysowanie punktów na powierzchni graficznej

Animowana grafika 3D Laboratorium 1

Allegro5 część 1 - Witaj Świecie! Projekt, inicjalizacja, tworzenie okna, czcionki. Autor: Kamil Krzyszczuk - C mons

Wymagania na poszczególne oceny szkolne z. matematyki. dla uczniów klasy IIIa i IIIb. Gimnazjum im. Jana Pawła II w Mętowie. w roku szkolnym 2015/2016

Obsługa mapy przy użyciu narzędzi nawigacji

ZAGADNIENIA NA EGZAMIN POPRAWKOWY Z MATEMATYKI W KLASIE IV TECHNIKUM.

Transkrypt:

#include <windows.h> #include <gl/glut.h> #include <gl/glu.h> 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); glbegin(gl_quads); glcolor3f(1.0f,0.0f,0.0f); glvertex3f(-1.0f,-1.0f,-5.0f); glcolor3f(0.0f,0.0f,1.0f); glvertex3f(1.0f,-1.0f,-5.0f); glcolor3f(0.0f,1.0f,0.0f); glvertex3f(1.0f,1.0f,-5.0f); glcolor3f(1.0f,1.0f,0.0f); glvertex3f(-1.0f,1.0f,-5.0f); glend(); glpopmatrix(); kat+=0.2f; glutswapbuffers(); } Grafika 3D OpenGL część II Przód i tył wielokąta, tryb siatki wielokątów, bryły, bufor głębi, kwadryki, obiekty GLUT, obsługa klawiatury i myszy. Michał Dudkiewicz jaymz@mat.umk.pl

OpenGL przód i tył wielokąta CULLFACE OpenGL pozwala określid gdzie znajduje się przód a gdzie tył wielokąta, następnie możliwe jest wyłączenie renderowania niewidocznej strony wielokąta. Znacząco zwiększa to wydajnośd generowania grafiki 3D. Proces ukrywania krawędzi odbywa się przy pomocy 3 funkcji: 1. Zdefiniowania, która strona wielokąta jest przednia, a która tylna glfrontface(gl_cw); GL_CCW czyli strona przednia to ta, której wierzchołki ułożone są przeciwnie do ruchu wskazówek zegara GL_CW czyli przednia strona to ta, której wierzchołki ułożone są zgodnie z ruchem wskazówek zegara 2

OpenGL przód i tył wielokąta CULLFACE 2. Zdefiniowania, której strony wielokąta nie renderowad glcullface(gl_front); GL_FRONT nie renderowad strony przedniej GL_BACK nie renderowad strony tylnej GL_FRONT_AND_BACK nie renderowad żadnej ze stron 3. Włączenie ukrywania niewidocznych powierzchni glenable(gl_cull_face ); Wyłączenie ukrywania niewidocznych powierzchni gldisable(gl_cull_face ); 3

OpenGL przód i tył wielokąta CULLFACE OpenGL pozwala włączyd zamiast pełnego renderowania tak zwany tryb siatki wielokątów. Włączenie odbywa się przy pomocy funkcji: glpolygonmode(gl_front_and_back, GL_LINE); Powrót do trybu pełnego renderowania glpolygonmode(gl_front_and_back, GL_FILL); GL_FRONT przednia strona GL_BACK strony tylna GL_FRONT_AND_BACK obie strony 4

OpenGL Z-bufor (bufor głębi) Zadaniem Z-bufora jest ukrywanie (usuwanie) niewidocznych (przysłanianych) elementów renderowanej sceny. Prawidłowe włączenie bufora głębokości wymaga: 1. W przypadku biblioteki GLUT - dodania stałej GLUT_DEPTH glutinitdisplaymode(glut_double GLUT_RGB GLUT_DEPTH); 2. Włącznie algorytmu Z-bufora glenable(gl_depth_test); 3. Wyczyszczenie zawartości Z-bufora glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); 5

OpenGL kwadryki Biblioteka pomocnicza GLU udostępnia kilka gotowych funkcji renderujących popularne bryły geometryczne (kwadryki): dyski, cylindry, sfery. Tworzenie obiektu kwadryki wymaga: 1. Zadeklarowania zmiennej typu GLUquadricObj GLUquadricObj *kwadryka; 2. Przydzielenia pamięci dla obiektu kwadryki kwadryka = glunewquadric(); 3. Utworzenia konkretnej kwadryki (dysku, cylindra, sfery) 6

OpenGL kwadryki (dysk) gludisc(kwadryka,r1,r2,a,b); r1 promieo wewnętrznego dysku który będzie wycięty w dysku zewnętrznych (gdy r1 = 0.0f to dysk jest kołem) r2 promieo zewnętrznego dysku a,b - definiują gęstośd siatki na której rozpięty będzie dysk Im większy parametr a tym bardziej okrągły będzie dysk Im większy parametr b tym dysk będzie ładniej wyglądał po dodaniu światła 7

OpenGL kwadryki (wycinek dysku) glupartialdisc(kwadryka,r1,r2,a,b,kat_p,kat_k); r1 promieo wewnętrznego dysku który będzie wycięty w dysku zewnętrznych (gdy r1 = 0.0f to dysk jest kołem) r2 promieo zewnętrznego dysku a,b - definiują gęstośd siatki na której rozpięty będzie dysk Im większy parametr a tym bardziej okrągły będzie dysk Im większy parametr b tym dysk będzie ładniej wyglądał po dodaniu światła kat_p,kat_k kąt początkowy i koocowy 8

OpenGL kwadryki (cylinder) r1 promieo dolnej podstawy r2 promieo górnej podstawy glucylider(kwadryka,r1,r2,h,a,b); a,b - definiują gęstośd siatki na której rozpięty będzie dysk h wysokośd cylindra Im większy parametr a tym bardziej okrągły będzie dysk Im większy parametr b tym dysk będzie ładniej wyglądał po dodaniu światła 9

OpenGL kwadryki (sfera) i inne bryły r promieo sfery glusphere(kwadryka,r,a,b); a,b - definiują gęstośd siatki na której rozpięty będzie dysk Uwaga! Należy ostrożnie podawad wartości rozpiętości siatki (parametry a,b) zbyt duże wartości mogą bardzo spowolnid renderowanie. Aby narysowad inne bryły np.: sześcian należy je skonstruowad z wielokątów. Sześcian uzyskamy rysując 6 odpowiednio ułożonych kwadratów. 10

OpenGL obiekty GLUT Biblioteka GLUT udostępnia kilka gotowych funkcji renderujących obiekty trójwymiarowe: czajnik, kula, stożek, czworościan, sześcian, ośmiościan, dwunastościan, dwudziestościan. Czajnik: Kula: glutsolidteapot(rozmiar); glutwireteapot(rozmiar); glutsolidsphere(rozmiar,a,b); glutwiresphere(rozmiar,a,b); rozmiar określa wielkośd obiektu a,b definiują gęstośd siatki na której rozpięty będzie dysk 11

OpenGL obiekty GLUT Stożek: glutsolidcone(rozmiar,wysokosc,a,b); glutwirecone(rozmiar,wysokosc,a,b); Czworościan foremny: glutsolidtetrahedron(); glutwiretetrahedron(); Sześcian: glutsolidcube(rozmiar); glutwirecube(rozmiar); rozmiar określa wielkośd obiektu, wysokosc określa wysokośd obiektu a,b definiują gęstośd siatki na której rozpięta jest bryła 12

OpenGL obiekty GLUT Ośmiościan foremny: glutsolidoctahedron(); glutwireoctahedron(); Dwunastościan foremny: glutsoliddodecahedron(); glutwiredodecahedron(); Dwudziestościan foremny: glutsolidicosahedron(); glutwireicosahedron(); 13

GLUT klawiatura glutkeyboardfunc(klawiatura) funkcja odpowiedzialna za zarejestrowanie funkcji obsługującej znaki ASCII a na klawiaturze void klawiatura(const char c, int x, int y) { switch(c) { case 1 : //zrób coś break; case 2 : //zrób coś innego break; } glutpostredisplay(); } 14

GLUT klawiatura glutspecialfunc(klawiatura) funkcja odpowiedzialna za zarejestrowanie funkcji obsługującej znaki specjalne na klawiaturze void klawiatura(int c, int x, int y) { switch(c) { case GLUT_KEY_F1: //zrób coś break; case GLUT_KEY_PAGE_UP: //zrób coś innego break; } glutpostredisplay(); } 15

GLUT mysz Funkcja glutmousefunc(mysz) odpowiada za obsługę zdarzeo wciśnięcia i zwolnienia danego przycisku myszy. Parametr mysz musi byd funkcją o następującym nagłówku: void mysz(int przycisk, int stan, int x, int y); przycisk może przyjąd jedną z wartośdi: GLUT_LEFT_BUTTON, GLUT_RIGHT_BUTTON, GLUT_MIDDLE_BUTTON stan może przyjąd jedną z wartości: GLUT_DOWN, GLUT_UP x,y przekazują współrzędne położenia kursora myszy w oknie 16

GLUT mysz Funkcja glutpassivemotionfunc(mysz) odpowiada za obsługę zdarzeo ruchu kursora myszy bez wciśnięcia jakiegokolwiek przycisku myszy. Funkcja glutmotionfunc(mysz) odpowiada za obsługę zdarzeo ruchu kursora myszy przy wciśniętym danym przycisku myszy. W obu przypadkach parametr mysz musi byd funkcją o następującym nagłówku: void mysz(int x, int y); x,y przekazują współrzędne położenia kursora myszy w oknie 17