Úvod Některé algoritmy pro řešení viditelnosti Literatura. Řešení viditelnosti. Pavel Strachota. FJFI ČVUT v Praze. 11. dubna 2012

Podobné dokumenty
1. Vektorové algoritmy jejich výstupem je soubor geometrických prvků, např.

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

Malířův algoritmus Josef Pelikán CGG MFF UK Praha. 1 / 15

Watkinsův algoritmus řádkového rozkladu

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

MRBT M8. VIDITELNOST OBJEKTŮ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. Bc. MARTIN MAŠTERA

Reprezentace 3D modelu

Počítačová grafika 1 (POGR 1)

8. VIDITELNOST. Cíl Po prostudování této kapitoly budete umět. Výklad. P i O M. a A. b A. 8. Viditelnost

11 Zobrazování objektů 3D grafiky

Geometrické vyhledávání

Zobrazování a osvětlování

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

Jana Dannhoferová Ústav informatiky, PEF MZLU

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

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

Reprezentace 3D scény

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.

Algoritmy pro ořezávání 2D polygonů

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

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

PROGRAMY PRO GIS. Formovat/formulovat problém pro aplikaci v počítači. Fungování GIS programů na základní úrovni - "uvažovat" jako počítač

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

Geometrické transformace pomocí matic

Ing. Jan Buriánek. Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Jan Buriánek, 2010

Katedra informatiky, Univerzita Palackého v Olomouci. 27. listopadu 2013

Fergusnova kubika, která je definována pomocí bodu P1, vektoru P1P2, bodu P3 a vektoru P3P4

Voronoiův diagram. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta

TECHNICKÉ KRESLENÍ A CAD. Přednáška č.5

Souřadnicové prostory

Modelování pevných těles

Úvod do mobilní robotiky AIL028

Reprezentace bodu, zobrazení

TECHNICKÁ DOKUMENTACE

Algoritmy výpočetní geometrie

Vyplňování souvislé oblasti

Reflections, refractions, interreflections

Technické zobrazování

- obvyklejší, výpočetně dražší - každé písmeno je definováno jako zakřivený nebo polygonální obrys

Kreslení obrazů součástí Zobrazování geometrických těles. Zobrazení kvádru

Datové struktury pro prostorové vyhledávání

5.1.3 Obrazy těles ve volném rovnoběžném promítání I

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

Gymnázium Jiřího Ortena, Kutná Hora. Průřezová témata Poznámky. Téma Školní výstupy Učivo (pojmy) volné rovnoběžné promítání průmětna

Popis výukového materiálu

5.1.4 Obrazy těles ve volném rovnoběžném promítání II

Jana Dannhoferová Ústav informatiky, PEF MZLU

STŘEDNÍ PRŮMYSLOVÁ ŠKOLA STROJÍRENSKÁ a Jazyková škola s právem státní jazykové zkoušky, Kolín IV, Heverova 191. Obor M/01 STROJÍRENSTVÍ

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

P R O M Í T Á N Í. rovina π - průmětna vektor s r - směr promítání. a // s r, b// s r,

STŘEDNÍ PRŮMYSLOVÁ ŠKOLA STROJÍRENSKÁ a Jazyková škola s právem státní jazykové zkoušky, Kolín IV, Heverova 191. Obor M/01 STROJÍRENSTVÍ

TECHNICKÉ KRESLENÍ A CAD. Přednáška č.4

Textura a mapovací funkce Způsoby aplikace textury Použití textury pro prostorovou modifikaci povrchu Mipmapping Literatura.

Počítačová geometrie I

Urychlovací metody pro Ray-tracing

13 Barvy a úpravy rastrového

Datové struktury. Zuzana Majdišová

ÚLOHY S POLYGONEM. Polygon řetězec úseček, poslední bod je totožný s prvním. 6 bodů: X1, Y1 až X6,Y6 Y1=X6, Y1=Y6 STANOVENÍ PLOCHY JEDNOHO POLYGONU

PŘÍMKA A JEJÍ VYJÁDŘENÍ V ANALYTICKÉ GEOMETRII

5.1.2 Volné rovnoběžné promítání

Algoritmizace prostorových úloh

5.1.4 Obrazy těles ve volném rovnoběžném promítání II

Geometrické vyhledání.

5 Algoritmy vyplňování 2D oblastí

1. MONGEOVO PROMÍTÁNÍ

Úloha - rozpoznávání číslic

3) Vypočtěte souřadnice průsečíku dané přímky p : x = t, y = 9 + 3t, z = 1 + t, t R s rovinou ρ : 3x + 5y z 2 = 0.

Monochromatické zobrazování

Téma: Vektorová grafika. Určete pravdivost následujícího tvrzení: "Grafická data jsou u 2D vektorové grafiky uložena ve voxelech."

7.5.3 Hledání kružnic II

Úpravy rastrového obrazu

1. Dva dlouhé přímé rovnoběžné vodiče vzdálené od sebe 0,75 cm leží kolmo k rovine obrázku 1. Vodičem 1 protéká proud o velikosti 6,5A směrem od nás.

Předmět poskytuje základní vědomosti o normalizaci pro zobrazování, kótování, kreslení řezů a detailů, značení materiálů výrobků na výkresech.

Extrémy funkce dvou proměnných

4. cvičení. 15. října 2014


Grafické řešení rovnic a jejich soustav

Lineární transformace

PB001: Úvod do informačních technologíı

Středové promítání. Středové promítání E ~ ~ 3. dané průmětnou r a bodem S (S r) je zobrazení prostoru...

Surfels: Surface Elements as Rendering Primitives

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

pomocný bod H perspektivního obrázku zvolte 10 cm zdola a 7 cm zleva.)

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

= - rovnost dvou výrazů, za x můžeme dosazovat různá čísla, tím měníme

12 Metody snižování barevného prostoru

NÁVOD NA VYROBENÍ PERSPEKTIVNÍ KRABIČKY

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

Pokročilé techniky Josef Pelikán, MFF UK Praha

Lingebraické kapitolky - Analytická geometrie

Výpočetní geometrie. Pavel Strachota. 9. listopadu FJFI ČVUT v Praze

Cyklografie. Cyklický průmět bodu

Deskriptivní geometrie 2

Zobrazování barev Josef Pelikán CGG MFF UK Praha.

Pokročilé metody fotorealistického zobrazování

ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ

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

Detekce kolizí v 3D Josef Pelikán KSVI MFF UK Praha

Poznámky k semináři z termomechaniky Grafy vody a vodní páry

Transkript:

Řešení viditelnosti Pavel Strachota FJFI ČVUT v Praze 11. dubna 2012

Obsah 1 Úvod 2 Některé algoritmy pro řešení viditelnosti

Obsah 1 Úvod 2 Některé algoritmy pro řešení viditelnosti

Úvod situace: daná scéna daná specifikace pohledu problém - zobrazit pouze části viditelné z daného pohledu určení viditelných čar/povrchů (visible line/surface determination) odtranění neviditelných (zakrytých) čar/povrchů (hidden line/surface elimination)

Základní rozdělení přístupů k řešení viditelnosti 1/2 Obrazový přístup (image-precision algorithms) řeší, který z objektů je vidět v každém pixelu obrazu foreach(pixel in the image) { 1. determine the object closest to the viewer in the direction of projection; 2. draw the pixel in the appropriate color; } ray casting pro řešení viditelnosti (více o něm viz přednáška o raytracingu) pracuje na úrovni rozlišení obrazu = aliasing, nutnost přepočítání např. při zoomování teoretická složitost naivního algoritmu je O (np), kde n =počet objektů, p =počet pixelů

Základní rozdělení přístupů k řešení viditelnosti 2/2 Objektový přístup (object-precision algorithms) porovnává objekty mezi sebou a eliminuje celé objekty nebo jejich části, které nejsou viditelné foreach(object in the scene) { 1. determine the unobstructed parts of the object, either by other objects or other parts of the same object; 2. draw those parts in the appropriate color; } teoretická složitost je O ( n 2), ale i když n p, tak kroky 1. a 2. jsou obvykle mnohem náročnější než u obrazového přístupu pracuje na úrovni datové struktury scény, nemusí se opakovat při přiblížení (zoomu) scény

Obsah 1 Úvod 2 Některé algoritmy pro řešení viditelnosti

Grafy funkcí dvou proměnných nakreslit plochu y = f (x,z) sít m n funkčních hodnot spojíme f (x, z) lomenou čarou ve směru konstantního z, resp. x, pro každé x, resp. z - tzv. drátěná mříž (wireframe)

Algoritmus siluety 1/5 horizon line algorithm každá lomená čára v rovině z = z i, roviny rovnoběžné = žádná lomená čára nemůže být zakryta jinou, která leží v rovině (konstantního z) dále od pozorovatele = algoritmus vykreslování odpředu dozadu postupně kreslíme lomené čáry, udržujeme siluetu již nakresleného objektu: stačí pole YMIN, YMAX pro min. a max. promítnutou hodnotu y v závislosti na x toto pole má konečně mnoho prvků v závislosti na rozlišení obrazu (image-precision = nebezpečí aliasingu)

Algoritmus siluety 2/5 z další (vzdálenější) lomené čáry nakreslíme jen části, kde promítnutá hodnota y leží mimo siluetu, a siluetu aktualizujeme

Algoritmus siluety 3/5 pro lomené čáry ve směru konstantního x lze provést to samé pro jeden ze směrů (v našem pohledu je to x) může být nutné kontrolovat, v jakém směru se roviny vzdalují od pozorovatele (a vždy v tomto pořadí je zpracovávat) vlevo od šipky se roviny vzdalují směrem doleva, vpravo od šipky směrem doprava

Algoritmus siluety 4/5 chceme-li nakonec sít v obou směrech tak nestačí složení obou obrazů - nedá správný výsledek:

Algoritmus siluety 5/5 Řešení: nakreslit základní lomenou čáru ve směru konstantního z a pak vždy jednu čáru ve směru konst. z + úseky všech čar ve směru konst. x, které se se vejdou mezi dvě poslední čáry ve směru konst. z ve všech krocích dodržovat pořadí kreslení směrem od pozorovatele

Back-face culling 1/2 culling = redukce, odstřel odstranění odvrácených ploch pro objekty složené z mnohostěnů = objem ohraničen polygonálními stěnami předpoklad: nedíváme se dovnitř objektu (objektem neprochází přední ořezávací rovina) polygon, jehož normála míří od pozorovatele, je odvrácený a je plně zakryt jinými bližšími polygony.

Back-face culling 2/2 necht n je vnější normála polygonu, v vektor od pozorovatele k polygonu polygon je odvrácený, pokud n v > 0 ( cos( nv) > 0) algoritmus nelze bez dalšího zpracování použít, pokud: objekt není konvexní objekt obsahuje díry máme více než 1 objekt výhoda - lineární složitost vzhledem k počtu stěn (vhodným předzpracováním lze dosáhnout sublineární složitosti) = používá se jako předstupeň k dalším (úplnějším) algoritmům na řešení viditelnosti

Appelův algoritmus 1/4 algoritmus pro určení viditelných úseček (nikoliv např. ploch = pouze obrysy) obecnější, požaduje, aby úsečky byly součástí polygonálních ploch, ne nutně mnohostěnů kvantitativní neviditelnost bodu na úsečce: pokud úsečka vstupuje za přivrácený polygon, zvýší se kvant. neviditelnost o 1 pokud úsečka vystupuje zpoza přivráceného polygonu, kvant. neviditelnost se o 1 sníží vykreslují se jen části úseček s kvantitativní neviditelností rovnou 0

Appelův algoritmus 2/4

Appelův algoritmus 3/4 pokud nemáme navzájem se prostupující polygony, kvantitativní neviditelnost se mění jen při přechodu za tzv. obrysovou čáru obrysová čára hrana sdílená přivráceným a odvráceným polygonem hrana přivráceného polygonu, který není částí uzavřeného mnohostěnu hrana sdílená dvěma přivrácenými polygony nemění neviditelnost obrysová čára prochází před hranou AB, jestliže protíná ABE, kde E je místo pohledu (oko - eyepoint, resp. střed promítání (COP - center of projection) - viz přednáška Promítání = lze využít algoritmy pro průsečík úsečky a polygonu

Appelův algoritmus 4/4 nejprve se určí kvantitativní neviditelnost jednoho výchozího bodu (seed vertex) výpočet s pomocí hrubé síly, kdy se otestují průsečíky všech přivrácených polygonů s paprskem od pozorovatele do výchozího bodu poté se využívá koherence hran, tj. vlastnosti, že tvoří polygony, resp. polygonovou sít. Rekurzivně: po všech hranách z výchozího bodu se dojde na jejich konec, kvant. neviditelnost se mění podle dříve popsaného postupu tato nová hodnota kvant. neviditelnosti = výchozí hodnota pro další hrany vycházející z koncových bodů původních hran

Algoritmus depth-sort 1/6 zjednodušená verze - tzv. malířův algoritmus kreslení polygonů postupně do tzv. frame bufferu - offline grafické paměti (pro barvu pixelů), kterou poté najednou zobrazíme, až když je scéna připravená kreslíme polygony od nejvzdálenějšího k nejbližšímu, postupně se překreslují

Algoritmus depth-sort 2/6 Zjednodušený postup 1 seřadit polygony podle jejich nejmenší (či největší) souřadnice z (souřadnice z již v projekci, tj. vzdálenost od pozorovatele (depth)) 2 vyřešit nejednoznačnosti (když se rozsahy z překrývají = možná nutné dělení polygonů) 3 vykreslit polygony v pořadí od nejvzdálenějšího malířův algoritmus neobsahuje bod 2 = vyřeší jednoduché případy, kde každý polygon je v rovině z = konst.

Algoritmus depth-sort 3/6 Možné případy překryvu složitější situace si vynutí další rozhodování necht P je polygon na konci setříděného seznamu necht Q i jsou všechny polygony, jejichž rozsah z se překrývá s rozsahem z polygonu P než vykreslíme P, musíme ověřit, že nezakryje žádný z Q i

Algoritmus depth-sort 4/6 Testování překryvu provádíme 5 testů se zvyšující se obtížností mezi P a Q i. Úspěch libovolného z nich = P nezakryje Q i. 1 jsou rozsahy souřadnice x polygonů P a Q i disjunktní? 2 jsou rozsahy souřadnice y polygonů P a Q i disjunktní? 3 leží celý P za rovinou polygonu Q i ve směru pohledu? 4 leží celý Q i před rovinou polygonu P ve směru pohledu? 5 jsou průměty obou polygonů disjunktní?

Algoritmus depth-sort 5/6 Výsledky testování překryvu pokud nějaký test uspěje, testujeme další Q i pokud test projde i, nakreslíme P pokud testy neuspějí, prohodíme pro účel testování P a Q i a provedeme znovu testy 3,4 (ostatní netřeba opakovat). pokud nyní uspějeme, zařadíme Q i na konec seznamu místo P pokud ani prohozený test neuspěje, je nutné rozdělit jeden polygon rovinou druhého, původní zahodit, správně seřadit podle (nejmenší) hodnoty z a zařadit do seznamu potřeba ošetřit možnost zacyklení a další detaily

Algoritmus depth-sort 6/6 Zbytečné dělení polygonů (kdy všech 5 testů selže i bez vzájemného překryvu)

Warnockův algoritmus 1/6 obrazový (image-precision) algoritmus typu rozděl a panuj - rekurzivní dělení oblasti určuje případy, které lze snadno zvládnout a ihned vykreslit v ostatních případech dělí obdélníkovou oblast zájmu (tj. okno v průmětně) na 4 menší a pokračuje rekurzivně v každé z podoblastí

Warnockův algoritmus 2/6 4 případy vztahu polygonu k oblasti zájmu 1 obklopující polygon - jeho projekce plně obsahuje oblast zájmu 2 polygon protínající oblast zájmu 3 polygon plně obsažený v oblasti zájmu 4 disjunktní polygon zcela mimo oblast zájmu

Warnockův algoritmus 3/6 4 snadné případy, které lze ošetřit rovnou bez dělení oblasti 1 všechny polygony disjunktní = oblast vyplněna barvou pozadí 2 jediný protínající, resp. obsažený polygon = oblast vyplněna barvou pozadí, poté promítnut a vykreslen daný polygon, resp. jeho část 3 jediný obklopující polygon, žádné další = oblast vyplněna barvou daného polygonu 4 několik obklopujících, protínajících a obsažených polygonů, ale jeden z nich je obklopující, který je nad všemi ostatními (nejblíže pozorovateli) = viz 3. bod vyšetření 4. případu viz dále

Warnockův algoritmus 4/6 Vyšetření 4. snadného případu pro každý polygon se určí souřadnice z roviny, ve které je obsažen, ve 4 rozích oblasti zájmu (z průsečíků roviny s hranami příslušného pohled. objemu) pokud všechny průsečíky (x) náležící jednomu obklopujícímu polygonu jsou nad průsečíky rovin všech ostatních polygonů (obklopujících, protínajících ( ) a obsažených ( )), je rozpoznán případ 4. na obr. b) není případ 4 rozpoznán = dělení oblasti

Warnockův algoritmus 5/6 Zastavení dělení dosud pracoval algoritmus jako objektový (object-precision) algoritmus je ale obrazový kvůli kritériu zastavení dělení: oblast dosáhne velikosti pixelu (a stále nenastanou případy 1-4) = vyplníme barvou polygonu, který je nejblíže pozorovateli v daném bodě (středu oblasti) - ray casting pro odstranění aliasingu možné nadvzorkovat na velikost menší než 1 pixel

Warnockův algoritmus 6/6 Příklady dělení dělení na čtverce neuniformní dělení (první v bodě A, druhé v bodě B)

Warnockův algoritmus 6/6 Příklady dělení dělení na čtverce neuniformní dělení (první v bodě A, druhé v bodě B)

jinak také depth-buffer z-buffer 1/3 obrazový (image-precision) algoritmus využívá frame buffer a vedle něj depth-buffer (pamět hloubky) stejné velikosti jednotlivé objekty (ne nutně jen polygony) se v libovolném pořadí vykreslují do průmětny (frame bufferu) a současně se aktualizuje pamět hloubky pamět hloubky na začátku nastavena na +, průmětna na barvu pozadí Každý pixel objektu se zakreslí na průmětnu jen tehdy, je-li jeho souřadnice z (hloubka, vzdálenost od pozorovatele) menší než hodnota uložená v paměti hloubky na dané pozici. V tom případě se pamět hloubky aktualizuje na tuto novou hodnotu.

z-buffer 2/3 Schéma vykreslení dvou polygonů

z-buffer 2/3 Vlastnosti rychlý, jednoduchý, snadný na implementaci v HW obecný (není omezen jen na polygony) Aliasing způsobený konečnou přesností z-bufferu z-buffer v HW je obvykle 32 bit integer pro hloubku se používá pseudo-vzdálenost (viz Promítání) PD (z) = z (f + n) 2fn, z (f n) kde z = n a z = f jsou přední a zadní ořezávací roviny. pro f n a velká z je PD (z) blízko 1 (PD : [n,f ] [ 1,1]) konečná přesnost = různě (ale hodně) vzdálené objekty mohou získat stejnou hodnotu hloubky = prolnutí vzdálených objektů

Další algoritmy algoritmy pro BSP (binary space partitioning) stromy (Schumacker) efektivní, když se hýbe kamera, ale nemění se scéna algoritmy pro octree uspořádání oktantů odzadu dopředu algoritmy pro řešení viditelnosti zakřivených povrchů... dělení na polygonální sít + algoritmus pro polygony přímé zpracování zakřivených povrchů (Weiss, Woon, Mahl, Levin, Sarraga) algoritmy pro bikubické povrchy (Blinn, Whitted)

Literatura J. D. Foley, A. van Dam, S. K. Feiner, J. F. Hughes: Computer Graphics: Principles and Practice, Addison Wesley, 1997. M.E. Newel et al.: A Solution to the Hidden Surface Problem. Proceedings of the ACM National Conference 1972, 443450. (algoritmus depth-sort) A. Appel A.: The notion of quantitative invisibility and the machine rendering of solids. Proceedings of the 1967 22nd national conference, 1967, 387393.