Obsah

Transformace, reprezentace a zobrazení 3D objektů

Geometrické transformace jsou jedny z nejčetnějších operací v současné počítačové grafice. Můžeme je chápat jako změnu pozice vrcholů v aktuálním souřadnicovém systému nebo jako změnu souřadnicového systému.

Homogenní souřadnice

Homogeneous coordinates

Jsou zavedeny kvůli jednotné manipulaci se všemi transformačními maticemi, protože v případě karteziánských souřadnic by jsme u posunutí použili sčítání a u ostatních operací zas násobení. Takhle všude použijeme násobení matic, tj. jednotný způsob (ulehčí implementaci).

Definice: Homogenní souřadnice bodu v 3D s karteziánskymi souřadnicemi [x,y,z] je uspořádána čtveřice [X,Y,Z,w] pro kterou platí x=X/w, y=Y/w, z=Z/w. Bod je svými homogenními souřadnicemi určen jednoznačně. Souřadnici w nazýváme váhou bodu. Hodnota této váhy je w=1 v případě lineárních transformací.

Důležitý termín je vektor. Vektor je veličina, která má kromě velikosti i směr. Jinými slovy, je to skalár který má i směr.

Transformace

http://wally.cs.iupui.edu/n351/3D/matrix.html

Používá se násobení matic. Bod, který chceme transformovat, má matici P(x, y, z, w), kde x, y, z jsou jeho souřadnice, w je 1 pokud je to bod, 0 pokud je to vektor.

Tansformační matice je pak matice 4 × 4:
<m>delim{[}{matrix{4}{4}{a_11 a_12 a_13 0 a_21 a_22 a_23 0 a_31 a_32 a_33 0 a_41 a_42 a_43 1}}{]}</m>

Transformace je pak tedy: P' = P × M
<m>delim{[}{matrix{1}{4}x_prime_y_prime_z_prime_1{]} = delim{[}{matrix{1}{4}{x y z 1}}{]} * delim{[}{matrix{4}{4}{a_11 a_12 a_13 0 a_21 a_22 a_23 0 a_31 a_32 a_33 0 a_41 a_42 a_43 1}}{]}</m>

Transformace je pak možné i skládat, provádí se to násobením transformačních matic mezi sebou. A protože jde o násobení matic, záleží na pořadí.

Posunutí

<m>delim{[}{matrix{4}{4}{1 0 0 0 0 1 0 0 0 0 1 0 d_x d_y d_z 1}}{]}</m>

Pro posun v opačném směru budou koeficienty d záporné.

Změna velikosti

<m>delim{[}{matrix{4}{4}{S_x 0 0 0 0 S_y 0 0 0 0 S_z 0 0 0 0 1}}{]}</m>

Pro zmenšení místo S použít 1/S.

Rotace

<m>R_x = delim{[}{matrix{4}{4}{1 0 0 0 0 {cos alpha} {sin alpha} 0 0 {-sin alpha} {cos alpha} 0 0 0 0 1}}{]}</m>

<m>R_y = delim{[}{matrix{4}{4}cos_alpha_0_sin_alpha_0_0_1_0_0_-sin_alpha_0_cos_alpha_0_0_0_0_1{]}</m>

<m>R_z = delim{[}{matrix{4}{4}cos_alpha_sin_alpha_0_0_-sin_alpha_cos_alpha_0_0_0_0_1_0_0_0_0_1{]}</m>

Zkosení

<m>Sh_YZ = delim{[}{matrix{4}{4}{1 Sh_y Sh_z 0 0 1 0 0 0 0 1 0 0 0 0 1}}{]}</m>

<m>Sh_XZ = delim{[}{matrix{4}{4}{1 0 0 0 Sh_x 1 Sh_z 0 0 0 1 0 0 0 0 1}}{]}</m>

<m>Sh_XY = delim{[}{matrix{4}{4}{1 0 0 0 0 1 0 0 Sh_x Sh_y 1 0 0 0 0 1}}{]}</m>

Reprezentace

Požadavky na modely:

Metody reprezentace

Konstruktivní geometrie (CSG)

Constructive solid geometry

Objekt je popsán stromem složeným z 3D primitiv, transformací a booleovských operací (uzly stromu).

Šablonování

Transformace (posun) 2D profilu po přímce, křivce nebo s měnícím se objemem (potahování) nebo rotace.

Dekompoziční modely

Voxelová konvička Voxel

Diskrétní popis objektu dekompozicí jím obsaženého objemu na elementární objemové jednotky – krychle (voxel = pixel v 3D). Uložení dat – oktalový strom, 3D pole diskrétních hodnot nebo subvoxely. Vykreslení – algoritmus Marching cubes. Na obrázku je porovnání voxelové a polygonální konvičky (tady voxely nejsou vyhlazené přes cubes).

B-rep = Boundary representation

Polygon mesh

Objekt je popsán hranicemi.

3D plochy

Plocha je definována bázovým polynomem a sítí bodů (matice).

Implicitní plochy

Metaballs

Modelování pomocí kostry kolem které je potenciální pole - určuje povrch objektu.

Zobrazení

Ray tracing

Ray tracing (graphics)

Z mřížky jsou vystřelovány paprsky do scény, kde se různě odráží a pohlcují. Přitom se sleduje jejich barva.

Photon mapping

Photon mapping

Pokročilá metoda, a výpočetně velice náročná, proto se většinou sama o sobě nepoužívá, ale slouží jen jako pomůcka pro globální iluminaci a ambient occlusion.

Funguje to tak, že do scény jsou ze světel vystřeleny fotony. Pokud foton narazí na polygon, v závislosti na materiálu se od něj buď část jeho energie pohltí (čímž na něm udělá „flek“ podle jeho intenzity) a odrazí se od něj dál do scény, nebo jím projde (např. sklo). Čím více odrazů fotonu povolíme, tím déle výpočet trvá, ale tím je přesnější. Z výše uvedeného plyne, že fotony se málo kdy dostanou do ostrých rohů, čímž se sama vyřešila AO, a pokud nebudeme energii fotonu brát jen jako jednorozměrné číslo, ale třeba jako RGB hodnoty, vyřeší se tím i GI. Výsledkem metody je pak fotonová mapa, což si lze představit jako flekatou texturu.

Fotonová mapa

Z-buffer

Z-buffering

Ukládá informace o hloubce objektů ve scéně. Není to přímo vykreslovací metoda, ale spíš způsob řešení viditelnosti.

Shrnutí

1)
Každá hrana spojuje právě dvě plochy