10 Transformace 3D Studijní cíl Tento blok je věnován transformacím 3D grafiky. V textu budou popsány základní transformace v prostoru – posunutí, otočení, zkosení a změna měřítka, používané při zpracování 3D modelu. Jednotlivé transformace budou představeny pomocí explicitních vztahů i pomocí maticového vyjádření. Rovněž bude objasněna problematika složených transformací.
Doba nutná k nastudování
3-4 hodiny
Průvodce studiem Při studiu tohoto bloku se předpokládá, že student je seznámen se základy analytické geometrie a ovládá základní operace pro práci s maticemi a jejich vyjádření.
10.1 Transformace a jejich realizace Pro transformace v prostoru platí obecně obdobné principy, které byly objasněny v bloku 7, zabývajícím se transformací v rovině. Základním cílem jednotlivých transformací je změna polohy nebo tvaru daného tělesa. Při transformacích v prostoru má kromě již zmíněných transformací smysl hovořit navíc i o transformaci projekce, což je změna třísložkových prostorových souřadnic na rovinné dvousložkové souřadnice, které je nutno znát v případě zobrazení daného tělesa pomocí dvourozměrného zobrazovacího zařízení (monitor, tiskárna). Vzhledem k tomu, že u 3D modelů se jedná o vektorovou grafiku, platí, že transformace se provádí aplikováním transformačních vztahů na každý řídící bod modelovaného objektu. Analogie s 2D transformacemi platí i na možné způsoby definování transformačních vztahů. Opět existují dva způsoby definování transformace pomocí explicitních vztahů nebo pomocí maticového vyjádření. KST/IPOGR Počítačová grafika
10-1
Petr Veselý KST FEI Univerzita Pardubice
V případě explicitních vztahů je popsána úprava souřadnic bodu P[x, y, z] pomocí tří samostatných vztahů na souřadnice bodu P’[x’, y’, z]’. Některé transformace (např. posunutí) lze provádět postupně po složkách x, y, z, obecně však platí, že x’ = f(x, y, z) y’ = f(x, y, z) z’ = f(x, y, z) V tomto případě je nutno při implementaci zabezpečit, aby výpočty všech transformovaných souřadnic probíhaly na základě původních souřadnic.
10.2 Uživatelské souřadnicové systémy V 3D grafice je zvykem používat jeden ze dvou běžných uživatelských souřadnicových systémů. Použitý souřadnicový systém je součástí modelu a při případném zobrazení modelovaného tělesa je třeba tento zvolený systém respektovat. Běžně je používán tzv. levotočivý nebo pravotočivý souřadnicový systém. Tyto dva systémy se liší vzájemným postavením jednotlivých os x, y a z, jak je naznačeno na následujících obrázcích 1 a 2. Pomůckou pro snadné zapamatování postavení os v systému je použití pravé (pro levotočivý) nebo levé (pro pravotočivý) ruky. Levotočivý systém (Right-handed) Osy (v pořadí x, y, z) jsou vzájemně orientovány proti směru hodinových ručiček. Osa x směřuje před průmětnu.
Obrázek 1: Postavení os a pomůcka pravé ruky
KST/IPOGR Počítačová grafika
10-2
Petr Veselý KST FEI Univerzita Pardubice
Pravotočivý (Left-handed) Osy v (pořadí x, y, z) jsou vzájemně orientovány po směru hodinových ručiček. Osa y směřuje před průmětnu.
Obrázek 2: Postavení os a pomůcka levé ruky
10.3 Transformační matice Souřadnice bodu P = [x, y, z] se vlivem transformace upraví na P´ = [x´, y´, z´]. Maticové vyjádření lze zapsat, stejně jako v 2D grafice, pomocí řádkového nebo sloupcového vektoru souřadnic a příslušné transformační matice A, jejíž prvky odpovídají koeficientům z explicitních transformačních vztahů. V dalším výkladu bude uváděn tvar s použitím řádkového vektoru.
x'
y' z ' x
y
z A
P' PA Vzhledem k tomu, že v některých transformačních vztazích (např. posunutí) je kromě členů, týkajících se souřadnic x, y a z, uveden i čtvrtý člen, je nutno pro jednotný maticový výpočet používat čtvercovou matici o rozměru (n+1) x (n+1). Konkrétně pro 3D transformace je to 4 x 4. Z důvodu možnosti provádění maticových operací je nutno rozšířit i vektor souřadnic o jednu souřadnici. Tento uměle doplněný prvek vektoru bývá označen jako souřadnice w a jedná se o tzv. homogenizační faktor. Hodnota w je nastavena na 1, případně pro jinou hodnotu jsou původní souřadnice upraveny vynásobením nebo vydělením hodnotou w.
x'
y'
z' w' x
KST/IPOGR Počítačová grafika
y
z
w A 10-3
Petr Veselý KST FEI Univerzita Pardubice
10.4 Posunutí Transformace provede posunutí celého modelovaného tělesa o vektor t . Tato transformace není vztažena k žádnému vztažnému bodu.
Obrázek 3: Nákres transformace posunutí
Toho je dosaženo posunutím každého řídícího bodu P do bodu P´ o vektor t Vektor posunutí t (tX , tY , tZ ) ( x´ x, y´ y, z´ z ) Explicitní výpočet souřadnic P´
x' x tX
y' y tY z ' z tZ Maticové vyjádření posunutí
1 0 AM 0 t X
0 1 0 tY
0 0 1 tZ
KST/IPOGR Počítačová grafika
0 0 0 1
10-4
Petr Veselý KST FEI Univerzita Pardubice
10.5 Otočení Při 3D transformaci otočení je třeba rozlišovat několik základních možností otáčení. Obecně platí, že na rozdíl od 2D grafiky, kde bylo otáčení vztaženo k bodu (středu) otáčení, zde je otáčení vztaženo k přímce (ose) otáčení. Otáčení je možno realizovat obecně k jakékoliv přímce v prostoru nebo je možno realizovat specifické otáčení, kdy osou otáčení je některá z os souřadnicového systému, případně přímka, která je rovnoběžná s některou z os souřadnicového systému. Obecně je možno řešit otáčení proti nebo po směru hodinových ručiček. Vztahy, které jsou v tomto textu uvedeny, předpokládají při zadání kladného úhlu otočení směr otáčení proti směru hodinových ručiček, jak je naznačeno na následujícím obrázku 4.
Obrázek 4: Nákres směru otáčení
10.5.1 Otočení (osa otočení shodná s osou SS) Otočení bodu P se v prostoru provádí okolo zvolené osy o orientovaný úhel do bodu P´.
Obrázek 5: Nákres transformace otočení okolo osy SS
KST/IPOGR Počítačová grafika
10-5
Petr Veselý KST FEI Univerzita Pardubice
Explicitní výpočet souřadnic P´ pro jednotlivé osy Okolo osy z
x´ x cos y sin
y´ x sin y cos
z´ z Okolo osy x
x´ x
y´ y cos z sin z´ y sin z cos Okolo osy Y
x´ x cos z sin
y´ y z´ x sin z cos Maticové vyjádření otočení pro osu z
cos sin ARZ 0 0
sin cos 0 0
0 0 0 0 1 0 0 1
Ostatní transformační matice pro otáčení okolo zbývajících os lze snadno odvodit z výše uvedených explicitních vztahů. 10.5.2 Otočení (osa otáčení || s některou osou SS) Tuto specifickou transformaci je možno realizovat složenou transformací, která se skládá z posunutí transformovaného objektu tak, aby osa otáčení byla totožná s některou z os souřadnicového systému, samotného otočení a zpětného posunutí. Postup je nakreslen na následujícím obrázku 6. KST/IPOGR Počítačová grafika
10-6
Petr Veselý KST FEI Univerzita Pardubice
Obrázek 6: Nákres složené transformace
Transformační matice odpovídá výsledku po postupném násobení jednotlivých elementárních transformačních matic pro posunutí, otočení a posunutí.
ASLOŽENÁ AT * AR * AT 1 10.5.3 Obecné otočení Tato obecná transformace je použitelná vždy, to znamená, že je možno ji použít i v specifických případech, které byly popsány v předchozích kapitolách.
Obrázek 7: Nákres obecné transformace otočení
Tato transformace je opět realizována jako složená transformace posunutí, otočení a posunutí. Příslušné posunutí je třeba realizovat tak, aby obecná osa otáčení procházela počátkem souřadnicového systému. V následujícím vztahu představuje matice AR obecné otočení o úhel okolo osy otáčení, která je definována vektorem a, jehož počátek leží v počátku souřadnicového systému. KST/IPOGR Počítačová grafika
10-7
Petr Veselý KST FEI Univerzita Pardubice
P' PA a x2 axay azay axay a y2 ayaz AR ( a , ) cos( ) I (1 cos( )) axaz ayaz a z2 0 0 0 1 0 AT 0 qX
0 1 0 qY
0 0 1 qz
az ay 0 0 az 0 ax 0 sin( ) ay ax 0 0 0 0 1 0
0 0 0 0
0 0 0 1
A AT * AR ( a , ) * A T1
10.6 Zkosení
Obrázek 8: Nákres transformace otočení okolo osy SS
Zkosení je v 3D transformace, která závisí na výběru os, v jejichž směru zkosení probíhá. Výběr os určuje rovinu, vzhledem ke které je zkosení realizováno. Míra zkosení je dána parametry (koeficienty) shX, shY, shZ. Explicitní výpočet souřadnic P´ (pro zkosení ve směru roviny xy) (pro x i y)
(pouze x, shY=0)
(pouze y, shX=0)
x´=x+shXz
x´=x+shXz
x´=x
y´=y+shYz
y´=y
y´=y+shYz
z´=z
z´=z
KST/IPOGR Počítačová grafika
10-8
Petr Veselý KST FEI Univerzita Pardubice
Maticové vyjádření zkosení
1 0 Ashxy shx 0
0 1 shy 0
0 0 1 sh 0 0 Ashxz x 0 1 0 0 1 0
0 0 0 1 shy 0 1 1 shz 0 Ashyz 0 0 0 1 0 0 0 1 0 0
shz 0 1 0
0 0 0 1
10.7 Změna měřítka Změna velikosti objektu je prováděna ve směru souřadnicových os pomocí koeficientů sx, sy, sz. dle nastavené hodnoty u jednotlivých koeficientů platí: |s|(0,1)
---->
dojde ke zmenšení objektu v příslušném směru
|s|>1
---->
dojde ke zmenšení objektu v příslušném směru
s<0
---->
dochází ke změně měřítka v opačném směru
Obrázek 9: Nákres transformace změny měřítka
Explicitní výpočet souřadnic P´ x´= sx z y´= sy z z´= sz
KST/IPOGR Počítačová grafika
10-9
Petr Veselý KST FEI Univerzita Pardubice
Maticové vyjádření
sx 0 AS 0 0
0 sy
0 0
0 0
sz 0
0 0 0 1
10.8 Symetrie Symetrie je specifickým případem transformace změny měřítka, kdy příslušné koeficienty jsou nastaveny na hodnotu -1. Lze realizovat souměrnost dle středu souměrnosti (bod), osy souměrnosti (přímka) a roviny souměrnosti. Upozornění: při souměrnosti dochází ke změně orientace stěn (proti směru a po směru hodinových ručiček). Středová souměrnost = složená souměrnost dle všech rovin Osová souměrnost (x) = složená souměrnost dle dvou rovin (např. xy a xz) Následující tabulka ukazuje nastavení jednotlivých koeficientů pro příslušné typy souměrností v 3D. souměrnost dle
sX
sY
sZ
středu
-1
-1
-1
osy x
1
-1
-1
osy y
-1
1
-1
osy z
-1
-1
1
roviny xy
1
1
-1
roviny xz
1
-1
1
roviny yz
-1
1
1
KST/IPOGR Počítačová grafika
10-10
Petr Veselý KST FEI Univerzita Pardubice
Pojmy k zapamatování Transformace, maticové vyjádření, explicitní transformační vztahy, transformační matice, homogenizační faktor, inverzní transformace, posunutí, otáčení, změna měřítka, zkosení, vztažný bod, symetrie, násobení matic, složená transformace
Otázky na procvičení 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
K čemu slouží transformace? Jaký je rozdíl mezi 2D a 3D transformacemi? Jaký je vztah mezi explicitním a maticovým vyjádřením transformace? Co je to transformační matice? Co je to homogenizační faktor? Jak probíhá provedení složené transformace? Pomocí jaké transformace je řešena symetrie? Vzhledem k jakému prvku je realizována transformace otočení ve 3D? Jaké jsou užívány 3D souřadnicové systémy? Jaké jsou určující koeficienty pro jednotlivé transformace?
Odkazy a další studijní prameny
Žára, J., Beneš, B., Felkel, P. Moderní počítačová grafika. Computer Press, Brno, 1998. ISBN 80-7226-049-9. Foley, Van D. Computer Graphics. Principles and Practice. Addison-Wesley,1991. Cenek, P., Počítačová grafika. Univerzita Pardubice, 1999. ISBN 807194-229-4
KST/IPOGR Počítačová grafika
10-11
Petr Veselý KST FEI Univerzita Pardubice