Matematika pro real-time grafiku

Podobné dokumenty
Matematika pro real-time grafiku

Hardware pro počítačovou grafiku NPGR019

Kristýna Bémová. 13. prosince 2007

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

Jana Dannhoferová Ústav informatiky, PEF MZLU

Geometrické transformace pomocí matic

Aproximační křivky. Trocha historie. geometrické modelování veliký pokrok v oblasti letectví 1944 Roy Liming

Plochy počítačové grafiky II. Interpolační plochy Bezierovy pláty nad obdélníkovou a trojúhelníkovou sítí Recionální Bezierovy pláty B-spline NURBS

KŘIVKY A PLOCHY. Obrázky (popř. slajdy) převzaty od

Bézierovy křivky Bohumír Bastl KMA/GPM Geometrické a počítačové modelování Bézierovy křivky GPM 1 / 26

Aproximační křivky. Trocha historie. geometrické modelování veliký pokrok v oblasti letectví 1944 Roy Liming

KMA/GPM Barycentrické souřadnice a

Křivky a plochy technické praxe

Výpočet průsečíků paprsku se scénou

Reprezentace 3D modelu

15. listopadu Matematický ústav UK Matematicko-fyzikální fakulta. Hermitovská interpolace

Základy OpenGL Josef Pelikán CGG MFF UK Praha. OpenGL / 34

Výpočet průsečíků paprsku se scénou

Metamorfóza obrázků Josef Pelikán CGG MFF UK Praha

Základní vlastnosti ploch

Osvětlování a stínování

Lineární transformace

Základy 3D modelování a animace v CGI systémech Cinema 4D C4D

Matematický ústav UK Matematicko-fyzikální fakulta

Základní vlastnosti křivek

Matematický ústav UK Matematicko-fyzikální fakulta

Počítačová grafika RHINOCEROS

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

MATURITNÍ TÉMATA Z MATEMATIKY

Plochy zadané okrajovými křivkami

Gymnázium Česká a Olympijských nadějí, České Budějovice, Česká 64, 37021

Matematika II, úroveň A ukázkový test č. 1 (2018) 1. a) Napište postačující podmínku pro diferencovatelnost funkce n-proměnných v otevřené

Mechanika

Počítačová grafika 2 (POGR2)

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

Transformace obrazu Josef Pelikán KSVI MFF UK Praha

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

POČÍTAČOVÁ GRAFIKA - PGR PROGRAM PŘEDNÁŠEK. Po 9:00-10:30, KN:A-214

Maturitní otázky z předmětu MATEMATIKA

Rotace ve 3D a kvaterniony. Eva Blažková a Zbyněk Šír (MÚ UK) - Rotace ve 3D a kvaterniony 1 / 16

Pokročilé osvětlovací techniky Josef Pelikán, MFF UK Praha

Gymnázium Jiřího Ortena, Kutná Hora

2. Kinematika bodu a tělesa

Systematizace a prohloubení učiva matematiky. Učebna s dataprojektorem, PC, grafický program, tabulkový procesor. Gymnázium Jiřího Ortena, Kutná Hora

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

NURBS REPREZENTACE KŘIVEK V MAPLE

Textury v real-time grafice Josef Pelikán, MFF UK Praha Josef.Pelikan@mff.cuni.cz

Rekurzivní sledování paprsku

Transformace (v OpenGL)

11 Zobrazování objektů 3D grafiky

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

Vybrané kapitoly z matematiky

Předmět BROB - Robotika. 4 Kvaternionová matematika

Rovinná úloha v MKP. (mohou být i jejich derivace!): rovinná napjatost a r. deformace (stěny,... ): u, v. prostorové úlohy: u, v, w

Elementární křivky a plochy

Gymnázium Jiřího Ortena, Kutná Hora

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

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

Matematika II, úroveň A ukázkový test č. 1 (2016) 1. a) Napište postačující podmínku pro diferencovatelnost funkce n-proměnných v otevřené

Radiometrie, radiační metody

Circular Harmonics. Tomáš Zámečník

Přehled. Motivace Úvod. Křivky a plochy počítačové grafiky. Závěr. Rozvoj počítačové grafiky Výpočetní geometrie

Matematika II, úroveň A ukázkový test č. 1 (2017) 1. a) Napište postačující podmínku pro diferencovatelnost funkce n-proměnných v otevřené

Deformace rastrových obrázků

B) výchovné a vzdělávací strategie jsou totožné se strategiemi vyučovacího předmětu Matematika.

Křivky a plochy I. Petr Felkel. Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 na Karlově náměstí

Mgr. Ladislav Zemánek Maturitní okruhy Matematika Obor reálných čísel

13 Barvy a úpravy rastrového

Transformujte diferenciální výraz x f x + y f do polárních souřadnic r a ϕ, které jsou definovány vztahy x = r cos ϕ a y = r sin ϕ.

Matematika I 12a Euklidovská geometrie

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

Maturitní okruhy z matematiky - školní rok 2007/2008

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

Úlohy k přednášce NMAG 101 a 120: Lineární algebra a geometrie 1 a 2,

Zobrazování těles. problematika geometrického modelování. základní typy modelů. datové reprezentace modelů základní metody geometrického modelování

CZ 1.07/1.1.32/

Křivky a plochy. Pavel Strachota. FJFI ČVUT v Praze

Interpolace, ortogonální polynomy, Gaussova kvadratura

Rozdíly mezi MKP a MHP, oblasti jejich využití.

FERGUSONOVA KUBIKA. ( u) ( ) ( ) X s X s. Kubický spline C 2 má dva stupně volnosti Q 1 Q 2

Globální matice konstrukce

Příklady otázek PB009/jaro 2015

DERIVACE. ln 7. Urči, kdy funkce roste a klesá a dále kdy je konkávní a

Základní techniky zobrazování Josef Pelikán, MFF UK Praha

Aproximace funkcí. x je systém m 1 jednoduchých, LN a dostatečně hladkých funkcí. x c m. g 1. g m. a 1. x a 2. x 2 a k. x k b 1. x b 2.

Souřadnicové prostory

Bakalářská matematika I

Kvaterniony, duální kvaterniony a jejich aplikace

Text úlohy. Která barva nepatří do základních barev prostoru RGB? Vyberte jednu z nabízených možností: a. Černá b. Červená c. Modrá d.

4. Napjatost v bodě tělesa

9. přednáška z předmětu GIS1 Digitální model reliéfu a odvozené povrchy. Vyučující: Ing. Jan Pacina, Ph.D.

I. Diferenciální rovnice. 3. Rovnici y = x+y+1. převeďte vhodnou transformací na rovnici homogenní (vzniklou

Kinematika tuhého tělesa. Pohyb tělesa v rovině a v prostoru, posuvný a rotační pohyb

Katedra geotechniky a podzemního stavitelství

geometrická (trigonometrická, nebo goniometrická) metoda (podstata, vhodnost)

Vzorce počítačové grafiky

Okruhy problémů k teoretické části zkoušky Téma 1: Základní pojmy Stavební statiky a soustavy sil

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

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Zavedeme-li souřadnicový systém {0, x, y, z}, pak můžeme křivku definovat pomocí vektorové funkce.

Transkript:

Matematika pro real-time grafiku 2005-2010 Josef Pelikán, MFF UK Praha http://cgg.mff.cuni.cz/~pepca/ pepca@cgg.mff.cuni.cz NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1

Obsah homogenní souřadnice, maticové transformace převod mezi souřadnými soustavami souřadné soustavy, projekční transformace, frustum perspektivně korektní interpolace reprezentace orientace Eulerovy úhly, kvaterniony interpolace orientací hladké aproximace a interpolace spline funkce, přirozený spline, B-spline, Catmull-Rom,... výpočet světelných modelů a mlhy NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 2

Geometrické transformace v 3D vektor 3D souřadnic [ x, y, z ] transformace násobením maticí 3 3 řádkový vektor se násobí zprava (DirectX) [x, y, z] [a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33] = [x ', y',z' ] sloupcový vektor se násobí zleva (OpenGL) transformační matice 3 3 mají podstatné omezení nelze je použít pro posunutí (translaci) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 3

Homogenní souřadnice vektor homogenních souřadnic [ x, y, z, w ] transformace násobením maticí 4 4 [x, y,z, w] [a 11 a 12 a 13 a 14 a 21 a 22 a 23 a 24 = [ x', y', z ', w' ] a 31 a 32 a 33 a 34 a 41 a 42 a 43 a 44] homogenní maticí lze i posunovat (translace) a provádět perspektivní projekci NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 4

Převod homogenních souřadnic homogenní souřadnice [ x, y, z, w ] se převádějí na běžné kartézské souřadnice vydělením (je-li w 0) [ x/w, y/w, z/w ] souřadnice [ x, y, z, 0 ] neodpovídají žádnému vlastnímu bodu v prostoru lze je chápat jako reprezentaci směrového vektoru (bod v nekonečnu) převod z obyčejných souřadnic do homogenních je jednoduchý: [ x, y, z ] [ x, y, z, 1 ] NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 5

Elementární transformace Nejběžnější jsou afinní transformace: [a11 a12 a13 0 a 21 a 22 a 23 0 a 31 a 32 a 33 0 t 1 t 2 t 3 1 ] levá horní podmatice [ a 11 až a 33 ] vyjadřuje rozměr a orientaci, případně zkosení vektor [ t 1, t 2, t 3 ] udává posunutí (translaci) posunutí je až poslední operace NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 6

Transformace normál normálové vektory se nesmí transformovat běžnými transformačními maticemi výjimka: matice M je rotační (ortonormální) matice pro transformaci normál N: N = M 1 T x N x N' x N y y y NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 7

Souřadné soustavy Souřadnice modelu (Object space) Modelovací transformace (Modeling transform) Světové souřadnice (World space) [x,y,z,w] -z Pohledová transformace (View transform) Souřadnice kamery (Eye space) xy -z Projekční transformace (Projection transform) Ořezávací souřadnice (Clip space) xy n f [x,y,z,w] -z xy -z xy NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 8

Souřadné soustavy Ořezávací souřadnice (Clip space) [x,y,z,w] Perspektivní dělení (Perspective divide) Okénková transformace (Viewport transform) Normalizovaný prostor (Normalized device space) [x,y,z] -z Souřadnice v okně (Window space) [x,y,z] xy OpenGL: [-1,-1,-1] až [1,1,1] DirectX: [-1,-1, 0] až [1,1,1] [x,y] z skutečná velikost v pixelech na obrazovce (fragmenty) hloubka kompatibilní s z-bufferem NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 9

Souřadné soustavy souřadnice modelu databáze objektů, ze kterých se skládá scéna 3D modelovací programy (3DS, Maya,..) světové souřadnice absolutní souřadnice virtuálního 3D světa vzájemná poloha jednotlivých instancí objektů souřadnice kamery 3D svět se transformuje do relativních souřadnic kamery střed projekce: počátek, směr pohledu: -z (nebo z) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 10

Souřadné soustavy a transformace transformace model kamera společná transformační matice modelview světové souřadnice nejsou moc důležité projekční transformace definuje zorný objem = frustum [ l, r, b, t, n, f ] přední a zadní ořezávací vzdálenost: n, f výsledkem je homogenní souřadnice (před ořezáním): ořezávací souřadnice ( clip space ) výstupní souřadnice vertex shaderu! NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 11

Projekční transformace vzdálený bod f lze posunout do nekonečna [ ] 2n 2n 0 0 0 r l r l 2n 0 0 0 2n t b 0 r l t b t b f n 1 r l t b f n r l t b 0 0 2fn r l t b 0 f n xy [ n ] 0 0 0 0 0 1 1 0 0 2n 0 f -z NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 12

Souřadné soustavy a transformace perspektivní dělení pouze převádí homogenní souřadnice do kartézských normalizované souřadnice zařízení ( NDC ) kvádr standardní velikosti OpenGL: [-1,-1,-1] až [1,1,1] DirectX: [-1,-1,0] až [1,1,1] souřadnice v okně ( window space ) výsledkem okénkové transf. a transformace hloubky používají se při rasterizaci a práci s fragmenty NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 13

Transformace tuhého tělesa zachovává tvar těles, mění pouze jejich orientaci skládá se jenom z posunutí a otáčení často se používá k převodu mezi souřadnicovými systémy (např. mezi světovými souřadnicemi a systémem spojeným s pozorovatelem) z u (up) r (right) v (view) y (levoruký = pravotočivý systém) x NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 14

Přenesení polopřímky do osy z konstrukce matice postupně v několika krocích: y z O s A x Polopřímka je zadána bodem A a směrovým vektorem s M M -1 = T(-A) = T(A) 1. krok: přenesení bodu A do počátku NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 15

Přenesení polopřímky do osy z z s sin = s x s x 2 s y 2 s y cos = s 2 2 x s y y α x M M -1 = T(-A) R z (α) = R z (-α) T(A) 2. krok: otočení polopřímky do roviny yz (okolo osy z) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 16

Přenesení polopřímky do osy z y z s β sin = x s 2 2 s x y s 2 x s 2 2 y s z M M -1 s z cos = s 2 x s 2 2 y s z = T(-A) R z (α) R x (β) = R x (-β) R z (-α) T(A) 3. krok: otočení polopřímky do osy z (okolo osy x) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 17

Převod mezi souřadnými soustavami y z O A u t x s Souřadný systém je zadán svým počátkem A a trojicí vektorů s, t, u Cs = M(A,u) Cs -1 = M(A,u) -1 1. krok: přenesení polopřímky (A,u) do osy z NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 18

Převod mezi souřadnými soustavami t y z u s γ x sin = [s M a,u ] y s M a,u apod. Cs = M(A,u) R z (γ) Cs -1 = R z (-γ) M(A,u) -1 2. krok: ztotožnění os s x a t y (otočením kolem z=u ) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 19

Převod mezi dvěma orientacemi II z u O s x y t [1, 0, 0 ] M stu xyz = s [0, 1, 0 ] M stu xyz = t [0, 0, 1 ] M stu xyz = u Souřadný systém má počátek v O a je zadán trojicí jednotkových vektorů [ s, t, u ] [ M stu xyz = M xyz stu s x s y s z t x t y t z u x u y u z] T = M stu xyz NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 20

Eulerova transformace y head roll rozklad obecné rotace na tři složky Leonard Euler (1707-1783) x -z E(h,p,r) = R y (h) R x (p) R z (r) pitch h (head, yaw): otočení hlavy v půdorysu p (pitch): zvednutí/sklonění hlavy r (roll): otočení kolem osy pohledu NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 21

Eulerova transformace II výsledná matice rotace: E= c r c h s r s p s h s r c h c r s p s h c p s h s r c p c r c p s p c r s h s r s p c h s r s h c r s p c h c p c h s(x).. sin(x), c(x).. cos(x) možnost zpětného výpočtu úhlů h, p, r: p.. e 23 r.. e 21 /e 22 h.. e 13 /e 33 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 22

Rotace - jiné konvence hlavní konvence: 1. rotace kolem z o úhel ϕ 2. rotace kolem x' o úhel θ 3. rotace kolem z'' o úhel ψ x-konvence: 1. rotace kolem osy z 2. rotace kolem původní osy x 3. rotace kolem původní osy z další systémy: aeronautika, gyroskopy, fyzika,.. NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 23

Kvaterniony Sir William Rowan Hamilton, 1843 i 2 = j 2 = k 2 = ijk = -1 aplikace v grafice až v 1985 (Shoemake) zobecnění komplexních čísel do 4D prostoru q = (v, w) = i x + j y + k z + w = v + w imaginární část v = (x, y, z) = i x + j y + k z i 2 = j 2 = k 2 = -1, jk = -kj = i, ki = -ik = j, ij = -ji = k NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 24

Kvaterniony - operace sčítání (v 1, w 1 ) + (v 2, w 2 ) = (v 1 +v 2, w 1 +w 2 ) násobení q r = ( v q v r + w r v q + w q v r, w q w r - v q v r ) i q y r z q z r y r w q x q w r x, j q z r x q x r z r w q y q w r y, k q x r y q y r x r w q z q w r z, q w r w q x r x q y r y q z r z NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 25

Kvaterniony operace II konjugace (v, w)* = (-v, w) norma (čtverec absolutní hodnoty) q 2 = n(q) = q q* = x 2 + y 2 + z 2 + w 2 jednotka i = (0, 1) převrácená hodnota q -1 = q* / n(q) násobení skalárem s q = (0, s) (v, w) = (s v, s w) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 26

Jednotkové kvaterniony jednotkový kvaternion lze vyjádřit goniometricky q = (u q sin φ, cos φ) pro nějaký jednotkový 3D vektor u q reprezentace rotace (orientace) v 3D nejednoznačnost: q i -q reprezentují stejnou rotaci! identita (nulové otočení): (0,1) mocnina, exponenciála, logaritmus: q = u q sin φ + cos φ = exp (φ u q ), log q = φ u q q t = (u q sin φ + cos φ) t = exp (tφ u q ) = u q sin tφ + cos tφ NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 27

Rotace pomocí kvaternionu jednotkový kvaternion q = (u q sin φ, cos φ) u q... osa rotace, φ... úhel φ φ u q bod nebo vektor v 3D: p = [p x, p y, p z, p w ] rotace bodu (vektoru) p kolem osy u q o úhel 2φ: p' = q p q -1 = q p q* NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 28

Převod mezi kvaternionem a maticí kvaternion q po převedení na matici: M = 1 2 y 2 z 2 2 x y w z 2 x z w y 2 x y w z 1 2 x 2 z 2 2 y z w x 2 x z w y 2 y z w x 1 2 x 2 y 2 převod matice na kvaternion základem jsou rovnice ($): m 23 m 32 =4wx m 31 m 13 =4wy m 12 m 21 =4wz tr M 1 =4w 2 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 29

Převod matice na kvaternion II 1. pokud je stopa matice+1 v absolutní hodnotě velká: w= 1 2 tr M 1 x= m m 23 32 4w y= m 31 m 13 4w z= m 12 m 21 4w 2. v opačném případě se nejprve spočítá složka s maximální absolutní hodnotou, pak se použije $: 4x 2 =1 m 11 m 22 m 33 4y 2 =1 m 11 m 22 m 33 4z 2 =1 m 11 m 22 m 33 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 30

Sférická lineární interpolace (slerp) dva kvaterniony q a r reálný parametr 0 t 1 (q r 0, jinak -q) interpolovaný kvaternion slerp(q,r,t) = q (q* r) t jiné vyjádření: slerp q, r,t = sin 1 t sin t q sin sin r cos =q x r x q y r y q z r z q w r w Nejkratší sférický oblouk mezi orientacemi q a r NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 31

Otočení mezi dvěma vektory dva směrové vektory s a t: 1. normalizace vektorů s, t 2. jednotková rotační osa u = (s t) / s t 3. vyjádření úhlu mezi s a t: e = s t = cos 2φ s t = sin 2φ 4. výsledný kvaternion: q = ( u sin φ, cos φ ) q= q v,q w = 1 2 1 e s t, 2 1 e 2 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 32

Slerp rotačních matic dvě rotační matice Q a R reálný parametr 0 t 1 interpolovaná matice slerp(q,r,t) = Q (Q T R) t technický problém: obecná mocnina rotač. matice nutnost výpočtu osy a úhlu otočení Q T R výpočetně málo efektivní (podrobnosti viz RotationIssues.pdf ) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 33

Vyjádření rotace - shrnutí rotační matice + HW podpora, efektivní transformace vektoru paměť (float[9]), neefektivní ostatní operace osa a úhel otočení + paměť (float[4] nebo float[6]), podobná kvaternionu neefektivní kompozice, interpolace kvaternion + paměť (float[4]), kompozice, interpolace neefektivní transformace vektoru (podrobnosti viz RotationIssues.pdf ) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 34

Interpolace na obrazovce týká se souřadnic od ořezávacích (včetně) clip space: [ x, y, z, w ] NDS: [ x/w, y/w, z/w, w ] ( w někdy zůstává) window space (fragment): [ x i, y i, z i, w ] projekční perspektivní transformace mapuje hloubku z do NDS nelineárně! nerovnoměrné využití přesnosti z-bufferu (méně přesné vzdálené partie: minimalizace poměru f/n!) + interpolaci hloubky z lze dělat na obrazovce lineárně W-buffer místo z-bufferu (dnes se moc nepoužívá) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 35

Perspektivně korektní interpolace [x 1,y 1,z 1,1/w 1,u 1 /w 1,v 1 /w 1 ] [x 2,y 2,z 2,1/w 2,u 2 /w 2,v 2 /w 2 ] 2. 1. 3. w = 1 / (1/w) u = (u/w) w... [x 3,y 3,z 3,1/w 3,u 3 /w 3,v 3 /w 3 ] Snahou je používat co nejvíce lineární interpolaci hloubku z lze interpolovat lineárně pro texturové souřadnice nebo w se musí implementovat perspektivně-korektní interpolace: lineárně interpoluji 1/w, u/w i v/w, [ u, v ] pak dopočítám dělením (hyperbolická interpolace) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 36

Aproximace a interpolace aproximace (např. B-spline) křivka neprochází přesně řídícími body interpolace (např. Catmull-Rom) křivka prochází řídícími body spojitost křivky G n geometrická spojitost n-tého řádu (G 0 prostá spojitost, G 1 tečna, G 2 křivost) C n analytická spojitost n-tého řádu, spoj. n-té derivace (C 1 rychlost, C 2 zrychlení), silnější než geometrická NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 37

Historie křivky pro modelování Paul de Faget de Casteljau u firmy Citroën (1959) Pierre Bèzier (u firmy Renault 1933-1975, UNISURF) začal později, ale jeho výsledky se lépe prosadily aplikace spline funkcí zejména v USA (James Ferguson, 1964, Boeing, C 2 spline křivky) teorie spline funkcí B-spline: Isaac Jacob Schoenberg, (balistika, Aberdeen, MD, 1946) rozvoj teorie: Carl de Boor (zkuš. z General Motors) Gordon, Riesenfeld sjednotili Bèzierovy a B-spline křivky (1972) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 38

Free-form křivky definují se posloupností řídících bodů řídící polygon aproximace nebo interpolace jiné podmínky na okrajích kontrolovatelnost v uzlech se někdy přidávají i tečné vektory (Hermit) interpolace přísnější kontrola lokalita změnou jednoho řídícího bodu (jednoho tečného vektoru) se změní jen omezené okolí křivky NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 39

Free-form křivky parametrické vyjádření (0 t 1): vlastnost konvexního obalu křivka leží v konvexním obalu svého řídícího polygonu Cauchyova podmínka pro váhové funkce postačující pro konvexní obal zajišťuje invarianci na afinní transformace N 1 i =0 N 1 P t = i=0 w i t = 1 w i t P i NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 40 P 1 P 0 P2 P 3

Spline funkce Pojmenování podle pružného pravítka používaného v loďařském designu (podepřeného v několika bodech) definice spline funkce stupně n: po částech polynom (stupně n) napojení s maximální možnou hladkostí: C n-1 spojitost (n-1). derivace (pro polynomy stupně n) globální parametrizace u, u 0 u u N [u 0, u 1,... u N ] jednotlivé části jsou často parametrizované pravidelně uniformní spline: t i = (u u i ) / (u i+1 u i ), 0 t i 1 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 41

Polynomiální křivka maticové vyjádření: xn yn z n x P t = TC = [t n, t n 1,...t, 1 ] [ n 1 y n 1 z n 1 ]...... x 1 y 1 z 1 x 0 y 0 z 0 bázová matice M a vektor geometrických podmínek G: 1 0, k C = MG = [m ij ] i =n, j=1 [G.. k] G NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 42 P t = TMG

Maticové vyjádření křivky P(t) = T C = T M G oddělení parametru (T) od polynomiální báze (M) a geometrie řídících prvků (G) derivace (tečna, křivost) lze dělat jen s T řídící polynom TM krát geometrie G kubika: n = 3, k = 4 11 m 12 m 13 m 14 Q t =[t 3, t 2, m t, 1 ] [m 21 m 22 m 23 m 24 m 31 m 32 m 33 m 34 m 41 m 42 m 43 m 44 ] [G1 G 2 G 3 G 4] NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 43

Hermitovská kubika Fergusonova křivka (kubika) geometrie: koncové body a tečné vektory v nich začátek křivky (P 0 ), konec křivky (P 1 ) tečna na začátku (T 0 ) a na konci (T 1 ) F t =[t 3, t 2, t, 1 ] [ 2 2 1 1 3 3 2 1 0 0 1 0 1 0 0 0 ] [P 0 P 1 ] T 0 T 1 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 44

Hermitovská kubika T 0 T 0 T 0 P 1 P 0 P 1 T 1 T1 P 0 P 0 P 1 T 1 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 45

Další křivky interpolační kubiky odvozené od Hermitovy: obecná: Kochanek-Bartels (KB-spline, TCB kubika) speciální: cardinal spline, Catmull-Rom spline Akimova interpolace (není C 2 ) D-spline kubika další křivky: Bèzierovy křivky B-spline křivka, Coonsův spline (aproximace) přirozený spline (interpolace) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 46

Kochanek-Bartels kubika (KB-spline) odvozená od Hermitovy kubiky výpočet tečných vektorů z řídících bodů tři další parametry (implicitně nulové): (3DS Max, Lightwave) napětí, tension t: ostrost křivky v řídícím bodě (absolutní velikost tečny) spojitost, continuity c: spojitost v řídícím bodě sklon, bias b: směr tečny v řídícím bodě Levá a pravá tečna (T 0 a T 1 v lokálním smyslu): L i = 1 t 1 c 1 b P 2 i P i 1 1 t 1 c 1 b P 2 i 1 P i 1 t 1 c 1 b R i = P 2 i P i 1 1 t 1 c 1 b P 2 i 1 P i NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 47

Cardinal spline, Catmull-Rom spline Speciální případy KB-spline: cardinal spline parametr a (ve skutečnosti souvisí s t, c = b = 0) T i = a P i 1 P i 1 0 a 1 Catmull-Rom spline a = t = 1/2 MG = 1 2 T i = 1 ] [ 2 P P i 1 i 1 [ 1 3 3 1 Pi 1 2 5 4 1 P i 1 0 1 0 P i 1 0 2 0 0 P i 2] NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 48

Akimova interpolace Další alternativa výpočtu tečných vektorů pro Hermitovu kubiku: není C 2! P i-2 Pi+2 P i-1 P i+1 P i C i A i B i T i T i = P i 1 P i 1 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 49

D-spline kubika další varianta Hermitovy kubiky tečný vektor se spočítá tzv. D-interpolací P i-1 b i P i c i P i+1 d i G =[ Pi P i 1 T i T i 1] T i b i NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 50

Bèzierovy křivky polynomiální křivky stupně N N+1 řídících bodů krajní řídící body definují přímo konce křivky krajní dvojice definují tečné vektory křivky na koncích parametrické vyjádření používá Bernsteinovy polynomy lze je snadno napojovat G 1 nebo C 1 spojitostí složitějším způsobem z nich lze postavit spline Bernsteinovy polynomy: B n i t = n i ti 1 t n i 0 i n, 0 t 1 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 51

Bèzierovy křivky Cauchyova podmínka konvexní kombinace řídících bodů n i =0 B i n t = 1 P 1 P 2 pro 0 t 1 3 3 1 3 6 3 0 MG =[ 1 3 3 0 0 1 0 0 0 ] [P 0 P 1 ] P 2 P 3 P 3 P 0 kubická Bèzierova křivka NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 52

Napojování Bèzierových křivek G 1 napojení (kolineární tečny) P 1 P 2 P 6 P 3 P 5 P 0 P 3 P 4 = k P 2 P 3 P 4 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 53

Napojování Bèzierových křivek II C 1 napojení (shodné tečny) P 1 P 6 P2 P 3 P 5 P 0 P 3 P 4 = P 2 P 3 P 4 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 54

Napojování Bèzierových křivek III Kvadratický spline z Bèzierových segmentů P 1 P 4 P 5 P 8 P 2 P3 P 6 P 0 P 7 P 1 P 2 = P 2 P 3 P 3 P 4 = P 4 P 5... P 2k 1 P 2k = P 2k P 2k 1 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 55

De Casteljau (de Boor) algoritmus geometrická konstrukce Bèzierovy křivky subdivision schéma i výpočet jednoho daného bodu P 1 1 P 1 P 2 P 1 1 P 1 P 2 P 0 2 1/2 P 0 1 P 0 2 P 03 =L 3 =R 0 =B(1/2) P 1 2 P 2 1 1/4 P 0 1 3/4 P 0 3 =B(3/4) P 1 2 P 2 1 1/2 L 0 =P 0 P 3 =R 3 P 0 P 3 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 56

Kubický spline funkce sestavená z kubických polynomů sousední polynomy jsou napojeny C 2 vyjádření pružného spline-pravítka (viz konstrukce) interpolační kubický spline v uzlech x 0, x 1,... x n jsou předepsány funkční hodnoty y 0, y 1,... y n S x = S k x =s k,0 s k,1 x x k s k,2 x x k 2 s k,3 x x k 3 x [x k, x k 1 ], k=0, 1,...,n 1 podm. A: S x k = y k k=0, 1,...,n NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 57

Interpolační kubický spline podm. B (C 0 spojitost): S k x k 1 = S k 1 x k 1 k=0, 1,..., n 2 podm. C (C 1 spojitost): S k ' ' x k 1 = S k 1 x k 1 k=0, 1,..., n 2 podm. D (C 2 spojitost): S '' '' k x k 1 = S k 1 x k 1 k=0, 1,...,n 2 pro přirozený kubický spline navíc podm. E: S ' ' x 0 = S ' ' x n = 0 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 58

Přirozený kubický spline interpolační spline jednoznačně určen danými podmínkami (řeší se soustava lineárních rovnic pro s k,l ) nemá lokální vlastnost (při změně jednoho uzlu se změní celý spline) otevřený spline: podmínky A, B, C, D nestačí, zbývají 2 stupně volnosti přidává se podmínka E (druhé derivace na okraji) uzavřený (cyklický) spline: x 0 = x n C a D nám pro x 0 dají chybějící dvě podmínky NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 59

B-spline (basis spline) free-form křivka tvar je definován posloupností řídících bodů parametrické vyjádření pomocí bazických funkcí (závislost bodu křivky na řídících bodech) má lokální vlastnost (změna řídícího bodu změní křivku jen lokálně) uniformní kubický B-spline (Coonsova křivka) jednotná sada bazických funkcí (kubických polynomů) neuniformní B-spline složitější definice pomocí posloupnosti uzlů 0 t i 1 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 60

Coonsův B-spline P 1 P 3,1 P 5 P 6 P 3,2 P 0 P 2 P 3,3 P 4 P 7 automatická spojitost C 2 sdílení 3 řídících bodů změna řídícího bodu ovlivní sousední 4 segmenty MG = 1 6 [ 1 3 3 1 3 6 3 0 3 0 3 0 1 4 1 0 ] [P i 1 P i P i 1 P i 2] NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 61

Spline interpolace kvaternionů postupná interpolace posloupností orient. q 0, q 1,... q n slerp(q i,q i+1,t) dává málo hladkou křivku (jen C 0 ) a slerp(a,b,t) b squad p, a, b, q, t = slerp slerp p, q, t,slerp a, b,t, 2t 1 t p squad(p,a,b,q,t) q s i t = squad q i, a i, b i, q i 1, t slerp(p,q,t) a i = b i 1 = q i exp[ 1 log q i q i 1 log q 1 i q i 1 ] 4 NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 62

Vertex blending = skinning vrchol každého trojúhelníka p je navázán na několik okolních kostí (souřadných soustav) klidová poloha: t = 0 kosti se animují maticemi B i (t) (object sp. world) počáteční transformace M i = B i (0) n p t = i= 1 w i p M i 1 B i t, n i= 1 w i = 1 B 1 (t) w 1 p(t) w 2 B 2 (t) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 63

Stínování pozorovaný odstín na povrchu plošky je závislý na její orientaci v prostoru + na poloze světelných zdrojů existuje mnoho osvětlovacích modelů lokální výpočet odrazu světla na povrchu tělesa ideálem je přesné napodobení přírody Phongův světelný model jednoduchý výpočet kvalitativně přibližně souhlasí s fyzikální realitou kvůli lesklé složce je nejlepší počítat ho v každém pixelu s interpolací normály NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 64

Situace L N R α α β V A NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 65

Phongův model osvětlení světlo se skládá ze tří složek: zbytkové světlo ( ambient ) náhrada za nepočítané sekundární odrazy difusní odraz ( diffuse ) ideálně matné těleso lesklý odraz ( specular ) neostrý odraz, odlesk L a = C k a L d = C C L k d cos L s = C L k s cos h NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 66

Parametry Phongova modelu optické vlastnosti povrchu tělesa ( materiál ): vlastní barva tělesa C (při osvětlení bílým světlem) koeficienty k a, k d a k s (charakter povrchu: matný, lesklý,..) exponent odlesku h (čím větší, tím je odlesk ostřejší) vlastnosti zdroje světla: barva a intenzita C L (třísložkový vektor, s barvou zdroje se násobí po složkách) více zdrojů světla: L = L a L d L s NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 67

Spojité stínování Tři techniky použití osvětlovacího modelu: konstantní stínování ( flat shading ) celá ploška se vybarví stejným odstínem Gouraudova interpolace barvy osvětlení se počítá ve vrcholech, uvnitř plošek se barva lineárně interpoluje (umějí běžné HW rasterizéry) Phongova interpolace normály pro každý pixel plošky se normálový vektor lineárně interpoluje a spočítá světelný model nejdokonalejší metoda, vyžaduje spolupráci HW (shader) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 68

Spojité stínování interpolace normály N N 1 N 2 N 1 N 2 trojúhelník interpolace barvy flat shading Gouraud shading Phong shading konstantní stínování je adekvátní u hranatých těles interpolace barvy potlačuje hranatý vzhled aproximovaných těles ostré odlesky se však nekreslí korektně interpolace normály je vhodná i pro vysoký lesk NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 69

Mlha lokální osvětlovací modely počítají pouze interakci světla s povrchem předmětů vliv prostředí (atmosféry) na šíření paprsku nejjednodušší a nejčastější je výpočet mlhy (umí i HW) přesný výpočet pohlcení/rozptylu paprsku v kouři nebo aerosolu je mnohem složitější barva mlhy C f (obvykle bílá) se mísí s barvou tělesa lineární mlha (koeficient se mění lineárně se vzdáleností) exponenciální mlha (exponenciální závislost koeficientu na vzdálenosti předmětu od pozorovatele) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 70

Mlha míchání mlhy s barvou tělesa C f je barva mlhy, C s barva tělesa f je koeficient C= f C s 1 f C f lineární mlha z end a z start jsou vzdálenosti začátku a konce mlhy z je vzdálenost fragmentu od pozorovatele exponenciální mlha D je hustota mlhy (čím je větší, tím je mlha hustší) f = z z end z end z start f =e D z NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 71

Literatura Tomas Akenine-Möller, Eric Haines: Real-time rendering, 2 nd edition, A K Peters, 2002, ISBN: 1568811829 Randima Fernando, Mark J. Kilgard: The Cg Tutorial, Addison-Wesley, 2003, ISBN: 0321194969 J. Žára, B. Beneš, J. Sochor, P. Felkel: Moderní počítačová grafika, 2. vydání, Computer Press, 2005, ISBN: 8025104540 http://www.geometrictools.com/ (Dave Eberly) NPGR019, hwmath.pdf 2010 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 72