2 Przygotował: mgr inż. Maciej Lasota



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

Rzutowanie DOROTA SMORAWA

Janusz Ganczarski. OpenGL Definiowanie sceny 3D

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

Trójwymiarowa grafika komputerowa rzutowanie

Ćwiczenia nr 4. TEMATYKA: Rzutowanie

Temat: Transformacje 3D

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 6

gdzie (4.20) (4.21) 4.3. Rzut równoległy

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

6 Przygotował: mgr inż. Maciej Lasota

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

Przekształcenia geometryczne. Dorota Smorawa

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

3 Przygotował: mgr inż. Maciej Lasota

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

GRK 2. dr Wojciech Palubicki

Transformacje obiektów 3D

Systemy wirtualnej rzeczywistości. Podstawy grafiki 3D

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

Z ostatniego wzoru i zależności (3.20) można obliczyć n6. Otrzymujemy (3.23) 3.5. Transformacje geometryczne

Plan wykładu. Akcelerator 3D Potok graficzny

Π 1 O Π 3 Π Rzutowanie prostokątne Wiadomości wstępne

Mapowanie sześcienne otoczenia (cubic environment mapping)

BRYŁY PODSTAWOWE I OBIEKTY ELEMENTARNE

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

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

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

Maszyny technologiczne. dr inż. Michał Dolata

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

8 Przygotował: mgr inż. Maciej Lasota

Ćwiczenie dodatkowe - Wybrane narzędzia modelowania Zadanie Przygotować model stołu z krzesłami jak na rysunku poniżej(rys. 1).

Co to jest OpenGL? Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. OpenGL - Achitektura. OpenGL - zalety. olas@icis.pcz.

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

Symetria w fizyce materii

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

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

GRAFIKA KOMPUTEROWA podstawy matematyczne. dr inż. Hojny Marcin pokój 406, pawilon B5 Tel.

Grafika komputerowa Wykład 4 Geometria przestrzenna

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

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

Rozdział 8 Wzory na macierze OpenGL

Wstęp Pierwsze kroki Pierwszy rysunek Podstawowe obiekty Współrzędne punktów Oglądanie rysunku...

CorelDraw - wbudowane obiekty wektorowe - prostokąty Rysowanie prostokątów

Grafika Komputerowa Materiały Laboratoryjne

Mobilne Aplikacje Multimedialne

Transformacje. dr Radosław Matusik. radmat

Wektory i macierze w OpenGL

Laboratorium Programowanie urządzeń mobilnych

TWORZENIE OBIEKTÓW GRAFICZNYCH

Wykład 4. Rendering (1) Informacje podstawowe

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

OPENGL PRZEKSZTAŁCENIA GEOMETRYCZNE

VII. WYKRESY Wprowadzenie

GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych

OpenGL i wprowadzenie do programowania gier

1. Prymitywy graficzne

Wykonanie w 3ds max dowolnego samochodu

OPROGRAMOWANIE UŻYTKOWE

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

Programowanie Procesorów Graficznych

Mobilne Aplikacje Multimedialne

Architektura interfejsu użytkownika

RZUTOWANIE PROSTOKĄTNE

Plan wykładu. Wykład 3. Rzutowanie prostokątne, widoki, przekroje, kłady. Rzutowanie prostokątne - geneza. Rzutowanie prostokątne - geneza

Wykład 1. Wprowadzenie do przedmiotu. Powierzchnia odniesienia w pomiarach inżynierskich.

Animowana grafika 3D Laboratorium 1

Ćwiczenie nr 2 - Rysowanie precyzyjne

Gry Komputerowe Interaktywna kamera FPP

Ćwiczenie nr 2 - Rysowanie precyzyjne

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

Płaszczyzny, Obrót, Szyk

Agencja Restrukturyzacji i Modernizacji Rolnictwa

Odsyłacze. Style nagłówkowe

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

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

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

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

Elementarne obiekty geometryczne, bufory. Dorota Smorawa

Spis treści. 1 Moduł Mapy 2

Obraz jako funkcja Przekształcenia geometryczne

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5

Przemysław Kajetanowicz Ćwiczenia

TEMAT :Animacja Komputerowa. Projekt współfinansowany w ramach Europejskiego Funduszu Społecznego

WIZUALIZACJA INFORMACJI TEKSTOWEJ WSTĘP DO HTML 5 CANVAS

Zasady rzutowania prostokątnego. metodą europejską. Opracował: Robert Urbanik Zespół Szkół Mechanicznych w Opolu. Zasady rzutowania prostokątnego

INSTYTUT INFORMATYKI STOSOWANEJ MODELOWANIE CZĘŚCI Z WYKORZYSTANIEM PROGRAMU SOLID EDGE

Temat: Wprowadzenie do OpenGL i GLUT

Spis treści. Konwencje zastosowane w książce...5. Dodawanie stylów do dokumentów HTML oraz XHTML...6. Struktura reguł...9. Pierwszeństwo stylów...

OpenGL transformacje przestrzenne

Politechnika Warszawska Wydział Mechatroniki Instytut Automatyki i Robotyki

Część I - Zarządzanie powierzchnią ekranu

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

KATEDRA MECHANIKI I PODSTAW KONSTRUKCJI MASZYN. Instrukcja do ćwiczeń laboratoryjnych z elementów analizy obrazów

Grafika komputerowa i wizualizacja

1. Opis okna podstawowego programu TPrezenter.

Grafika trójwymiarowa

Ćwiczenie 9. Rzutowanie i wymiarowanie Strona 1 z 5

Rys 3-1. Rysunek wałka

Grafika Komputerowa, Informatyka, I Rok

Transkrypt:

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: 1. lewoskrętny układ współrzędnych, 2. prawoskrętny układ współrzędnych. Różnią się one między sobą kierunkiem osi Z w układzie kartezjańskim trójwymiarowym. W bibliotece OpenGL obowiązuje układ prawoskrętny (Direct3D umożliwia korzystanie z obydwu typów układów współrzędnych). Fizyczne zamienienie jednego układu w drugi nie jest możliwe. Możliwe jest natomiast udawanie układu lewoskrętnego i odwrotnie poprzez umieszczanie przed każdą współrzędną wierzchołka osi Z znaku minusa. +Y -X -Z ekran monitora +X +Z -Y Układ współrzędny prawoskrętny

Laboratorium nr 2 2/6 +Y -X +Z ekran monitora +X -Z -Y Układ współrzędny lewoskrętny 2) Rzutowanie Rzutowanie jest operacją polegającą 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 3D). Rzutowanie również pozwala tworzyć przestrzeń dwuwymiarową 2D dzięki odpowiedniemu przekształceniu. OpenGL wyposażony jest w specjalne funkcje, dzięki którym można uzyskać odpowiedni efekt rzutowania. Wyróżniamy dwa typy rzutowania: 1. rzutowanie perspektywiczne (wykorzystywane w grach 3D), 2. rzutowanie ortogonalne (wykorzystywane w programach typu CAD/CAM). 2.1.) Rzutowanie perspektywiczne W rzutowaniu perspektywicznym obiekty położone dalej od kamery są mniejsze od tych położonych bliżej. OpenGL udostępnia specjalną funkcję, która tworzy odpowiednią macierz perspektywy. void gluperspective(gldouble n, GLdouble a, GLdouble zn, GLdouble zf)

Laboratorium nr 2 3/6 Funkcja przyjmuje cztery parametry. Pierwszy parametr określa kąt widzenia (w stopniach, zalecana wartość 60 stopni) w pionie. Drugi parametr określa stosunek szerokości do wysokości okna (zazwyczaj podaje się szerokość okna, w którym wyświetlana jest grafika podzieloną przez wysokość). Dwa ostatnie parametry określają granicę przednią i tylną, z reguły parametr zn przyjmuje wartość 1.0. Widok perspektywiczny tworzy stożek widzenia, którego granicami są właśnie granica przednia i tylna. Wszystko co jest w stożku pojawia się na ekranie, obiekty znajdujące się poza stożkiem nie są wyświetlane. a zn zf Funkcja gluperspective jak można zauważyć, nie należy do biblioteki OpenGL jest ona części biblioteki GLU (biblioteki pomocniczej). Oryginalną funkcją służącą do ustawiania rzutowania perspektywicznego w bibliotece OpenGL jest glfrustum, gluperspective jest jedynie nakładką na tą funkcje. void glfrustum(gldouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zn, GLdouble zf) Funkcja przyjmuje sześć parametrów. Pierwsze dwa parametry określa prawą i lewą współrzędną pionowej linii obcinania. Kolejne dwa parametry określają górna i dolną współrzędną poziomej linii obcinania. Dwa ostatnie parametry określają granicę przednią i tylną. 2.2.) Rzutowanie ortogonalne Nazywane inaczej rzutowaniem prostokątnym lub równoległym. Polega ono na tym, że każdy obiekt znajdujący się w obszarze rysowania niezależnie od swojej odległości od kamery ma dokładnie tą samą wielkość.

Laboratorium nr 2 4/6 W OpenGL dostępna jest specjalna funkcja, która tworzy rzutowanie ortogonalne. void glortho(gldouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far) Funkcja glortho tworzy tzw. bryłę widzenia (bryłę obcinania). Parametry left oraz right określają szerokość bryły, parametry bottom oraz top jej wysokość. Dwa ostatnie parametry near i far określają głębię. W obrębie bryły widzenia tworzone są obiekty, które są wyświetlane na ekranie. To czy obiekt pojawi się na ekranie zależy od tego czy znajdzie się on w obszarze prostopadłościanu. Rzutowanie ortogonalne wykorzystywane jest często w grach 2D oraz programach typu CAD/CAM. +Y top -Z far -X left right +X near botom +Z -Y

Laboratorium nr 2 5/6 3) Kamera Oprócz samego rzutowania w OpenGL bardzo ważną rzeczą jest kamera. Kamera określa położenie obserwatora (w przestrzeni 3D) względem obserwowanych obiektów. OpenGL posiada funkcję tworzącą macierz kamery. void glulookat(gldouble x, GLdouble y, GLdouble z, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz) Funkcja przyjmuje dziewięć argumentów. Pierwsze trzy argumenty (x,y,z) określają położenie kamery w przestrzeni trójwymiarowej. Kolejne trzy argumenty (centerx, centery, centerz) określają punkt na który skierowana jest kamera (patrzy kamera). Ostatnie trzy argumenty (upx, upy, upz) określają wektor pionu kamery, dzięki tym parametrom możliwe jest obracanie kamery. 4) Macierz rzutowania i modelowania OpenGL oblicza według następującego wzoru pozycję punktu w przestrzeni: [WYJŚCIOWY POZYCJA PUNKTU] = [MACIERZ RZUTOWANIA] * [MACIERZ MODELOWANIA] * [WEJSCIOWA POZYCJA PUNKTU] Dodatkowo w skład macierzy modelowania wchodzą dwie osobne macierze (traktowane jako całość). Pierwszą z nich jest macierz przekształceń (związana z translacją, rotacją i skalowaniem), drugą zaś macierz kamery. 4.1.) Macierz rzutowania (projekcji) Jak sama nazwa wskazuje związana jest z rzutowaniem. Aby umożliwić rzutowanie perspektywiczne lub ortogonalne należy przełączyć się na macierz rzutowania. Do tego celu służy odpowiednia funkcja. void glmatrixmode(gl_projection)

Laboratorium nr 2 6/6 Zawsze po załadowaniu macierzy rzutowania należy w OpenGL wywołać funkcje odpowiedzialną za załadowanie tzw. macierzy tożsamości glloadidentity (jest to funkcja bezparametrowa). Dopiero po tym możemy ustawić rzutowanie perspektywiczne lub ortogonalne za pomocą odpowiedniej funkcji gluperspective, glortho. 4.2.) Macierz modelowania (widoku modelu) W identyczny sposób przełączamy się na macierz modelowania (widoku modelu), należy pamiętać o tym, że macierz modelowania zawiera w sobie dwie macierze (przekształceń i kamery). OpenGL zajmuje się nimi jako jedną całością. void glmatrixmode(gl_modelview) 4.3.) Funkcja okna widoku Dzięki tej funkcji możliwe jest ustalenie konkretnego okna widoku, czyli obszaru gdzie będzie odbywać się renderowanie (rysowanie). Do tego celu służy funkcja. void glviewport(glint x, GLint y, GLsizei width, GLsizei height) Przyjmuje ona cztery parametry, dwa pierwsza określają współrzędne lewego dolnego narożnika, kolejne dwa wysokość i szerokość obszaru renderowania. Zazwyczaj definiuje się obszar na całe okno, wiec jako pierwsze dwa parametry podaje się (0,0), natomiast kolejne dwa ustawie się na szerokości i wysokość okna.