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

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

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

KMA/GPM Barycentrické souřadnice a

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

Křivky a plochy technické praxe

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

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

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

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

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

Základní vlastnosti ploch

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

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

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

Počítačová grafika RHINOCEROS

Základní vlastnosti křivek

Lineární transformace

Transformace obrazu Josef Pelikán KSVI MFF UK Praha

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

Plochy zadané okrajovými křivkami

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

Transformace (v OpenGL)

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

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

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

NURBS REPREZENTACE KŘIVEK V MAPLE

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

2. Kinematika bodu a tělesa

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í

Elementární křivky a plochy

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

Vybrané kapitoly z matematiky

Mechanika

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

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

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é

Kvaterniony, duální kvaterniony a jejich aplikace

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

MATURITNÍ TÉMATA Z MATEMATIKY

11 Zobrazování objektů 3D grafiky

Deformace rastrových obrázků

Reprezentace 3D modelu

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

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

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

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

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

Matematika I 12a Euklidovská geometrie

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

Globální matice konstrukce

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

Souřadnicové prostory

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

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

5. Plochy v počítačové grafice. (Bézier, Coons)

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

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

13 Barvy a úpravy rastrového

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

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é

Obsah a průběh zkoušky 1PG

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 ϕ.

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

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.

CZ 1.07/1.1.32/

Příklady otázek PB009/jaro 2015

Vzorce počítačové grafiky

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

Kombinatorická minimalizace

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

7 Analytické vyjádření shodnosti

Matematika I A ukázkový test 1 pro 2011/2012. x + y + 3z = 1 (2a 1)x + (a + 1)y + z = 1 a

Státní závěrečná zkouška z oboru Matematika a její použití v přírodních vědách

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

Matematika I A ukázkový test 1 pro 2014/2015

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

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

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é

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

Reprezentace 3D scény

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

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

Subdivision křivky a plochy

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

1 Projekce a projektory

Geometrické transformace obrazu

9.1 Definice a rovnice kuželoseček

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

Algoritmizace prostorových úloh

Univerzita Pardubice Fakulta ekonomicko-správní. Počítačová grafika a geometrické transformace v rovině a prostoru. Eva Hladíková

3. SB 3. SC. Kružnice nemá s úběžnicí žádný společný bod. Obraz nemá žádný nevlastní bod. Tímto obrazem je křivka zvaná elipsa.

Transkript:

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

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,... NPGR019, hwmath.pdf 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 2 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 3 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 4 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 5 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 6 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 7 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 8 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 9 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 10 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 11 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 12 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 13 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 14 / 59

Převod mezi dvěma orientacemi 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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 15 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 16 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 17 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 18 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 19 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 20 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 21 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 22 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 23 / 59

Převod kvaternion matice 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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 24 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 25 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 26 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 27 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 28 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 29 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 30 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 31 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 32 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 33 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 34 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 35 / 59 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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 36 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 37 / 59 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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 38 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 39 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 40 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 41 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 42 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 43 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 44 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 45 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 46 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 47 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 48 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 49 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 50 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 51 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 52 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 53 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 54 / 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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 55 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 56 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 57 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 58 / 59

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 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 59 / 59