Transformace (v OpenGL)

Podobné dokumenty
Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Základy matematiky pro FEK

Souřadnicové prostory

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

transformace je posunutí plus lineární transformace má svou matici vzhledem k homogenním souřadnicím [1]

Geometrické transformace pomocí matic

Matematika B101MA1, B101MA2

0.1 Úvod do lineární algebry

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

0.1 Úvod do lineární algebry

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

Matice. Modifikace matic eliminační metodou. α A = α a 2,1, α a 2,2,..., α a 2,n α a m,1, α a m,2,..., α a m,n

6. Vektorový počet Studijní text. 6. Vektorový počet

6. ANALYTICKÁ GEOMETRIE

Hisab al-džebr val-muqabala ( Věda o redukci a vzájemném rušení ) Muhammada ibn Músá al-chvárizmího (790? - 850?, Chiva, Bagdád),

Úvod do lineární algebry

MENDELOVA UNIVERZITA V BRNĚ LDF MT MATEMATIKA VEKTORY, MATICE

MENDELOVA UNIVERZITA V BRNĚ LDF MT MATEMATIKA VEKTORY, MATICE

Eukleidovský prostor a KSS Eukleidovský prostor je bodový prostor, ve kterém je definována vzdálenost dvou bodů (metrika)

Lineární algebra - I. část (vektory, matice a jejich využití)

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Afinní transformace Stručnější verze

Hardware pro počítačovou grafiku NPGR019

1 Báze a dimenze vektorového prostoru 1

8 Matice a determinanty

Vektorový prostor. Př.1. R 2 ; R 3 ; R n Dvě operace v R n : u + v = (u 1 + v 1,...u n + v n ), V (E 3 )...množina vektorů v E 3,

Matice. Předpokládejme, že A = (a ij ) je matice typu m n: diagonálou jsou rovny nule.

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

Lineární algebra Operace s vektory a maticemi

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

7 Analytické vyjádření shodnosti

Vlastní čísla a vlastní vektory

Kapitola 11: Vektory a matice 1/19

Základy maticového počtu Matice, determinant, definitnost

příkladů do cvičení. V textu se objeví i pár detailů, které jsem nestihl (na které jsem zapomněl) a(b u) = (ab) u, u + ( u) = 0 = ( u) + u.

Poznámka. V některých literaturách se pro označení vektoru také používá symbolu u.

vyjádřete ve tvaru lineární kombinace čtverců (lineární kombinace druhých mocnin). Rozhodněte o definitnosti kvadratické formy κ(x).

Determinanty. Obsah. Aplikovaná matematika I. Pierre Simon de Laplace. Definice determinantu. Laplaceův rozvoj Vlastnosti determinantu.

1 Připomenutí vybraných pojmů

1 Projekce a projektory

Matematika 1 MA1. 1 Analytická geometrie v prostoru - základní pojmy. 4 Vzdálenosti. 12. přednáška ( ) Matematika 1 1 / 32

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

ANALYTICKÁ GEOMETRIE V ROVINĚ

označme j = (0, 1) a nazvěme tuto dvojici imaginární jednotkou. Potom libovolnou (x, y) = (x, 0) + (0, y) = (x, 0) + (0, 1)(y, 0) = x + jy,

7. Lineární vektorové prostory

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

Kapitola 11: Vektory a matice:

Uspořádanou n-tici reálných čísel nazveme aritmetický vektor (vektor), ā = (a 1, a 2,..., a n ). Čísla a 1, a 2,..., a n se nazývají složky vektoru

Operace s maticemi. 19. února 2018

Matematika I 12a Euklidovská geometrie

Matematika. Kamila Hasilová. Matematika 1/34

Číselné vektory, matice, determinanty

Slovo ALGEBRA pochází z arabského al-jabr, což znamená nahrazení. Toto slovo se objevilo v názvu knihy

VI. Maticový počet. VI.1. Základní operace s maticemi. Definice. Tabulku

AVDAT Vektory a matice

VĚTY Z LINEÁRNÍ ALGEBRY

6.1 Vektorový prostor

DEFINICE Z LINEÁRNÍ ALGEBRY

Drsná matematika I 5. přednáška Vektory a matice

9.1 Definice a rovnice kuželoseček

Necht L je lineární prostor nad R. Operaci : L L R nazýváme

Geometrické vidění světa KMA/GVS ak. rok 2013/2014 letní semestr

VEKTORY. Obrázek 1: Jediný vektor. Souřadnice vektoru jsou jeho průměty do souřadných os x a y u dvojrozměrného vektoru, AB = B A

Základní pojmy teorie množin Vektorové prostory

Vektorový součin I

Dá se ukázat, že vzdálenost dvou bodů má tyto vlastnosti: 2.2 Vektor, souřadnice vektoru a algebraické operace s vektory

Střední škola automobilní Ústí nad Orlicí

Čtvercové matice. Čtvercová matice je taková matice, jejíž počet řádků je roven počtu jejích sloupců

1.4. VEKTOROVÝ SOUČIN

Vybrané kapitoly z matematiky

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

15 Maticový a vektorový počet II

Seriál II.II Vektory. Výfučtení: Vektory

Michal Zamboj. December 23, 2016

Algoritmizace prostorových úloh

M - Příprava na 3. čtvrtletní písemnou práci

Operace s maticemi

maticeteorie 1. Matice A je typu 2 4, matice B je typu 4 3. Jakých rozměrů musí být matice X, aby se dala provést

EUKLIDOVSKÉ PROSTORY

Michal Zamboj. January 4, 2018

M - 2. stupeň. Matematika a její aplikace Školní výstupy Žák by měl

Lineární transformace

Symetrické a kvadratické formy

Matematika B101MA1, B101MA2

ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ

VZOROVÝ TEST PRO 3. ROČNÍK (3. A, 5. C)

12. Determinanty. 12. Determinanty p. 1/25

Linearní algebra příklady

Matice. Je dána matice A R m,n, pak máme zobrazení A : R n R m.

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

Připravil: David Procházka. Projekce

A[a 1 ; a 2 ; a 3 ] souřadnice bodu A v kartézské soustavě souřadnic O xyz

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru. Kvadratická forma v n proměnných je tak polynom n proměnných s

PROSTORY SE SKALÁRNÍM SOUČINEM. Definice Nechť L je lineární vektorový prostor nad R. Zobrazení L L R splňující vlastnosti

Vlastní číslo, vektor

KOMPLEXNÍ ČÍSLA INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ

Euklidovský prostor Stručnější verze

Všechno, co jste kdy chtěli vědět o maticích, ale báli jste se zeptat

Transkript:

Transformace (v OpenGL) Petr Felkel Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 (Karlovo náměstí, budova E) E-mail: felkel@fel.cvut.cz Podle knihy SJ Gortlera: Foundations of Computer Graphics. MIT Press 2012 Poslední změna: 3.5.2016

Transformace v OpenGL cílem grafiky je vytvářet 2D obrázky 3D scény musíme myslet ve 3D musíme umět reprezentovat body (vrcholy primitiv) musíme používat geometrické transformace => úvod do transformací v OpenGL => opakování lineární algebry z pohledu počítačové grafiky PGR 2

Analogie s fotoaparátem B. Beneš PGR 4

Vizualizace transformací clip space normalized space [Shirley] PGR 5

Transformace vrcholů v OpenGL modelovací transformace (matice modeltoworld, model) umístění a natočení objektů ve scéně, M zobrazovací transformace (matice worldtocamera, view) poloha a natočení kamery, V projekční transformace (matice cameratoclip, projection) P nastavení pohledového objemu (kvádr či komolý jehlan) paralelní x perspektivní projekce ořezání perspektivní dělení 1/w Transformace pracoviště (výřez, viewport) Vp velikost a posun výřezu, který se zobrazí na obrazovce modelview dnes příště vertex shader fixed pipeline PGR 6

Logické kroky při transformaci vrcholů 3D 2D vrchol x y z w modelovací souřadnice Modelovací a pohledová transformace Modelovací transformace světové souřadnice Pohledová transformace souřadnice kamery (oka) Projekční transformace + Ořezání (clipping) M V P ořezávací souřadnice Perspektivní dělení normalizované souřadnice zařízení Transformace záběru (Viewport) souřadnice okna vertex shader PGR fixní část zobr. řetězce 7

Logické kroky při transformaci vrcholů In English 3D 2D vertex x y z w object coordinates Viewing and modeling transformations modeling transformation world coordinates camera transformation eye coordinates Projection transformation + clipping M V P clip coordinates Perspe ctive division normalized device coordinates Viewport transformation window coordinates vertex shader PGR fixed pipeline 8

Transformace PVM provádí vertex shader Vertex Data Vertex Shader Primitive Setup and Rasterization Fragment Shader Blending Pixel Data Texture Store OpenGL verze 3.1 vertex shader fixed pipeline

Transformace známe z lineární algebry V grafice používáme body (vrcholy elementů) a soustavy souřadnic (Frames of reference) Teď si vysvětlíme, jak s nimi pracovat Pořadí výkladu: 1. lineární transformace 2. afinní transformace PGR 10

Bod a jeho souřadnice y Dvě souřadné soustavy, lišící se počátky a směry os x Geometrický bod v prostoru reprezentujeme obvykle jako trojici reálných čísel, kterým říkáme souřadnice (vektor souřadnic, souřadný vektor, coordinate vector) Souřadnice udávají polohu v předem domluvené soustavě souřadnic V každé soustavě souřadnic má bod jiné souřadnice jinou n-tici reálných čísel PGR 11

Definujeme čtyři základní datové typy V každé soustavě souřadnic má bod jiné souřadnice jinou n-tici reálných čísel Proto důsledně odlišíme pojmy: geometrické body soustavy souřadnic souřadnice Definujeme čtyři základní datové typy Bod Vektor Soustava souřadnic Souřadnice (vektor souřadnic) PGR 12

Bod Bod = geometrický objekt (nečíselný) Reprezentuje místo (Karlovo náměstí) Značíme malým písmenem s vlnovkou Znázorňujeme kroužkem PGR 13

Vektor = Vektor = nečíselný objekt Reprezentuje pohyb z jednoho bodu do druhého (jdi z Karlova nám. na Můstek) Značíme, tj. malým písmenem se šipkou Znázorňujeme šipkou Na vektor nemá žádný vliv posunutí (translace) PGR 14

Souřadnice (vektor souřadnic) Souřadnice (coordinate vector) = sloupcový vektor (uspořádaná n-tice) reálných čísel, tj. čistě číselný objekt Popisuje bod v dané soustavě souřadnic Značíme ho malým tučným písmenem PGR 15

Soustava souřadnic = = Soustava souřadnic (coordinate system) = nečíselný objekt, n-tice vektorů Popisuje vztažný systém: a) Báze trojice vektorů b) Frame báze + počátek (3 vektory + bod) (trojhran) Značíme tučným malým písmenem sloupcová kolekce Horní index t ji mění na řádkovou Šipka značí kolekci vektorů, ne čísel Znázorňujeme: a) bázi šipkami, tj. n-ticí vektorů umístěných do 1 bodu, b) frame bodem (počátkem) a bází PGR 16

V dalším výkladu Probereme uvedené datové typy podrobně a zjistíme, které operace s nimi lze provádět Zpočátku budeme hodně používat symbolické výpočty s nenumerickými objekty (vektory a soustavami souřadnic) a numerickými objekty (souřadnicemi) Teprve po zavedení všech konvencí nenumerické výpočty opustíme a přejdeme na numerické (souřadnice) PGR 17

Rozdíl mezi vektorem a vektorem souřadnic Vektor Abstraktní geometrická entita (nečíselná) Reprezentuje pohyb z bodu do jiného bodu Jdi 3 km na západ Souřadnice (vektor souřadnic) Uspořádaná n-tice reálných čísel = Popisuje vektor v konkrétní zvolené soustavě souřadnic Souřadnice vektoru vzhledem k bázi = 0.5 0.8 PGR 18

Vektorový prostor V Vektorový prostor V = Množina vektorů (ne čísel, ale reprezentantů pohybu), pro kterou platí sada pravidel, např. je definována operace sčítání = + která je asociativní a komutativní Operace násobení konstantou =, která je distributivní přes sčítání vektorů + =+ + PGR 19 + Příklad pro =2

Báze (a lineární nezávislost) Báze n-tice lineárně nezávislých vektorů (ve 3D trojice) Jejich násobením konstantou a sčítáním lze vytvořit všechny ostatní vektory Ve 3D jsou to 3 vektory = Často se nazývají osy x, y a z nemusí být kolmé, ani jednotkové Lineárně nezávislé (LN) vektory nejsou lineárně závislé Lineárně závislé (LZ) vektory, pro ně platí =, pro 0,=1,, =nulovývektor(posčítáním PGR -násobků vektorů báze se vrátím do počátku 1. vektoru) 20

Souřadnice a vytvoření všech vektorů Vytvoření vektoru o souřadnicích a bázi = = + + + S využitím vektorové algebry lze přepsat = = =, kde je vektor, je řádka vektorů báze a je sloupcový vektor souřadnic PGR 21

Lineární transformace ve 3D a matice 3x3 Lineární transformace L = transformace vektoru z V do V, pro kterou platí: Značíme (V=vektorový prostor) L + = L +L (1) L = L(), kde R (2) L vektor je transformací L transformován do vektoru L Lze popsat maticí 3x3 To proto, že lineární transformace lze jednoznačně definovat popsáním jejího účinku na bázové vektory PGR 22

Odvození matice 3x3 transformaci vektoru přepíšeme na transformaci bází Lineární transformaci L vektoru rozepíšeme L = L (1) (2) =L( ) = L( ) 3D: L L L Každá transformovaná báze L je také vektorem z V, lze ji tedy lze zapsat jako lineární kombinaci vektorů původní báze se správnými souřadnicemi,, L =,, PGR 23

Transformace vektorů báze a matice 3x3 Pro jednu novou bázi L = Pro všechny tři nové báze L L L = Matice 3x3 reálných čísel,,,,,,,,,,,, Obsahuje po sloupcích souřadnice vektorů nové báze v soustavě původní báze PGR 24

Lineární transformace vektoru maticově Lineární transformace vektoru pomocí matice 3x3,,,,,,,,, PGR 25

Lineární transformace vektoru maticově Transformace báze Původní souřadnice v nové bázi Transformace souřadnic Nové souřadnice ve staré bázi PGR [Gortler] 26

Identita (jednotková matice) Identita Nemění nijak vektory = = 1 0 0 0 1 0 0 0 1 = jednotková diagonální matice PGR 27

Inverzní matice Inverzní matice k čtvercové matici Reprezentuje inverzní transformaci vektorů Značíme ji -1 Platí: 1 = 1 = Existuje, jen pokud je matice regulární (LN řádky, det 0) transformace nesmí mapovat různé vektory do jednoho to u lineárních transformací v grafice platí Počítá se Algebraicky mechanickým dosazením do vzorce Přímo pro grafické transformace známe inverzní matici (místo otočení o +90 otočíme o 90 ) PGR 28

Využití matice M pro změnu bází Pomocí transformací lze vyjádřit rovnost (=) dvou bází = / 1 = Jednoduše tak můžeme vektor popsat v různých bázích = souřadnice v bázi = 1 souřadnice 1 v bázi Vektor netransformujeme, je to stejný vektor, vyjádřený jinými souřadnicemi v různých bázích PGR 29

Skalární součin vektorů Skalární součin vektorů. vstup: 2 vektory, výstup reálné číslo Umožňuje definovat čtverec délky vektoru (kvadratickou normu). Závisí na úhlu vektorů 0.= cos cos =. Je komutativní.=. (DOT product, scalar product) Pro ortogonální (nenulové kolmé) vektory: cos =.=0 Ortonormální báze všechny vektory báze jsou jednotkové a vzájemně ortogonální PGR 30

Geometrický význam skalárního součinu Pro jednotkové vektory reprezentuje skalární součin.= cos přímo souřadnici vektoru ve směru druhého vektoru 1.=cos, pro = = 1 PGR 31

Geometrický význam skalárního součinu Pomocí skalárního součinu.= cos lze vypočítat kolmou projekci jednoho vektoru na druhý bez znalosti úhlu Pravoúhlý trojúhelník - přepona délky - odvěsna přilehlá k úhlu má délku cos cos =. PGR 32

Skalární součin vektorů v ortonormální bázi Skalární součin vektorů v souřadnicích. =. =. v ortonormální bázi. = 0 pro i = 1 pro i = = PGR 33

Orientace ortonormální báze Pravotočivá (OpenGL) Levotočivá (do plochy) (ven do prostoru) PGR 34

Vektorový součin (cross product) Vektorový součin (cross product) = sin., kde je kolmé k rovině, a báze je pravotočivá V pravotočivé ortonormální bázi se spočítá = 2 3 3 2 3 1 1 3 1 2 2 1 Pro vektory s třetí složkou souřadnic 3 = 3 =0(v rovině xy) má výsledný vektor souřadnice 0 0 1 2 2 1 PGR 35

Rotace Nejtypičtější lineární transformace Ve 2D =cos sin =in+s Maticově sin sin cos Z toho rotace báze je sin sin cos [Dostál, http://slideplayer.cz/slide/2442339/] PGR 36

Rotace ve 3D Ve 3D rotace kolem osy o úhel, = cos, = sin 0 0 0 0 1 Matice rotací podle souřadných os y X x z Y y x z y Z x z 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 Souřadnice na ose otáčení se nemění PGR 37

Rotace ve 3D Na pořadí rotací záleží (skládání rotací není komutativní)! Navíc možnost splynutí dvou os - gimbal lock probereme později viz trackball a kvaterniony Obecná rotace kolem jednotkového vektoru = k,, o úhel, = cos, = sin, = 1 z y x R = + + + + + + direction of object rotation PGR 38

Změna měřítka (scale) Symetrická ve všech směrech stejná 0 0 0 0 0 0 Asymetrická různá pro každou osu 0 0 0 0 0 0 PGR 39

Rekapitulace pojmů vektor a bod Vektor = nečíselný objekt reprezentuje pohyb z jednoho bodu do druhého (jdi 1 km na sever) Operace sčítání, násobení konstantou, nulový vektor Pro vektory nemá smysl posunutí Bod = geometrický objekt (nečíselný) pevně umístěný v geometrickém světě Lze lineárně transformovat jako radiusvektory (viz dále) Má pro něj smysl posunutí (to pro vektory nemá smysl) Body nelze sčítat (Václavské + Karlovo náměstí??), nelze násobit konstantou (6x Újezd?), neexistuje nulový bod) PGR 40

Afinní prostor = množina bodů + přidružený n-rozměrný vektorový prostor, plus existují operace, které je propojují = += Body lze odečtení bodů dá vektor pohybu z do přičtení vektoru k bodu nová pozice do které jsme se přemístili po vektoru lineárně transformovat (rotace) i posunovat (translace) > zavedeme afinní transformace K uložení translace (+ později promítání) slouží matice 4x4 PGR 41

Afinní soustava souřadnic Afinní soustava souřadnic (frame) = je tvořena 3 vektory báze (3 vektory os) + počátkem Libovolný bod popsán jako posunutí z počátku =+ = = 1 souřadnice pro body je vždy nastavena na 1 (aby se nehýbalo počátkem), definováno 1 = Pro vektory ji nastavujeme na 0, definováno 0 =0 PGR 42

Afinní transformace a matice 4x4 Afinní matice h 0 0 0 1, 4. řádka 0 0 0 1!!! Afinní transformace bodu v soustavě souřadnic h 1 0 0 0 1 1 definováno 0 =0 1 = PGR 43

Afinní transformace soustavy souřadnic Afinní transformace soustavy souřadnic (frame) h 0 0 0 1 definováno 0 =0 1 = PGR 44

Afinní transformace soustavy souřadnic Afinní transformace soustavy souřadnic (frame) h 0 0 0 1 definováno 0 =0 1 = Po složkách: = + + +0 = + + +0 = + + +0 = + h + +1 PGR 45

Lineární transformace bodů Lineární transformace se vloží do levého horního rohu 1 0 0 0 0 0 0 1 1 Lineární matici 4x4 lze zkráceně zapsat takto = 0 0 1, kde je matice 3x3, 0 vpravo nahoře je matice nul 3x1 0 vlevo dole je matice nul 1x3 1 vpravo dole je skalár Pozn.: lineární transformace bodu odpovídá lineární transformaci jeho rádiusvektoru (vektoru ofsetu umístěnému do počátku ) [Gortler] PGR 46

Posunutí (translace) Posunutí se ukládá do 4. sloupce 1 1 0 0 0 1 0 0 0 1 0 0 0 1 1 Translační matici 4x4 lze zkráceně zapsat takto = 0 1, kde je jednotková matice 3x3, vpravo nahoře je posun v matici 3x1 0 vlevo dole je matice nul 1x3 1 vpravo dole je skalár Pozn.: Kdybychom zadali 4. souřadnici rovnu nule, transformovali bychom vektor a translace by se neuplatnila (což je správně) PGR 47

Rozložení matice na translační a lineární Afinní matice se dá rozložit na translační a lineární část h 0 0 0 1 = 1 0 0 0 1 0 h 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 = 0 1 = 0 0 1 POZOR násobení matic není komutativní záleží na pořadí (TL) (Lze i rozklad na = - neuvádíme) Pozn: Pokud by byla lineární částí matice rotace, psali bychom = Rotace s translací jsou tzv. Rigid body transformations (RBT), zachovávají skalární součiny vektorů, pravotočivost báze a vzdálenosti mezi body PGR 48

Transformace normál Normály nutno transformovat inverzní transponovanou lineární části matice = Pro rotaci je =, protože je ortonormální maticí (rotace je RBT transformace) Pro nesymetrickou změnu měřítka je nutno použít 5x v ose x PGR 49

Kartézská a afinní soustava souřadnic [Budínský] Bod A v kartézské soustavě souřadnic Bod A v afinní soustavě souřadnic PGR 50

Vztažná soustava souřadnic V grafice se používá současně celá řada soustav souřadnic (modelová, pohledová, kamery, ) Vždy musíme provést transformaci v té správné 2 0 0 0 0 1 0 0 Příklad: dán bod a transformace S = 0 0 1 0 0 0 0 1 2x zvětší vzdálenosti od počátku ve směru osy x Dokud nezvolíme soustavu souřadnic, není jasné, jak transformaci provést nevíme, která osa je osa x neznáme počátek soustavy PGR 51

Zvětšení ve dvou různých soustavách Dán bod = v soustavě souřadnic a druhá soustava souřadnic, kde = V má bod = souřadnice = Transformace S V soustavě : = = Čteme: Bod je transformován S vzhledem k soustavě souřadnic V soustavě : = = Bod se posune pokaždé úplně jinam!!! Pravidlo levé ruky: transformuje se vůči soustavě souřadnic nejblíže vlevo od transformační matice PGR 52

Zvětšení ve dvou různých soustavách Změna měřítka S V soustavě : V soustavě : = =, = = = = = = = = [Gortler] PGR 53

Rotace ve dvou různých soustavách Rotace R V soustavě : V soustavě : = = = = = = = = = = [Gortler] PGR 54

Pravidlo levé ruky Transformuje se vůči soustavě souřadnic nejblíže vlevo od transformační matice Čteme tedy: Bod je transformován S vzhledem k soustavě souřadnic Bod je transformován S vzhledem k soustavě souřadnic Soustava souřadnic je transformována S vzhledem k = je transformována S vzhledem k PGR 56

Transformace vzhledem k pomocné soustavě souřadnic Transformace vůči pomocné soustavě Př. Otáčení zeměkoule kolem slunce = = Soustava souřadnic zeměkoule, pozice bodu na zemi Soustava souřadnic slunce = Transformace vzhledem k soustavě : = vyjádřeno pomocí transformace v soustavě souřadnic (podle pravidla levé ruky vložíme za ) = návrat a pomocné soustavy souřadnic PGR 57

Příklad otočení kolem zadaného bodu Chceme otočit stromky kolem osy Z o úhel, ale okolo zadaného bodu se souřadnicemi = y Obecně, zprava nahradíme 1) posun bodu do počátku A =T 2) rotace okolo osy z M=R 3) posun zpět =, Výsledná transformační matice bude mít tvar (násobíme zprava!!!) x M = T R T y y 1) 2) 3) y x x P x PGR 58

Dva způsoby vyhodnocení složené transformace Je dána složená transformace, posun o +1 v x, okolo z Lze vyhodnocovat zleva doprava nebo zprava doleva Vztažná soustava je vždy ta nalevo od matice 1) Vyhodnocení zleva doprava lokálně v nové soustavě (transformuje se soustava souřadnic, souřadnice zůstanou) 1a) = se posune o 1 vůči vůči 1b) se otočí vzhledem k vůči 2) Vyhodnocení zprava doleva globálně v původní soustavě (soustava souřadnic zůstává, transformují se souřadnice) 2a) = se otočí vzhledem k vůči 2b) = se posune vzhledem k vůči PGR 59

Dva způsoby interpretace složené transformace 1a) Lokální translace 1b) Lokální rotace 2a) Globální rotace 2b) Globální translace PGR 60

Dva způsoby interpretace složené transformace - shrnutí Složená transformace, posun o +1 v x, okolo z se dá číst dvěma způsoby: 1) zleva doprava každá další transformace se provede vůči nově vzniklé lokální soustavě Napřed posun vzhledem k Pak rotace vzhledem k mezivýsledku po translaci 2) zprava doleva každá další transformace se provede vůči původní globální soustavě Napřed rotace vzhledem k Pak translace vzhledem k PGR 61

1) Interpretace zleva doprava Pohybujeme lokálním souřadným systémem další transformace vůči nově vzniklé lokální soustavě lokální souřadný systém je pevně spojen s modelem model se mění tak, jak se transformuje souřadný systém y y z původní model x model po posunutí 2 y y z x a po rotaci 3 z z PGR 62

2) Interpretace zprava doleva Pevný souřadný systém další transformace vůči původní globální soustavě V programu čteme odzadu dopředu y y y x x x z z z původní model 4 model po rotaci 3 a po posunutí 2 PGR 63

Souřadné soustavy v počítačové grafice Souřadné soustavy: světová, objektová a kamerová Pohyb objektů Pohyb kamerou Hierarchie transformací PGR 64

Světová soustava souřadnic (world frame) Světová soustava souřadnic = základní pravotočivá soustava souřadnic je pevná (nikdy ji neměníme), v ní definujeme ostatní souřadné systémy, souřadnice v ní nazýváme světové souřadnice. Na modelování objektů vhodná moc není: každá instance objektu by musela mít jiné světové souřadnice při pohybu bychom museli neustále měnit souřadnice všech bodů hýbajícího se objektu PGR 65

Objektová soustava souřadnic (object frame) Objektová (modelová) soustava souřadnic = pravotočivá souřadná soustava pro modelování objektů, Umožnuje vymodelovat objekty (obvykle vycentrované okolo počátku a s jednotkovou velikostí) v objektových (modelových) souřadnicích, které se již při pohybu objektu nemění Při pohybu objektem se mění souřadná soustava Pozici objektové souřadné soustavy vůči světové definuje matice ýá též =, Každý modelovaný objekt má jinou souřadnou soustavu, proto má každý objekt svou jedinečnou matici PGR 66

Souřadná soustava kamery (eye frame) Souřadná soustava kamery = pravotočivá ortonormální souřadná soustava popisující umístění a natočení kamery ve scéně Kamera v grafice je v počátku souřadné soustavy a hledí směrem k záporné ose z Matice kamery je rigidní maticí 4x4 = Souřadnice v soustavě kamery (eye coordinates) určují, kde se který vrchol objeví ve výsledném 2D obrázku Proto se počítají pro každý vrchol PGR 67

Logické kroky při transformaci vrcholů 3D 2D = vrchol 1 Modelovací a pohledová transformace Modelovací Transformace, Pohledová transformace, Projekční transformace + Ořezání (clipping) Perspektivní dělení Transformace záběru (Viewport) modelovací souřadnice = světové souřadnice = souřadnice kamery (oka) PGR ořezávácí souřadnice Normalizované souřadnice zařízení = = = maticově Souřadnice okna 68

Výpočet souřadnic bodu v prostoru kamery Souřadnice v soustavě kamery (eye coordinates) určují, kde se který vertex objeví ve výsledném 2D obrázku Proto se počítají pro každý vrchol = = = = geometrický bod = objektové souřadnice bodu = světové souřadnice bodu = kamerové souřadnice bodu 1 = 1 ( = index objektové souřadnice = index světové souřadnice) = index kamerové souřadnice bodu PGR 69

Transformace v grafickém programu V grafickém programu se obvykle uchovávají matice, pro převod z objektových do světových souřadnic Ta se nazývá modelová matice, model matrix Existuje jedna pro každý objekt = pro převod ze světových souřadnic do prostoru kamery Pohledová matice, view matrix Existuje jedna pro každou kameru = = = Dále se ukládá projekční matice, a matice záběru o nich budeme mluvit příště PGR 70

Změna matice O při transformaci objektu vzhledem k ke zvolené soustavě souřadnic Transformace objektové soustavy souřadnic maticí vzhledem k pomocné soustavě souřadnic = = = soustava souřadnic objektu (modelová) světová soustava souřadnic pomocná soustava souřadnic transformovaná pomocná soustava souřadnic = světová soustava souřadnic transformovaná vzhledem k pomocné Nová matice bude mít hodnotu O PGR 71

Volba vztažné soustavy k transformaci 1/2 Transformujeme vůči = : a) Objektové soustavě souřadnic ( = ) Transformujeme přímo matici Pro bod: = Nevýhodou je, že se směr pohybu může při změně pohledu obrátit Např. směr doprava v vůbec nemusí souviset se směrem doprava na obrázku (v ) b) Kameře (vzhledem k, = ) Vyřeší se problém s osami Objekt ale krouží kolem počátku kamerové soustavy souřadnic c) Středu objektu, ale podle os kamery O O O PGR 72

Volba vztažné soustavy k transformaci 2/2 c) Rotace vůči středu objektu, ale podle os kamery Matice rozložíme na translační a rotační část = = pozor = = = Stejného efektu (otáčení objektu okolo středu) Dosáhneme přímou úpravou matice Jejím otočením okolo vektoru se souřadnicemi, transformovaného ze souřadnic kamery do souřadnic objektu, kde je rotace okolo obecné osy v objektové soustavě souřadnic. = = = = souřadnice obecného vektoru osy otáčení PGR 73

Kamera v základní poloze a metoda LookAt V základní poloze je kamera v počátku Hledí směrem k ose Up-vector směřuje k +y Metoda LookAt umístí kameru do scény, nasměruje objektiv a nakloní ji PGR [Redbook] 74

Parametry metody LookAt Metoda LookAt vytvoří pohledovou matici = Vstupy (ve světových souřadnicích): Eye = poloha pozorovatele Center = bod, který je ve směru, kam se má kamera podívat (center proto, že se promítne do prostředního pixelu) Up = přibližný směr vektoru nahoru (natočení kamery) Ortogonalizace vektorů proto 2x vektorový součin PGR 75

Změna matice kamery E Přemístění kamery do jiného místa a) Pomocí pomocné soustavy souřadnic jako u bodů Kamera bude kroužit okolo středu objektu (V LookAt měníme eye) b) Přímo v soustavě souřadnic kamery Simuluje pohyb osoby kameramana např. otáčení hlavou Používá se při simulaci pohledu z pozice hráče (FPS) (V LookAt měníme center) PGR 76

LookAt matice Dáno: =, =, vznikne jako normalizovaný průmět vektoru do roviny kamery (xy) Resp: jejich světové souřadnice,, (center) = ( ), = () = ( ) =( ) Kamera hledí do -z kde = + + = 0 0 0 1 Světové souřadnice vektorů báze kamery a počátku (po sloupcích) (eye) PGR 77

LookAt matice Jako pohledová matice se používá inverzní matice Tu lze pro = získat jako Tedy = = = = = ) (, ( ) = 0 0 0 0 0 0 1 (po řádcích)... 0 0 0 1 = 1 0 0 0 1 0 0 0 1 0 0 0 1. = PGR 78

Hierarchie transformací Při popisu objektu, složeného z více pohyblivých částí každá část mívá svoji ortonormální soustavu souřadnic chceme zachovat možnost hýbat celým objektem, i částmi musíme tedy transformace částí aplikovat ne ve světové soustavě souřadnic, ale vždy v soustavě nadřazené části = tělo robota = rameno = loket dle [Gortler] PGR 79

Hierarchie transformací Při vykreslování částí skládáme matice transformací Tělo: Rameno: Loket: Loket vykreslíme: dle [Gortler] PGR 80

Hierarchie transformací Při pohybu částí měníme příslušnou matici Tělo: Rameno: Loket: Celý robot Rameno Loket dle [Gortler] PGR 81

Protažení Neortonormální transformace protažené subobjekty lze přidáním další transformace O = Výsledná transformace je E Protáhne čtverec na obdélník dle [Gortler] PGR 82

Hierarchie transformací kompletní Rigidní matice pro klouby mění se při pohybu = tělo robota = rameno = loket Protažené matice pro protáhlé části způsobí scale = protáhlé tělo = nadloktí = protáhlé nadloktí = předloktí = protáhlé předloktí [Gortler] Př.: Vykreslení předloktí: => kružnice se vykreslí jako elipsa PGR 83

Resources [Shirley] Fundamentals of Computer Graphics, 3 rd edition A.K.Peters/CBC Press, Boston, FL, 2010 (4 th ed. From 2016 exists) PGR 84