Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter



Hasonló dokumentumok
Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Algoritmusok raszteres grafikához

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon) b) Minden belső pont kirajzolásával (kitöltött)

Láthatósági kérdések

Algoritmusok raszteres grafikához

Algoritmusok raszteres grafikához

2D képszintézis. Szirmay-Kalos László

Máté: Számítógépes grafika alapjai

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

Geometriai algoritmusok

Mesh generálás. IványiPéter

Látható felszín algoritmusok

Tartalom. Tartalom. Hajder Levente Szakasz raszterizálása. 2017/2018. II. félév. Poligon raszterizáció.

Plakátok, részecskerendszerek. Szécsi László

Máté: Számítógépes grafika alapjai

BME MOGI Gépészeti informatika 15.

x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs mátrixa 3D-ben?

Matematika 11 Koordináta geometria. matematika és fizika szakos középiskolai tanár. > o < szeptember 27.

Termék modell. Definíció:

Transzformációk. Grafikus játékok fejlesztése Szécsi László t05-transform

Klár Gergely

Programozási nyelvek Java

Számítógépes képelemzés 7. előadás. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Grafikus csővezeték és az OpenGL függvénykönyvtár

Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel. Az objektumok áthaladnak a többi objektumon

Direct3D pipeline. Grafikus játékok fejlesztése Szécsi László t03-pipeline

Máté: Számítógépes grafika alapjai

Lakóház tervezés ADT 3.3-al. Segédlet

(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.

Matematika 10 Másodfokú egyenletek. matematika és fizika szakos középiskolai tanár. > o < szeptember 27.

Keresés képi jellemzők alapján. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

QGIS szerkesztések ( verzió) Összeállította: dr. Siki Zoltán verzióra aktualizálta: Jáky András

4. Fuzzy relációk. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI

Adatszerkezetek 2. Dr. Iványi Péter

Imagine Logo Tanmenet évfolyam

Transzformációk. Szécsi László

Koordináta-geometria feladatok (emelt szint)

Csoportosítás. Térinformatikai műveletek, elemzések. Csoportosítás. Csoportosítás

Adatszerkezetek 7a. Dr. IványiPéter

Hajder Levente 2016/2017.

7. Régió alapú szegmentálás

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

MIKOVINY SÁMUEL TÉRINFORMATIKAI EMLÉKVERSENY

Numerikus integrálás

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Függvények

FFT. Második nekifutás. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék október 2.

Tartalom. Hajder Levente 2016/2017. I. félév

Negatív alapú számrendszerek

Máté: Számítógépes grafika alapjai

Modellezési transzformáció: [r lokális,1] T M = [r világ,1] Nézeti transzformáció: [r világ,1] T v = [r képernyo,1]

Java és web programozás

HLSL programozás. Grafikus játékok fejlesztése Szécsi László t06-hlsl

Függvények ábrázolása

= Y y 0. = Z z 0. u 1. = Z z 1 z 2 z 1. = Y y 1 y 2 y 1

Racionális számok: Azok a számok, amelyek felírhatók két egész szám hányadosaként ( p q

Feladatsor A differenciálgeometria alapja c. kurzus gyakorlatához

Fejezetek a számítógépi grafikából

Cohen-Sutherland vágóalgoritmus

Hajder Levente 2018/2019. II. félév

Tartalom. Tartalom. Hajder Levente 2018/2019. I. félév

GEOMETRIAI FELADATOK 1. (ESETTANULMÁNY)

Hajder Levente 2014/2015. tavaszi félév

2014/2015. tavaszi félév

Máté: Számítógépes grafika alapjai

Új prezentáció létrehozása az alapértelmezés szerinti sablon alapján.

Komputeralgebra Rendszerek

8. Lekérdezés geometria alapján

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT Koordináta-geometria

dimenziója Szirmay-Kalos László N= 1/r D D= (logn) / (log 1/r) D= (log4) / (log 3) = 1.26 N = 4, r = 1/3 Vonalzó ( l ) db r =1/3 N = 4 r 2 N 2 N m r m

Megoldás: Mindkét állítás hamis! Indoklás: a) Azonos alapú hatványokat úgy szorzunk, hogy a kitevőket összeadjuk. Tehát: a 3 * a 4 = a 3+4 = a 7

GPU Lab. 14. fejezet. OpenCL textúra használat. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

SCILAB programcsomag segítségével

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

(Independence, dependence, random variables)

Klár Gergely 2010/2011. tavaszi félév

openbve objektumkészítés Leírás az objektumkészítéshez használható parancsokról

Függvények int, long 1. Adott a mellékelt f alprogram.

Szá molá si feládáttí pusok á Ko zgázdásá gtán I. (BMEGT30A003) tá rgy zá rthelyi dolgozátá hoz

Grafikus csővezeték 1 / 44

Kérdés Lista. A Magyarországon alkalmazott rajzlapoknál mekkora az oldalak aránya?

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT. Koordináta-geometria

PTE PMMIK Infrastruktúra és Mérnöki Geoinformatika Tanszék

FÜGGVÉNYEK. A derékszögű koordináta-rendszer

8. előadás. Kúpszeletek

valós számot tartalmaz, mert az ilyen részhalmazon nem azonosság.

BME MOGI Gépészeti informatika 6.

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Koordináta-geometria

Függvények Megoldások

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Megoldások

Koordináta-geometria feladatok (középszint)

Bevezetés a CGI-be. 1. Történelem

Véletlen szám generálás Labirintus felépítése 1x1-es felbontástól a teljes méretig

Síklapú testek. Gúlák, hasábok áthatása. Az előadás átdolgozott részleteket tartalmaz a következőkből: Gubis Katalin: Ábrázoló geometria

Mechatronika segédlet 1. gyakorlat

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Megoldások. 1. Az alábbi hozzárendelések közül melyik függvény? Válaszod indokold!

Problémamegoldás kereséssel. Mesterséges intelligencia március 7.

Programozási segédlet

Java és web programozás

Átírás:

Információ megjelenítés Számítógépes ábrázolás Dr. Iványi Péter

Raszterizáció OpenGL Mely pixelek vannak a primitíven belül fragment generálása minden ilyen pixelre Attribútumok (pl., szín) hozzárendelése minden fragment-hez Alkalmazás Vertex létrehozás Vertex műveletek Primitív objektumok Primitív műveletek Raszterizáció Fragment műveletek Framebuffer Képernyő

Két alapvető művelet Fragment kiválasztás Tulajdonság hozzárendelés Szín, mélység

Fragment kiválasztás Generáljunk egy fragment-et minden pixelhez amelyet metsz a primitív Metszés jelentése: Primitív tartalmazza a pixel közepét Metszi a pixel négyzetét Metszi a szűrő függvényt

Primitív tartalmazza a pixel közepét

Primitív metszi a pixel négyzetét

Multisample raszterizáció 4x4 mintaper pixel

4x4 pixel per négyzet

Szűrő függvény használata Ha a függvény metszi a primitívet, akkor generálunk egy fragment-et

Fragment kiválasztás Mi van ha a primitívnek nincs területe? Pont és vonal Lehetőségek: Szabály alapú N x N pixel egy pont Bresenham vonal Terület hozzárendelés Kör egy pont helyébe Téglalap egy vonal helyébe

Bresenham algoritmus Vonal rajzolása q pontból r pontba q = (q x, q y ) r = (r x, r y ) Egy vonal implicit definíciója: f(x,y) = ax by c = 0 A meredekség 0 és 1 közé esik Ha nagyobb mint 1 akkor felcseréljük x és y szerepét és a meredekség megint 0 és 1 közé esik

Definiáljuk: Bresenham algoritmus d x = r x q x, d y = r y q y Ebből: a = d y, b = d x és c = (q x r y r x q y ) Mindegyik érték egész szám!!! f(x, y) > 0 esetén a pontok alatta vannak f(x, y) < 0 esetén a pontok felettevannak

Bresenham algoritmus Utoljára a p = (p x, p y ) pixelt rajzoltuk meg A kérdés, hogy egy adott x értékhez melyik a legközelebbi y érték (pixel)

Bresenham algoritmus Mivel a dőlés 0 és 1 között van így csak az E = (p x 1; p y )és NE = (p x 1; p y 1) pontok lehetnek

Bresenham algoritmus q érték a pontos y koordináta m adja meg a középértéket: m = p y 1/ Ha q < m Akkor az E pontot választjuk Ha q > m Akkor az NE pontot választjuk

Bresenham algoritmus Döntési érték (D), f értéke a m pozícióban D = f ( p x 1, 1/ ) Ha D > 0 válasszuk a NE pontot Ha D < 0 válasszuk az E pontot x p y 1 = a( px 1) b py c = ap bp (a b c) y

Előnyök: D egész érték Hátrány Bresenham algoritmus Minimum két szorzatot és két összeadást kell elvégezni (például előszámítunk néhány értéket) A trükk: D-t folyamatosan módosítjuk

Ha E pontot választottuk A következő középpont: (p x ; p y (1/)) y y x y x y x y x uj d D a D a c b a bp ap c b a bp ap c p b p a p p f D ) ( ) (4 1 ) ( ) 1/, ( = = = = = =

Ha NE pontot választottuk A következő középpont: (p x ; p y 1 (1/)) ) ( ) ( ) ( ) ( ) 3 (4 3 ) ( ) 1/ 1, ( x y y x y x y x y x uj d d D b a D b a c b a bp ap c b a bp ap c p b p a p p f D = = = = = =

Bresenham algoritmus Minden lépésben csak egy összeadást kell végrehajtani, ha a d y és (d y -d x ) értékeket előszámítjuk Jelentős hatékonyság növelés

Bresenham algoritmus D kezdeti értéke: x y y x y x y x y x kezdo d d q q b a b a c bq aq c q b q a q q f D = = = = = vonalon van a ), ( mivel 0 ) ( ) ( 1 1) ( ) 1/ 1, (

Bresenham algoritmus void bresenham(intpoint q, IntPoint r) { int dx, dy, D, x, y; dx = r.x - q.x; // vonal szélesség dy = r.y - q.y; // vonal magasság D = *dy - dx; // D kezdeti y = q.y; // (q.x,q.y) kezdünk for (x = q.x; x <= r.x; x) { writepixel(x, y); if (D <= 0) D = *dy; // E pont else { D = *(dy - dx); y; // NE pont } } }

Bresenham algoritmus Az algoritmus kiterjeszthető görbékre is Kör, ellipszis stb

Régió kitöltés módszer Poligon alapú Pixel alapú

Pixel alapú kitöltés A peremen pixelekkel megadjuk, majd a köztük levő részt kitöltjük. 4-kapcsolt 8-kapcsolt

Pixel alapú kitöltés Egy pontból elindulva addig lépkedünk amíg egy perem pixelhez érünk. Minden elért pixelt kitöltési színűre színezzük Rekurzíven kell végrehajtani Recursive Flood Filling

Recursive Flood Filling void floodfill(intpoint p) { if (getpixel(p.x, p.y) == backgroundcolor) { setpixel(p.x, p.y, regioncolor); floodfill(p.x - 1, p.y); // balra floodfill(p.x 1, p.y); // jobbra floodfill(p.x, p.y - 1); // le floodfill(p.x, p.y 1); // fel } }

Recursive Flood Filling

Recursive Flood Filling

Recursive Flood Filling

Recursive Flood Filling

Recursive Flood Filling

Recursive Flood Filling

Recursive Flood Filling

Recursive Flood Filling

Recursive Flood Filling

Recursive Flood Filling

Recursive Flood Filling

Recursive Flood Filling

Recursive Flood Filling

Recursive Flood Filling

Recursive Flood Filling

Rejtett vonalas ábrázolás Hidden line removal Adva vannak poligonok és egy nézőpont Csak a látható részeket akarjuk ábrázolni Minden rész sík és nem átlátszó Precizitás Objektum szintű Pixel szintű nem nagyítható egyszerű és gyors

Legrosszab eset Rejtett vonalas ábrázolás O(n ) komplexitás

Egyszerűsítés Rejtett vonalas ábrázolás Back face culling Hátlapok nem láthatók View frustum culling Néző dobozon kívüli elemek nem láthatók

Rejtett vonalas ábrázolás Painter s algoritmus (festő) Mélység szerinti rendezés Legtávolabbi objektumot először kirajzoljuk A közelebbi objektumot csak utána rajzoljuk, ami kitakarhatja a távolabbi objektumot

Rejtett vonalas ábrázolás Általában a poligon egy reprezentatív pontját használjuk Pl. közepét vagy legtávolabbi pontját Nem működik mindig

Rejtett vonalas ábrázolás Kisebb poligonokra lehet felvágni az eredeti poligont

Depth buffering Gyors és egyszerű Z-buffer algoritmus Nincs tárgyak rendezése, összehasonlítása, metszéspontok számítása Nem csak poligonokra jó Sok memóriát igényel Pixel pontos eredményt produkál Hardware-ben szokták használni

1 4 1 4 Z-buffer algoritmus Color Buffer 8 16 8 16 Depth Buffer Display

Z-buffer algoritmus Minden pixelnél két adatot tárolunk A színt A mélység, vagy távolság a nézőtől Algoritmus: if(pixel->z < depthbuffer(x,y)->z ) { depthbuffer(x,y)->z = pixel->z; colorbuffer(x,y)->color = pixel->color; }

Z-buffer algoritmus

Z-buffer algoritmus P a pont interpolálható P 0 és P 1 pontokból P b pont hasonlóan A két pontból a P pixel mélysége is interpolálható