Hardware pro počítačovou grafiku NPGR019

Podobné dokumenty
Matematika pro real-time grafiku

Matematika pro real-time grafiku

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

Geometrické transformace pomocí matic

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

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

Transformace (v OpenGL)

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

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

Kvaterniony, duální kvaterniony a jejich aplikace

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

Lineární transformace

Reprezentace 3D modelu

Souřadnicové prostory

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

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

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

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

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

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

Afinní transformace Stručnější verze

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,

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

Geometrické transformace

7 Analytické vyjádření shodnosti

13 Barvy a úpravy rastrového

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

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

Algoritmizace prostorových úloh

Přímá a inverzní kinematika manipulátoru pro NDT (implementační poznámky) (varianta 2: RRPR manipulátor)

1 Projekce a projektory

11 Zobrazování objektů 3D grafiky

Deformace rastrových obrázků

ROZ1 CVIČENÍ VI. Geometrická registrace (matching) obrazů

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

Mechanika

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

2. Kinematika bodu a tělesa

4. Napjatost v bodě tělesa

Matematika pro geometrickou morfometrii

Matematika pro geometrickou morfometrii

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

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

Úvod do lineární algebry

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

Transformace obrazu Josef Pelikán KSVI MFF UK Praha

14. TRANSFORMACE SOUŘADNÉHO SYSTÉMU

Modelování blízkého pole soustavy dipólů

Požadavky ke zkoušce

9.1 Definice a rovnice kuželoseček

Reprezentace 3D scény

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

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

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

Co je grafický akcelerátor

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

Vybrané kapitoly z matematiky

IB112 Základy matematiky

Analýza napjatosti PLASTICITA

Matematika I 12a Euklidovská geometrie

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

Linearní algebra příklady

Momenty setrvačnosti a deviační momenty

CNC stroje. Definice souřadného systému, vztažných bodů, tvorba NC programu.

0.1 Úvod do lineární algebry

Matematika 1 Jiˇr ı Fiˇser 19. z aˇr ı 2016 Jiˇr ı Fiˇser (KMA, PˇrF UP Olomouc) KMA MAT1 19. z aˇr ı / 19

Lineární zobrazení. 1. A(x y) = A(x) A(y) (vlastnost aditivity) 2. A(α x) = α A(x) (vlastnost homogenity)

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

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

Matematika B101MA1, B101MA2

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

Algoritmus pro hledání vlastních čísel kvaternionových matic

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

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

ekologie Pavel Fibich Vektor a Matice Operace s maticemi Vlastnosti matic Pavel Fibich Shrnutí Literatura

ZŠ ÚnO, Bratří Čapků 1332

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

MATEMATIKA 5. TŘÍDA. C) Tabulky, grafy, diagramy 1 - Tabulky, doplnění řady čísel podle závislosti 2 - Grafy, jízní řády 3 - Magické čtverce

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

Připravil: David Procházka. Projekce

1 Připomenutí vybraných pojmů

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

Kinematika. Kinematika studuje geometrii pohybu robotu a trajektorie, po kterých se pohybují jednotlivé body. Klíčový pojem je poloha.

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

KTE / PPEL Počítačová podpora v elektrotechnice

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

Vlastní čísla a vlastní vektory

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

MATURITNÍ TÉMATA Z MATEMATIKY

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.

Přijímací zkoušky z matematiky pro akademický rok 2018/19 NMgr. studium Učitelství matematiky ZŠ, SŠ

Matematika pro geometrickou morfometrii (2)

Základy matematiky pro FEK

Úvod do analytické mechaniky

3D počítačová grafika na PC Josef Pelikán, MFF UK Praha

Variace na invarianci 2017 Kleinův Erlangenský program(lukáš Krump)

Učební texty k státní bakalářské zkoušce Matematika Skalární součin. študenti MFF 15. augusta 2008

Úvod do kvantového počítání

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

MATEMATIKA Maturitní témata společná část MZ základní úroveň (vychází z Katalogu požadavků MŠMT)

Transkript:

Hardware pro počítačovou grafiku NPGR019 Matematika pro real-time grafiku Josef Pelikán Jan Horáček http://cgg.mff.cuni.cz/ MFF UK Praha 2012

Obsah 1 Homogenní souřadnice, maticové transformace Převod mezi souřadnými soustavami 2 3 Eulerovy úhly, kvaterniony interpolace orientací 4

Geometrické transformace v 3D Převod mezi souřadnými soustavami vektor 3D souřadnic [x, y, z] transformace násobením maticí 3x3 řádkový vektor se násobí zprava (DirectX ) a 11 a 12 a 13 [x, y, z] a 21 a 22 a 23 = [x, y, z ] a 31 a 32 a 33 sloupcový vektor se násobí zleva (OpenGL) a 11 a 12 a 13 a 21 a 22 a 23 x y = x y a 31 a 32 a 33 z z transformační matice 3x3 mají podstatné omezení - nelze je použít pro posunutí (translaci)

Homogenní souřadnice Převod mezi souřadnými soustavami vektor homogenních souřadnic [x, y, z, w] transformace násobením maticí 4x4 a 11 a 12 a 13 a 14 [x, y, z, w] a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 = [x, y, z, w ] a 41 a 42 a 43 a 44 homogenní matici lze i posunovat (translace) a provádět perspektivní projekci

Převod homogenních souřadnic Převod mezi souřadnými soustavami 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]

Elementární transformace Převod mezi souřadnými soustavami nejběžnější jsou afinní transformace a 11 a 12 a 13 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

Transformace normál Převod mezi souřadnými soustavami 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 Původní objekt Transformovaný objekt

Souřadné soustavy Souřadnice modelu (Object coordinates) Modelovací transformace (Modeling transform) Světové souřadnice (World coordinates) Pohledová transformace (View transform) Souřadnice kamery (Eye coordinates) Projekční transformace (Projection transform) Ořezávací souřadnice (Clip coordinates)

Souřadné soustavy Souřadnice modelu (Object coordinates) Modelovací transformace (Modeling transform) Světové souřadnice (World coordinates) ModelViewMatrix Pohledová transformace (View transform) Souřadnice kamery (Eye coordinates) ModelViewProjMatrix Projekční transformace (Projection transform) Ořezávací souřadnice (Clip coordinates)

Souřadné soustavy 2 Ořezávací souřadnice (Clip coordinates) Perspektivní dělení (Perspective divide) Normalizovaný prostor (Normalized device space) Okénková transformace (Viewport transform) Souřadnice v okně (Window coordinates)

Souřadné soustavy 3 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ů pro zobrazování nemají příliš velký význam (pouze teoretický) souřadnice kamery 3D svět se transformuje do relativních souřadnic kamery střed projekce: počátek, směr pohledu: -Z (OpenGL) nebo +Z (DirectX)

Souřadné soustavy a jejich transformace transformace model kamera kombinovaná do ModelView matice projekční transformace definuje zorný objem (frustum pro perspektivní projekci) 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 coordinates) výstupní souřadnice vertex shaderu

Projekční transformace tzv. frustum pro perspektivní projekci je definováno parametry n, f, l, r, t, b vzdálený bod f lze pousnout do nekonečna 2n r l 0 0 0 2n 0 t b 0 0 r+l t+b (f +n) r l t b f n 1 2fn 0 0 f n 0 2n r l 0 0 0 2n 0 t b 0 0 r+l t+b r l t b 1 1 0 0 2n 0

Souřadné soustavy a jejich 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 coordinates) výsledkem okénkové transformace (škálování + posun) a transformace hloubky používají se při rasterizaci a práci s fragmenty

Transformace tuhého tělesa zachovává tvar těles, mění pouze jejich orientaci skládá se jen 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)

Převod mezi dvěmi orientacemi Eulerovy úhly, kvaterniony interpolace orientací z y O u s t x [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] s x s y s z M stu xyz = t x t y t z u x u y u z M xyz stu = M T stu xyz

Eulerova transformace Eulerovy úhly, kvaterniony interpolace orientací y -z rozklad obecné rotace na tři složky E(h, p, r) = R y (h) R x (p) R z (r) x h(head, yaw): otočení hlavy v půdorysu p(pitch): zvednutí/sklonění hlavy r(roll): otočení kolem osy pohledu

Eulerova transformace 2 Eulerovy úhly, kvaterniony interpolace orientací výsledná matice rotace: c(r)c(h) s(r)s(p)s(h) s(r)c(h) + c(r)s(p)s(h) c(p)s(h) E = 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

Rotace - jiné konvence Eulerovy úhly, kvaterniony interpolace orientací 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 Z 2. rotace kolem původní osy X 3. rotace kolem původní osy Z další systémy: aeronautika, gyroskopy, fyzika,...

Kvaterniony Eulerovy úhly, kvaterniony interpolace orientací Sir William Rowan Hamilton, 1843 i 2 = j 2 = k 2 = ijk = 1 aplikace v grafice až v roce 1985 (Shoemake) zobecnění komplexních čísel do 4D prostoru q = (v, w) = ix + jy + kz + w = v + w imaginární část v = (x, y, z) = ix + jy + kz i 2 = j 2 = k 2 = 1 jk = kj = i ki = ik = j ij = ji = k

Kvaterniony - operace Eulerovy úhly, kvaterniony interpolace orientací sčítání (v 1, w 1 ) + (v 2, w 2 ) = (v 1 + v 2, w 1 + w 2 ) násobení qr = (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

Kvaterniony - operace Eulerovy úhly, kvaterniony interpolace orientací konjugace (v, w) = ( v, w) norma (čtverec absolutní hodnoty) q 2 = n(q) = qq = 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 sq = (0, s)(v, w) = (sv, sw)

Jednotkové kvaterniony Eulerovy úhly, kvaterniony interpolace orientací 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 ) logq = ϕu q q t = (u q sinϕ + cosϕ) t = exp(tϕu q ) = u q sin(tϕ) + cos(tϕ)

Eulerovy úhly, kvaterniony interpolace orientací Rotace pomocí kvaternionu jednotkový kvaternion q = (u q sinϕ, cosϕ) u q... osa rotace ϕ... úhel 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 = qpq 1 = qpq φ φ u q

Převod kvaternion matice Eulerovy úhly, kvaterniony interpolace orientací kvaternion q po převedení na matici: 1 2(y 2 + z 2 ) 2(xy + wz) 2(xz wy) M = 2(xy wz) 1 2(x 2 + z 2 ) 2(yz + wx) 2(xz + wy) 2(yz wx) 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 (1) m 12 m 21 = 4wz tr(m) + 1 = 4w 2

Převod matice na kvaternion 2 Eulerovy úhly, kvaterniony interpolace orientací pokud je stopa matice+1 v absolutní hodnotě velká: w = 2 1 tr(m) + 1 x = m 23 m 32 4w y = m 31 m 13 4w x = m 12 m 21 4w v opačném případě se nejprve spočítá složka s maximální absolutní hodnotou, pak se použijí rovnice (1) 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

Sférická lineární interpolace (slerp) Eulerovy úhly, kvaterniony interpolace orientací nejkratší sférický oblouk mezi orientacemi q a r vstup: dva kvaterniony q a r q r 0, jinak q reálný parametr 0 t 1 interpolovaný kvaternion: slerp(q, r, t) = q(q r) t jiné vyjádření: slerp(q, r, t) = sin(ϕ(1 t)) sinϕ q + sin(ϕt) sinϕ cosϕ = q x r x + q y r y + q z r z + q w r w r

Otočení mezi dvěma vektory Eulerovy úhly, kvaterniony interpolace orientací 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ϕ) 4 výsledný kvaternion: s t = sin(2ϕ) q = (u sinϕ, cosϕ) ( ) 1 2(1 + e) q = (q v, q w ) = (s t), 2(1 + e) 2

Slerp rotačních matic Eulerovy úhly, kvaterniony interpolace orientací vstup: 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ční matice nutnost výpočtu osy a úhlu otočení Q T R výpočetně málo efektivní

Vyjádření rotace - shrnutí Eulerovy úhly, kvaterniony interpolace orientací rotační matice + HW podpora, efektivní transformace vektoru - pamět (9 float), neefektivní ostatní operace osa a úhel otočení + pamět (4 float nebo 6 float), podobné kvaternionu - neefektivní kompozice, interpolace kvaternion + pamět (4 float), kompozice, interpolace - neefektivní transformace vektoru podrobnosti viz RotationIssues.pdf

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 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á)

1 ve straně trojúhelníka interpoluj [x, y, z, 1 w, u w, v w ] 2 interpoluj v rámci scanline 3 vypočítej správné parametry w = 1/ 1 w u = u w w 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 1 lineárně interpoluji w, u w i v w, finální [u, v] pak dopočítám dělením (hyperbolická interpolace) 2. 3. 1.

- aplikace historicky výpočetně výrazně náročnější než lineární řešení - snížení náročnosti, perspektivně korektní interpolace počítána jen v určitých bodech, zbytek interpolován (bi)lineárně Quake - jednou za 16 pixelů scanline bilineární po blocích v souřadnicích obrazovky pro konstantní z moderní karty mají HW interpolátory

- příklad affinní perspektivně správné

- příklad 2 affinní perspektivně správné

Literatura Tomas Akenine-Möler, Eric Haines: Real-time rendering, 2 nd edition, A K Peters, 2002, ISBN:1568811829 OpenGL Architecture Review Board: OpenGL Programming Guide: The Official Guide to Learning OpenGL, Addison-Wesley, nejnovější vydání (aktuálně 8. vydání pro OpenGL 4.1) David Eberly: Rotation Representations and Performance Issues, http://www.geometrictools.com/documentati on/rotationissues.pdf, 2002-2008 Wikipedia: http://en.wikipedia.org/wiki/rotation matrix,...