Připravil: David Procházka. Projekce



Podobné dokumenty
Souřadnicové prostory

Připravil: David Procházka. Vertex Buffer Objects

Úvod Typy promítání Matematický popis promítání Implementace promítání Literatura. Promítání. Pavel Strachota. FJFI ČVUT v Praze

11 Zobrazování objektů 3D grafiky

Návod k použití softwaru Solar Viewer 3D

Pokročilé programování v jazyce C pro chemiky (C3220) 3D grafika v knihovně Qt

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

Sada 1 CAD Prostorové souřadnice v CAD systémech

HVrchlík DVrchlík. Anuloid Hrana 3D síť

Kapitola 2. o a paprsek sil lze ztotožnit s osou x (obr.2.1). sil a velikost rovnou algebraickému součtu sil podle vztahu R = F i, (2.

Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení

Reflections, refractions, interreflections

2) Nulový bod stroje používáme k: a) Kalibraci stroje b) Výchozímu bodu vztažného systému c) Určení korekcí nástroje

Název: VY_32_INOVACE_PG3303 Pohyb ve 3D prostoru 3DS Max. Vzdělávací oblast / téma: 3D grafika, počítačová grafika, 3DS Max

Testování programu PhotoScan pro tvorbu 3D modelů objektů. Ing. Tomáš Jiroušek

Tvorba prezentaci v Autodesk Inventoru 10

. Grafika a plovoucí prostředí. Zpracování textů na počítači. Ing. Pavel Haluza, Ph.D. ústav informatiky PEF MENDELU v Brně haluza@mendelu.

Kreslení elipsy Andrej Podzimek 22. prosince 2005

2.5 Rovnováha rovinné soustavy sil

Rovinné přetvoření. Posunutí (translace) TEORIE K M2A+ULA

ZÁKLADNÍ ZOBRAZOVACÍ METODY

5.2.8 Zobrazení spojkou II

GEOMETRICKÁ OPTIKA. Znáš pojmy A. 1. Znázorni chod význačných paprsků pro spojku. Čočku popiš a uveď pro ni znaménkovou konvenci.

Fakulta informačních technologíı. IZG cvičení 6. - Zobrazování 3D scény a základy OpenGL 1 / 38

Hierarchický model Josef Pelikán CGG MFF UK Praha. 1 / 16

Připravil: David Procházka. Knihovna GLUT

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

Středové promítání. Středové promítání E ~ ~ 3. dané průmětnou r a bodem S (S r) je zobrazení prostoru...

BIOMECHANIKA KINEMATIKA

10. Analytická geometrie kuželoseček 1 bod

BA008 Konstruktivní geometrie. Kolmá axonometrie. pro kombinované studium. učebna Z240 letní semestr

VY_32_INOVACE_E 14 02

Příprava 3D tisku tvorba modelu v SolidWors 3D tisk model SolidWorks. Ing. Richard Němec, 2012

Zářezová metoda Kosoúhlé promítání

4 Přesné modelování. Modelování pomocí souřadnic. Jednotky a tolerance nastavte před začátkem modelování.

Digitální učební materiál

Reprezentace 3D modelu

Transformace (v OpenGL) příklady a knihovna GLM

Perspektiva jako matematický model objektivu

Výpočet vržených stínů

SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 4.ročník SOUŘADNICOVÉ SOUSTAVY VE FOTOGRAMMETRII

Téma: Vektorová grafika. Určete pravdivost následujícího tvrzení: "Grafická data jsou u 2D vektorové grafiky uložena ve voxelech."

9 Prostorová grafika a modelování těles

RELIÉF. Reliéf bodu. Pro bod ležící na s splynou přímky H A 2 a SA a reliéf není tímto určen.

Stereofotogrammetrie

Momenty setrvačnosti a deviační momenty

Cvičení 2 z předmětu CAD I PARAMETRICKÉ 3D MODELOVÁNÍ

Konstruktivní geometrie PODKLADY PRO PŘEDNÁŠKU

CAD_Inventor -cvičení k modelování a tvorbě technické obrazové dokumentace Spirála

Výukový manuál 1 /64

Cvičení 6 PARAMETRICKÉ 3D MODELOVÁNÍ TVORBA VÝKRESU OBROBKU Inventor Professional 2012

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

1.1 Napište středovou rovnici kružnice, která má střed v počátku soustavy souřadnic a prochází bodem

Válcové a kulové souřadnice

K OZA SE PASE NA POLOVINĚ ZAHRADY Zadání úlohy

Programování v jazyku LOGO - úvod

TVORBA VÝROBNÍ DOKUMENTACE CV

7 Transformace 2D. 7.1 Transformace objektů obecně. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

1.1. Spuštění ArchiCADu Práce s projektem Pracovní plocha 19

Radka Veverková Flash

CAD_Inventor -cvičení k modelování a tvorbě technické obrazové dokumentace Vytváření výrobního výkresu rotační součásti - hřídele

UNIVERZITA PARDUBICE FAKULTA ELEKTROTECHNIKY A INFORMATIKY

František Hudek. duben ročník

Řezání závitu s konstantním stoupáním (G33, SF)

Maticová optika. Lenka Přibylová. 24. října 2010

5.2.3 Duté zrcadlo I. Předpoklady: 5201, 5202

Deskriptivní geometrie pro střední školy

Výukové texty. pro předmět. Automatické řízení výrobní techniky (KKS/ARVT) na téma

2 Grafický výstup s využitím knihovny

Cvičné příklady Tematický celek 01

Vzdělávací oblast / téma: 3D grafika, počítačová grafika, 3DS Max

Jasové transformace. Karel Horák. Rozvrh přednášky:

Gymnázium Jiřího Ortena, Kutná Hora. Průřezová témata Poznámky. Téma Školní výstupy Učivo (pojmy) volné rovnoběžné promítání průmětna

Prostředí Microstationu a jeho nastavení. Nastavení výkresu

F n = F 1 n 1 + F 2 n 2 + F 3 n 3.

Obsah. Úvod do prostorového modelování 9. Prostředí AutoCADu při práci ve 3D 15 KAPITOLA 1 KAPITOLA 2

Základní pojmy Zobrazení zrcadlem, Zobrazení čočkou Lidské oko, Optické přístroje

prostorová definice (viz obrázek vlevo nahoře): elipsa je průsečnou křivkou rovinného

POPIS PROSTŘEDÍ PROGRAMU GIMP 2. Barvy 2. Okno obrázku 4 ZÁKLADNÍ ÚPRAVA FOTOGRAFIÍ V GRAFICKÉM EDITORU 6. Změna velikosti fotografie 6

Univerzitní licence MATLABu. Pište mail na: se žádostí o nejnovější licenci MATLABu.

= cos sin = sin + cos = 1, = 6 = 9. 6 sin 9. = 1 cos 9. = 1 sin cos 9 = 1 0, ( 0, ) = 1 ( 0, ) + 6 0,

3. Optimalizace pomocí nástroje Řešitel

2D-skicování Tato část poskytuje shrnutí 2D-skicování, které je nezbytné ke tvorbě modelů Solid Works.

Vytvoření modelu dvojitého kyvadla

BRICSCAD V15. Modelování BIM

Mechanika tuhého tělesa

Semestrální projekt. Vyhodnocení přesnosti sebelokalizace VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. Fakulta elektrotechniky a komunikačních technologií

3D kontaktní skener MicroScribe-3D výukový modul. 3D kontaktní skener MicroScribe-3D Výukový modul

MONGEOVO PROMÍTÁNÍ - 2. část

A U T O R : I N G. J A N N O Ž I Č K A S O Š A S O U Č E S K Á L Í P A V Y _ 3 2 _ I N O V A C E _ _ C N C V Z T A Ž N É A O B R Y S O V É B

DATOVÉ FORMÁTY GRAFIKY, JEJICH SPECIFIKA A MOŽNOSTI VYUŽITÍ

X = A + tu. Obr x = a 1 + tu 1 y = a 2 + tu 2, t R, y = kx + q, k, q R (6.1)

Grafická data jsou u 2D vektorové grafiky uložena ve voxelech NEPRAVDA Grafická data jsou u rastrové grafiky uložena v pixelech PRAVDA Grafická data

Geometrické transformace pomocí matic

Inovace a zkvalitnění výuky prostřednictvím ICT Design a vzhledové vlastnosti webových stránek Vlastnosti CSS pro pozicování Ing.

Pohyb rychlým posuvem (G0, RTLION, RTLIOF)

Comenius Logo. Princip programování. Prostředí Comenius Logo

1.8. Úprava uživatelského prostředí AutoCADu 25 Přednostní klávesy 25 Pracovní prostory 25

Několik námětů k zamyšlení pro praktické měření na souřadnicových měřicích strojích. Daniel Zachoval & Luboš Zachoval

Transkript:

15. října 2013, Brno Připravil: David Procházka Projekce Počítačová grafika 2

Projekce Strana 2 / 38 Obsah přednášky 1 Projekce 2 Ortografická projekce 3 Perspektivní projekce 4 Nastavení pohledové matice 5 Detaily implementace 6 Testování hloubky 7 Shrnutí

Projekce Strana 3 / 38 Způsob vykreslování scény 1 Prohlížení nastavení kamery do scény (nastavujeme směr, kterým se kamera bude dívat ) pohledová transformace. 2 Modelování vkládáme objekty do scény modelovací transformace. 3 Projekce nastavujeme tvar záběru (měníme nastavení objektivu: ohnisková vzdálenost, atp.) projekční transformace. 4 Zobrazení zvětšení/zmenšení a namapování výsledného obrázku objektů ve scéně do požadované roviny zobrazovací transformace. (Analogie s fotoaparátem)

Projekce Strana 4 / 38 Princip nastavení projekce

Projekce Strana 5 / 38 Obecný princip implementace zobrazení Pohledová a modelovací matice (modelview matrix) se bude dynamicky měnit za běhu programu. Nastavení je obvykle nutné vložit do funkce řešící vykreslování objektů. Projekce způsob zobrazení scény zůstavá po celou dobu běhu aplikace obvykle stejná. Až na: 1 Potřebujeme změnit způsob zobrazení scény (CAD). 2 Změnil se tvar okna, do kterého provádíme vykreslování. Varianta 1 nás nezajímá, podstatná je varianta 2. Zavedeme novou funci void glutreshapefunc(void (*func)(int width, int height)). Tato funkce reaguje na změnu velikosti okna, do kterého se provádí vykreslování. Zaregistrovaná funkce obdrží v parametrech width a height aktuální velikost okna.

Projekce Strana 6 / 38 Nastavení projekce Abychom mohli projekci nastavit, je nutné aktivovat nastavení projekční matice. K tomuto nám slouží příkaz glmatrixmode (GL PROJECTION). Od tohoto okamžiku jsou všechny maticové příkazy automaticky aplikovány na projekční matici. První operace, kterou s projekční maticí provedeme její nastavení na jednotkovou matici pomocí příkazu glloadidentity(). Tento krok je doporučený z toho důvodu, že řada dalších operací modifikuje aktuálně používanou matici.

Ortografická projekce Strana 7 / 38 Obsah přednášky 1 Projekce 2 Ortografická projekce 3 Perspektivní projekce 4 Nastavení pohledové matice 5 Detaily implementace 6 Testování hloubky 7 Shrnutí

Ortografická projekce Strana 8 / 38 Ortografická projekce Ortografická projekce představuje pravoúhlý hranol. Objekty se vzdáleností nemění svoji velikost. Používáme v aplikacích jako je CAD, kde jsou klíčové skutečné rozměry objektů. Pro nastavení používáme při práci v trojrozměrném prostoru příkaz void glortho(gldouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far). Parametry near/far představují vzdálenosti k bližší/vzdálenější rovině, ne absolutní pozice v souřadném systému!

Ortografická projekce Strana 9 / 38 Nastavení ortografické projekce

Ortografická projekce Strana 10 / 38 Ortografické projekce boční pohled

Ortografická projekce Strana 11 / 38 Ortografická projekce implementace Celý kód by se mohl nacházet v onresize() 1 // nastaveni oblasti pro zobrazeni 2 glviewport(0, 0, 640, 480); 3 // nebo glviewport (0, 0, width, height); 4 5 // zaciname nastavovani projekcni matice 6 glmatrixmode(gl_projection); 7 8 // nastavime ji na jednotkovou 9 glloadidentity(); 10 11 // opet je lepsi pouzit promenne reprezentujici 12 // velikost okna 13 glortho(-5.0,5.0,-5.0,5.0,0.0,5.0);

Ortografická projekce Strana 12 / 38 2D ortografická projekce Speciální případem je 2D ortografická projekce. V tomto případě je použit příkaz void gluortho2d(gldouble left, GLdouble right, GLdouble bottom, GLdouble top). Parametry definují levý dolní a pravý dolní roh okna. Je možné použít i příkaz glortho() s tím, že nastavíme souřadnice pro osu z na hodnoty -1.0 a 1.0 (z u objektů bude rovno 0).

Ortografická projekce Strana 13 / 38 2D orto. projekce implementace Celý kód by se mohl nacházet v onresize() 1 // nastaveni oblasti pro zobrazeni 2 glviewport(0, 0, 640, 480); 3 // nebo glviewport (0, 0, width, height); 4 5 // zaciname nastavovani projekcni matice 6 glmatrixmode(gl_projection); 7 8 // nastavime ji na jednotkovou 9 glloadidentity(); 10 11 // opet je lepsi pouzit promenne reprezentujici 12 // velikost okna 13 gluortho2d(0, 640, 0, 480);

Perspektivní projekce Strana 14 / 38 Obsah přednášky 1 Projekce 2 Ortografická projekce 3 Perspektivní projekce 4 Nastavení pohledové matice 5 Detaily implementace 6 Testování hloubky 7 Shrnutí

Perspektivní projekce Strana 15 / 38 Perspektivní projekce Scéna je definována jako komolý jehlan. Pokud je objekt o určitých rozměrech nachází v blízké ořezové rovině, zabírá větší část plochy, než pokud by byl ve vzdálené. Proto se blízký objekt jeví větší. Pro nastavení lze využít je void glfrustum(gldouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far). Bývá často nahrazen příkazem void gluperspective(gldouble fovy, GLdouble aspect, GLdouble near, GLdouble far). gluperspective vytváří vždy pouze symetrický komolý jehlan.

Perspektivní projekce Strana 16 / 38 Nastavení perspektivní projekce

Perspektivní projekce Strana 17 / 38 Perspektivní projekce boční pohled

Perspektivní projekce Strana 18 / 38 Perspektivní projekce implementace Celý kód by se mohl nacházet v onresize() 1 // nastaveni oblasti pro zobrazeni 2 glviewport(0, 0, 640, 480); 3 // nebo glviewport (0, 0, width, height); 4 5 // zaciname nastavovani projekcni matice 6 glmatrixmode(gl_projection); 7 8 // nastavime ji na jednotkovou 9 glloadidentity(); 10 11 // nastaveni projekce 12 glfrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);

Nastavení pohledové matice Strana 19 / 38 Obsah přednášky 1 Projekce 2 Ortografická projekce 3 Perspektivní projekce 4 Nastavení pohledové matice 5 Detaily implementace 6 Testování hloubky 7 Shrnutí

Nastavení pohledové matice Strana 20 / 38 Nastavení pohledové matice Je k dopozici příkaz glulookat(gldouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz). Jeho parametry reprezentují tři základní věci: pozici kamery GLdouble eyex, GLdouble eyey, GLdouble eyez, bod do kterého je kamera natočena GLdouble centerx, GLdouble centery, GLdouble, centerz, směr vzhůru (tedy natočení kamery) GLdouble upx, GLdouble upy, GLdouble upz.

Nastavení pohledové matice Strana 21 / 38 Obvyklé nastavení Vysunutí kamery podél osy z ven ze scény. Směr vzhůru bude podél osy y. (Pozoroval si pomyslně couvne, aby viděl celou scénu). Toto nastavení bude reprezentováno kódem 1 glulookat( 2 0.0, 0.0, -5.0, 3 0.0, 0.0, 0.0, 4 0.0, 1.0, 0.0)

Nastavení pohledové matice Strana 22 / 38 Příklady nastavení pohledové matice Běžné couvnutí a komplikové natočení

Nastavení pohledové matice Strana 23 / 38 Popis nastavení předchozího obrázku 1 Příklad vlevo: Kamera je vysunuta ze scény podél osy z na pozici [0.0, 0.0, -4.0], zaměřena na střed scény [0.0, 0.0, 0.0], směr nahoru je definován jako rovnoběžný s osou y. 2 Příklad vpravo: Kamera ležící na souřadnicích [3.0, 0.0, -4.0], zaměřena lehce nad střed scény [0.0, 2.0, 0.0], nakloněna doprava pod úhlem 45 stupňů [1.0, 1.0, 0.0]. Dávejte pozor na orientaci os. Kladná poloosa osy z směřuje dovnitř obrazovky.

Detaily implementace Strana 24 / 38 Obsah přednášky 1 Projekce 2 Ortografická projekce 3 Perspektivní projekce 4 Nastavení pohledové matice 5 Detaily implementace 6 Testování hloubky 7 Shrnutí

Detaily implementace Strana 25 / 38 Přesné nastavené orto. projekce Mějme trojúhelníky s následujícími souřadnicemi a barvami: 1 GLint triangle[] = { 2 0, 5, 5, 3-5, -5, 5, 4 5, -5, 5, 5 1, 5, 2, 6-4, -5, 2, 7 6, -5, 2}; 8 9 GLfloat colors[] = { 10 1.0, 0.0, 0.0, 11 0.0, 1.0, 0.0, 12 0.0, 0.0, 1.0, 13 1.0, 1.0, 0.0, 14 1.0, 1.0, 0.0, 15 1.0, 0.0, 1.0};

Detaily implementace Strana 26 / 38 Nastavení orto. projekce

Detaily implementace Strana 27 / 38 Nastavení orto. projekce 1 Souřadice v intervalu < 5, 5 > na osách x a y. Osa z je zobrazována ve vzdálenosti 0 až 5 od pozorovatele. Pozorovatel umístěn do souřadnic [0,0,0] a otočen ve směru kladné poloosy osy z. Směr vzhůru je definován ve směru osy y. glortho(-5.0,5.0,-5.0,5.0,0.0,5.0); glulookat(0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,0.0); 2 Zadní trojúhelník vypuštěn: glortho(-5.0,5.0,-5.0,5.0,0.0,4.0); glulookat(0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,0.0); 3 Směr pohledu je vektor. Bod pohledu udává bod na linii pohledu. glortho(-5.0,5.0,-5.0,5.0,0.0,5.0); glulookat(0.0,0.0,0.0,0.0,0.0,10.0,0.0,1.0,0.0);

Detaily implementace Strana 28 / 38 Nastavení orto. projekce 2

Detaily implementace Strana 29 / 38 Nastavení orto. projekce 2 1 Pozorovatel ustoupil vzad po ose z na pozici [0,0,-1], proto se zobrazovaný kvádr v prostoru posunul a zadní trojúhelník zmizel. glortho(-5.0,5.0,-5.0,5.0,0.0,5.0); glulookat(0.0, 0.0,-1.0,0.0,0.0,10.0,0.0,1.0,0.0) 2 Velikost (rozsah) os x a y byla zvětšena na dvojnásobek větší okolí. glortho(-10.0,10.0,-10.0,10.0,0.0,5.0); glulookat(0.0,0.0,0.0,0.0,0.0,10.0,0.0,1.0,0.0); 3 Směr vzhůru byl definován ve směru os x a y. Objekt je otočen o 45 stupňů. Objekt deformovaný (okno nerovnoměrné) glortho(-10.0,10.0,-10.0,10.0,0.0,5.0); glulookat(0.0,0.0,0.0,0.0,0.0,10.0,1.0,1.0,0.0);

Detaily implementace Strana 30 / 38 Nastavení perspektivní projekce 1 Pokud ponecháme v nastavení projekce stejné parametry. Pouze změňme příkaz glortho() za glfrustrum(). Dostaneme zcela odlišný výsledek (část 1 následujícího obrázku). 2 glfrustum(-5.0, 5.0, -5.0, 5.0, 1.0, 6.0); glulookat(0.0,0.0,10.0,0.0,0.0,0.0,0.0,1.0,0.0); 3 Vzdálené objekty se tedy jeví menší. Bližší (žluto-růžový) se zmenšil, vzdálenější zcela zmizel. Byl překryt bližším objektem. 4 Pozor na to, které pametry v příkazech znamenají pozice a které vzdálenosti!

Detaily implementace Strana 31 / 38 Výsledek nastavení Vlevo: skrytý zadní trojúhelník. Vpravo: po posunu pozorovatele vidíme zadní trojúhelník.

Testování hloubky Strana 32 / 38 Obsah přednášky 1 Projekce 2 Ortografická projekce 3 Perspektivní projekce 4 Nastavení pohledové matice 5 Detaily implementace 6 Testování hloubky 7 Shrnutí

Testování hloubky Strana 33 / 38 Testování hloubky Mějme trojúhelníky: 1 GLint triangle[] = { 2 1, 5, 2, 3-4, -5, 2, 4 6, -5, 2, 5 0, 5, 5, 6-5, -5, 5, 7 5, -5, 5}; 8 9 GLfloat colors[] = { 10 1.0, 1.0, 0.0, 11 1.0, 1.0, 0.0, 12 1.0, 0.0, 1.0, 13 1.0, 0.0, 0.0, 14 0.0, 1.0, 0.0, 15 0.0, 0.0, 1.0};

Testování hloubky Strana 34 / 38 Výsledek Pro jsou opačně? Rozhodovalo pořadí vykreslení!

Testování hloubky Strana 35 / 38 Testování hloubky Pro ukládání informací o vzdálenosti objektů se používá pamět hloubky (Depth Buffer/Z-buffer). Je nutné provést následující: 1 Do bitových příznaků předávaných funkce glutinitdisplaymode() přidáme GLUT DEPTH. 2 Povolíme použití paměti hloubky pomocí příkazu glenable(gl DEPTH TEST). 3 glcleardepth(glfloat depth), hodnota mazání paměti hloubky mezi snímky (0.0 až 1.0). 4 Nastavení typu testu hloubky. Obvykle se nastavuje funkce GL LESS (bližší objekt překreslí objekt vzdálenější). 5 Mazání paměti hloubky před vykreslením každého snímku. To lze provést bud samostatně zavoláním funkce glclear(gl DEPTH BUFFER BIT). Lze smazat zároveň bufferem barev. Současné mazání bufferů je rychlejší.

Shrnutí Strana 36 / 38 Obsah přednášky 1 Projekce 2 Ortografická projekce 3 Perspektivní projekce 4 Nastavení pohledové matice 5 Detaily implementace 6 Testování hloubky 7 Shrnutí

Shrnutí Strana 37 / 38 Shrnutí A nezapomínat na testování hloubky!

Shrnutí Strana 38 / 38 Kontrolní otázky/úkoly Vytvořte aplikaci, která vykreslí dva trojúhelníky v prostoru. Pomocí klávesnice zapínejte a vypínejte testování hloubky a přepínejte projekce (a její nastavení).